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

投稿日: 2007/03/06(Tue) 17:23
投稿者FR
Eメール
URL
タイトルRe^3: ユーザーコントロールがある場合の最大化

ダンボさんやガッさんの御意見を元に自分なりに以下のコードを記述してみました。
結果はメインフォーム上のコントロール類とSSTabは最大化されますが、SSTab上の
ユーザーコントロール類は駄目でした・・・。
よろしくお願いします。

Class1
Option Explicit

Public csControl As Control
Public csParent As Control
Public csHideSSTab As Boolean

Public csLeft As Double
Public csTop As Double
Public csWidth As Double
Public csHeight As Double
Public csFontSize As Double

メインForm
Private Clipped As Boolean
Private ctls As Collection
Private clpScaleWidth As Double
Private clpScaleHeight As Double

Form_Load
Call ClipControl

Private Function ClipControl()
    
    Dim Ctl As Control
    Dim ctlst As Resize
    
    On Error Resume Next
    
    Set ctls = New Collection
    clpScaleWidth = Me.ScaleWidth
    clpScaleHeight = Me.ScaleHeight
    
    For Each Ctl In Me.Controls
        
        Set ctlst = New Resize
        
        With ctlst
            Set .csControl = Ctl
            Set .csParent = Ctl.parent
                
            .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 Ctl As Control, CtlCln As New Collection
    Dim ratScaleWidth   As Double
    Dim ratScaleHeight  As Double
    Dim ctlst As Resize
    
         On Error Resume Next
         For Each Ctl In Controls
            If Ctl.Left < 0 Then CtlCln.Add Ctl
         Next
        
         tabView.Visible = False

        '水平、垂直方向の拡大率を決定する
        ratScaleWidth = Me.ScaleWidth / clpScaleWidth
        ratScaleHeight = Me.ScaleHeight / clpScaleHeight
        'それぞれのコントロールを拡大する
        For Each ctlst In ctls
            With ctlst
                If .csHideSSTab Then
                    .csControl.Left = .csLeft * ratScaleWidth - 75000
                Else
                    .csControl.Left = .csLeft * ratScaleWidth
                End If
                .csControl.Top = .csTop * ratScaleHeight
                .csControl.Width = .csWidth * ratScaleWidth
                .csControl.Height = .csHeight * ratScaleHeight
                .csControl.FontSize = .csFontSize * ScaleWidth                          
             End With
        Next
        
      tabView.Visible = True
End Sub


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

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

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