- 日時: 2009/12/26 17:00
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[フォーム][コントロール共通][応用コード] * * キーワード:Form_Resize,スクリーンサイズ,画面サイズ,可変表示,コントロールのサイズ* *********************************************************************************** 記事No :No.8546 投稿時間:2007/03/03(Sat) 13:11 元質問者:まり タイトル:スクリーンサイズに合わせた可変サイズ画面の表示
複数の異なる動作マシンのスクリーンサイズに合わせてウインドウサイズを可変表示し、 そのフォーム内のオブジェクトのサイズ、表示位置なども全て連動して、 可変表示させたいのですが、どのようにすれば良いのでしょうか?
----------------------------------------------------------------------------------- 記事No : No.8550 投稿日 : 2007/03/03(Sat) 16:55 回答者 : ガッ ----------------------------------------------------------------------------------- 詳しくは元のスレッドをご覧下さい。--- by 花ちゃん --- http://hanatyan.sakura.ne.jp/logbbs1/wforum.cgi?mode=allread&no=8546&page=270 -----------------------------------------------------------------------------------
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.実行してフォームをリサイズしてください。 気持ち悪いほど拡大縮小されるはずです。
上記実行結果の画像 (クリックすると元のサイズでご覧になれます。)
標準のサイズ フォームのサイズを小さくした場合 フォームのサイズを大きくした場合
|