如图,VB6.0做这样的窗口,如何随窗口大小改变按钮的大小?

(图片内数据为VB内单位)如图,VB6.0做这样的窗口,如何随窗口大小改变按钮的大小?... (图片内数据为VB内单位)
如图,VB6.0做这样的窗口,如何随窗口大小改变按钮的大小?
展开
 我来答
fscmdl
2013-12-27 · TA获得超过106个赞
知道小有建树答主
回答量:240
采纳率:0%
帮助的人:131万
展开全部

这是我收藏的部分源代码,你试一下第一个看看是不是,因为我忘记那个是了!

一、VB控件与窗口的等比缩放实现方法:

   '原始宽度
   Private FormOldHeight      As Long
   '原始高度
    
   '在调用ResizeForm前先调用本函数
   Public Sub ResizeInit(FormName As Form)
   Dim Obj      As Control
   FormOldWidth = FormName.ScaleWidth
   FormOldHeight = FormName.ScaleHeight
   On Error Resume Next
   For Each Obj In FormName
   Obj.Tag = Obj.Left & "    " & Obj.Top & "    " & Obj.Width & "    " & Obj.Height & "    "
   Next Obj
   On Error GoTo 0
   End Sub

二、

按比例改变表单内各元件的大小

'在调用ReSizeForm前先调用ReSizeInit函数
   Public Sub ResizeForm(FormName As Form)
   Dim Pos(4)      As Double
   Dim i      As Long, TempPos        As Long, StartPos        As Long
   Dim Obj      As Control
   Dim ScaleX      As Double, ScaleY        As Double
    
   ScaleX = FormName.ScaleWidth / FormOldWidth
   '保存窗体宽度缩放比例
   ScaleY = FormName.ScaleHeight / FormOldHeight
   '保存窗体高度缩放比例
   On Error Resume Next
   For Each Obj In FormName
   StartPos = 1
   For i = 0 To 4

三、读取控件的原始位置与大小

'读取控件的原始位置与大小
   TempPos = InStr(StartPos, Obj.Tag, "    ", vbTextCompare)
   If TempPos > 0 Then
   Pos(i) = Mid(Obj.Tag, StartPos, TempPos - StartPos)
   StartPos = TempPos + 1
   Else
   Pos(i) = 0
   End If
   '根据控件的原始位置及窗体改变大小
   '的比例对控件重新定位与改变大小
   Obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
   Next i
   Next Obj
   On Error GoTo 0
   End Sub
 
 
Private Sub Form_Load()
Call ResizeInit(Me)      '在装入时必须加入
End Sub
 
Private Sub Form_Resize()
Call ResizeForm(Me)      '控件随之改变
End Sub
网海1书生
科技发烧友

2013-12-27 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26230

向TA提问 私信TA
展开全部
Private Sub Form_Resize()
Dim i As Integer, w As Single, h As Single
w = Me.ScaleWidth / 5
h = Me.ScaleHeight / 5
For i = 0 To 8
    Me.Controls("Command" & i + 1).Move (i Mod 3) * 2 * w, (i \ 3) * 2 * h, w, h
Next
End Sub

代码适用于VB6

追问

我做的是用户控件(如图),代码似乎无效(一直显示要求对象)。。要怎么修改?

追答
Private Sub UserControl_Resize()
Dim i As Integer, w As Single, h As Single
w = ScaleWidth / 5
h = ScaleHeight / 5
For i = 0 To 8
    Controls("Command" & i + 1).Move (i Mod 3) * 2 * w, (i \ 3) * 2 * h, w, h
Next
End Sub

 另外建议你把那九个Command做成控件数组,这样代码可以简化,而且运行效率高:

Private Sub UserControl_Resize()
Dim i As Integer, w As Single, h As Single
w = ScaleWidth / 5
h = ScaleHeight / 5
For i = 0 To 8
    Command1(i).Move (i Mod 3) * 2 * w, (i \ 3) * 2 * h, w, h
Next
End Sub
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式