窗体中控件自动随窗体变化大小

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

在开发中,往往开发人员需要控制控件大小适应窗口的大小,使得软件在不同的分辨率下也显得比例协调.

那么,怎么才能让窗体中控件自动随窗体变化大小呢?

我觉得有一种原始方法很有用,不让窗体可以最大化:比如飞天餐饮软件.......

当然这种方法是绕道而行.开发出来的软件肯定好看不了.

好了,让我们来引出下面这个很有用,比较专业的Model吧.

--------------------------------------------------------------------------------

Option Explicit

Private FormOldWidth As Long

'保存窗体的原始宽度

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

'开发软件时候,把这个modal装入程序中.然后加入如下代码:

Private Sub Form_Load()

Call ResizeInit(Me) '在程序装入时必须加入

End Sub

Private Sub Form_Resize()

Call ResizeForm(Me) '确保窗体改变时控件随之改变

End Sub

--------------------------------------------------------------------------------

ok,这样你的软件就可以窗体中控件自动随窗体变化大小!

你的软件至少从外观上从此变得不再那么难看了.而且大分辨率下也显得比例协调了.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航