为什么某些控件在进行“使程序界面随显示器分辨率大小变化”的程序执行时,位置并没有改变?
newyc 2003-10-15 12:27:33 这些控件比如有ComboBox、line等,是不是某些属性我设置的不对的原因,百思不得其解!
下面是我用的两个函数
在form_load中调用函数ResizeInit
在form_resize中调用函数ResizeForm
'模块内容开始
public FormOldWidth as long
public FormOldHeight as long
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
End Sub
public Sub ResizeForm(FormName as form) '当窗体大小发生变化时,各控件尺寸及位置作相应变化
Dim Pos '控件原先尺寸、位置
Dim I As Long '计数器
Dim Obj As Control '遍历窗体内控件
Dim ScaleX As Double, ScaleY As Double '缩放比例
ScaleX = Me.ScaleWidth / FormOldWidth
ScaleY = Me.ScaleHeight / FormOldHeight
On Error Resume Next
For Each Obj In Me
Pos = Split(Obj.Tag, " ", , vbTextCompare)
Obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
Next Obj
End Sub