投稿日 | : 2007/03/03(Sat) 16:55 |
投稿者 | : ガッ |
Eメール | : |
URL | : |
タイトル | : Re^3: スクリーンサイズに合わせた可変サイズ画面の表示 |
> ご返信ありがとうございます。
> 具体的には、フォーム内に貼られているボタン、ラベル、SPREAD フォントサイズなど、様々な
> コントロールのプロパティなどを座標、サイズなどを操作するしか方法がないのでしょうか?
> ということです。
> どれくらい大変なのかも含めてご教授していただけないでしょうか?
> よろしくお願い致します。
様々なコントロールの様々なメンバを操作しなければならないので、結果としてその実装が適当だと思います。
もしかしたらネットにサンプルや便利なコントロールが落ちている(売っている)"かも"しれませんが、
すみませんが私には見当がつきません。
追伸といっては何ですが、
操作するコントロールと操作するコントロールのメンバがある程度定まっているならば
VB6には幸いオブジェクトの多様な解釈ができるようになっていますので、
意外と簡単に何とかなるかもしれません。
1.新しいプロジェクトを作り、Class1とForm1を用意します。
2.Class1には以下のコードを書き入れます
'-------Class1
Option Explicit
Public csControl As Control
Public csLeft As Double
Public csTop As Double
Public csWidth As Double
Public csHeight As Double
Public csFontSize As Double
3.Form1には適当にツールボックスからコントロールを2、3個貼り付けておきます。
4.最後にForm1に以下のコードを書き入れます。
'-------Form1
Option Explicit
Private Clipped As Boolean
Private ctls As Collection
Private clpScaleWidth As Double
Private clpScaleHeight As Double
Private Sub Form_Load()
Call ClipControl
End Sub
Private Function ClipControl()
'コントロールの現在の状態をクリップする
Dim ctl As Control
Dim ctlst As Class1
On Error Resume Next
Set ctls = New Collection
clpScaleWidth = Me.ScaleWidth
clpScaleHeight = Me.ScaleHeight
For Each ctl In Me.Controls
Set ctlst = New Class1
With ctlst
Set .csControl = ctl
.csLeft = ctl.Left
.csTop = ctl.Top
.csWidth = ctl.Width
.csHeight = ctl.Height
.csFontSize = ctl.FontSize
End With
Call ctls.Add(ctlst)
Next
Clipped = True
End Function
Private Sub Form_Resize()
'クリップしたコントロールをリサイズする
Dim ctlst As Class1
Dim ratScaleWidth As Double
Dim ratScaleHeight As Double
If Clipped Then
On Error Resume Next
'水平、垂直方向の拡大率を決定する
ratScaleWidth = Me.ScaleWidth / clpScaleWidth
ratScaleHeight = Me.ScaleHeight / clpScaleHeight
'それぞれのコントロールを拡大する
For Each ctlst In ctls
With ctlst
.csControl.Top = .csTop * ratScaleHeight
.csControl.Left = .csLeft * ratScaleWidth
.csControl.Width = .csWidth * ratScaleWidth
.csControl.Height = .csHeight * ratScaleHeight
.csControl.FontSize = .csFontSize * ratScaleWidth 'フォントサイズの拡大幅は適当です
End With
Next
End If
End Sub
5.実行してフォームをリサイズしてください。
気持ち悪いほど拡大縮小されるはずです。