投稿日 | : 2007/03/03(Sat) 18:52 |
投稿者 | : まり |
Eメール | : |
URL | : |
タイトル | : Re^4: スクリーンサイズに合わせた可変サイズ画面の表示 |
> > ご返信ありがとうございます。
> > 具体的には、フォーム内に貼られているボタン、ラベル、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.実行してフォームをリサイズしてください。
> 気持ち悪いほど拡大縮小されるはずです。
ありがとうございます。
上記の通りにやってみました。
ほんとに、気持ち悪いほど拡大縮小されてびっくりです。
色んなコントロールを貼ってやってみてます。
ほんとに感謝いたします。