求助,窗体最大化问题

时间:2023-01-20 13:23:46
我在窗体上以SSTAB控件为底板,建了两个界面,我从网上搜了一下窗体最大化时其上显示内容同步扩大的程序,结果加进去了就出现了下面的问题:
1.窗体最大化时其他控件确实也按比例扩大了,但只是一个界面扩大了,另一个界面不是什么都没有就是显示和第一个界面一样的内容,
2.标签有略微被移位和掩盖现象,求帮助。
下面是界面
 [img=http://user.qzone.qq.com/836084886/infocenter][/img]
         

10 个解决方案

#1


[img=http://hi.csdn.net/space.php?uid=117086&do=album&id=83892][/img]

#3


[img=http://hi.csdn.net/space-117086-do-album-id-83892.html][/img]

#4


各位大侠帮帮忙啊

#5


图片看不了

#6


是啊
,我的等级不够,图片传不上去啊
你加我QQ行吗,我把图传给你,谢谢,
一会一定给分。

#7


我的QQ:836084886

#8


无代码无真相

#9


本帖最后由 bcrun 于 2011-03-31 19:57:56 编辑
这个窗体最大化后的主要问题是:以SSTAB控件为依托分了两个界面,sstab(1)和sstab(2),最大化后仅有一个界面正常,另一个要么和第一个相同的内容,要么什么都没有。
这是代码,
'-------------调整窗体最大化------------------------------------------------------------
'Option Explicit
Private InitWidth As Long       ' Form 的原始大小
Private InitHeight As Long



Private Sub Form_Resize()
Dim D(4) As Double
Dim I As Long
Dim TempPos As Long
Dim StartPos As Long
Dim Ctl As Control
Dim TempVisible As Boolean
Dim ScaleX As Double
Dim ScaleY As Double
ScaleX = ScaleWidth / InitWidth
ScaleY = ScaleHeight / InitHeight
On Error Resume Next
For Each Ctl In Me
    TempVisible = Ctl.Visible
    Ctl.Visible = False
    StartPos = 1
    ' 读取 Control 的原始位置、大小、字型大小
    For I = 0 To 4
        TempPos = InStr(StartPos, Ctl.Tag, " ", vbTextCompare)
        If TempPos > 0 Then
            D(I) = Mid(Ctl.Tag, StartPos, TempPos - StartPos)
            StartPos = TempPos + 1
        Else
            D(I) = 0
        End If
        ' 根据比例设定 Control 的位置、大小、字型大小
        Ctl.Move D(0) * ScaleX, D(1) * ScaleY, D(2) * ScaleX, D(3) * ScaleY
        'Ctl.Width = D(2) * ScaleX
        'Ctl.Height = D(3) * ScaleY
        If ScaleX < ScaleY Then
            Ctl.FontSize = D(4) * ScaleX
        Else
            Ctl.FontSize = D(4) * ScaleY
        End If
    Next I
    Ctl.Visible = TempVisible
Next Ctl
On Error GoTo 0
End Sub

#10


帮帮忙吧。。。
我觉的窗体中控件没有全部按比例变化(有一个界面的丢失了)是因为For Each Ctl In Me 的Me仅仅针对SSTAB的一个界面,所以另一个界面的控件丢失了,怎么解决呢?

#1


[img=http://hi.csdn.net/space.php?uid=117086&do=album&id=83892][/img]

#2


#3


[img=http://hi.csdn.net/space-117086-do-album-id-83892.html][/img]

#4


各位大侠帮帮忙啊

#5


图片看不了

#6


是啊
,我的等级不够,图片传不上去啊
你加我QQ行吗,我把图传给你,谢谢,
一会一定给分。

#7


我的QQ:836084886

#8


无代码无真相

#9


本帖最后由 bcrun 于 2011-03-31 19:57:56 编辑
这个窗体最大化后的主要问题是:以SSTAB控件为依托分了两个界面,sstab(1)和sstab(2),最大化后仅有一个界面正常,另一个要么和第一个相同的内容,要么什么都没有。
这是代码,
'-------------调整窗体最大化------------------------------------------------------------
'Option Explicit
Private InitWidth As Long       ' Form 的原始大小
Private InitHeight As Long



Private Sub Form_Resize()
Dim D(4) As Double
Dim I As Long
Dim TempPos As Long
Dim StartPos As Long
Dim Ctl As Control
Dim TempVisible As Boolean
Dim ScaleX As Double
Dim ScaleY As Double
ScaleX = ScaleWidth / InitWidth
ScaleY = ScaleHeight / InitHeight
On Error Resume Next
For Each Ctl In Me
    TempVisible = Ctl.Visible
    Ctl.Visible = False
    StartPos = 1
    ' 读取 Control 的原始位置、大小、字型大小
    For I = 0 To 4
        TempPos = InStr(StartPos, Ctl.Tag, " ", vbTextCompare)
        If TempPos > 0 Then
            D(I) = Mid(Ctl.Tag, StartPos, TempPos - StartPos)
            StartPos = TempPos + 1
        Else
            D(I) = 0
        End If
        ' 根据比例设定 Control 的位置、大小、字型大小
        Ctl.Move D(0) * ScaleX, D(1) * ScaleY, D(2) * ScaleX, D(3) * ScaleY
        'Ctl.Width = D(2) * ScaleX
        'Ctl.Height = D(3) * ScaleY
        If ScaleX < ScaleY Then
            Ctl.FontSize = D(4) * ScaleX
        Else
            Ctl.FontSize = D(4) * ScaleY
        End If
    Next I
    Ctl.Visible = TempVisible
Next Ctl
On Error GoTo 0
End Sub

#10


帮帮忙吧。。。
我觉的窗体中控件没有全部按比例变化(有一个界面的丢失了)是因为For Each Ctl In Me 的Me仅仅针对SSTAB的一个界面,所以另一个界面的控件丢失了,怎么解决呢?