VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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.実行してフォームをリサイズしてください。
>   気持ち悪いほど拡大縮小されるはずです。

ありがとうございます。
上記の通りにやってみました。
ほんとに、気持ち悪いほど拡大縮小されてびっくりです。
色んなコントロールを貼ってやってみてます。
ほんとに感謝いたします。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -