如何让控件随着窗体的变化改变位置!????

ldq003 2005-12-08 09:03:18
我写的管理系统在设计的时候 窗体不是最大化,在运行的时候窗体是最大化运行的,这样窗体就会有一部分是空白的. 我想让窗体中的控件在窗体最大化的时候和设计的时候一样占满整个窗体,要怎么做?

还有窗体在最大化和最小化的时候触发了什么事件?
...全文
233 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldq003 2005-12-08
  • 打赏
  • 举报
回复
非常感谢你们 封贴.
ldq003 2005-12-08
  • 打赏
  • 举报
回复
谢谢你了~~~ 我只改变位置不改变控件的比例~~~~~ 谢谢你们;了了 我再改下代码看看;
vbcrack 2005-12-08
  • 打赏
  • 举报
回复
Option Explicit
Private ObjOldWidth As Long '保存窗体的原始宽度
Private ObjOldHeight As Long '保存窗体的原始高度
Private ObjOldFont As Single '保存窗体的原始字体比

'在调用ResizeForm前先调用本函数
Public Sub ResizeInit(FormName As Form)
Dim Obj As Control

ObjOldWidth = FormName.ScaleWidth
ObjOldHeight = FormName.ScaleHeight
ObjOldFont = FormName.Font.Size / ObjOldHeight
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 / ObjOldWidth
'保存窗体宽度缩放比例
ScaleY = FormName.ScaleHeight / ObjOldHeight
'保存窗体高度缩放比例
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
Obj.Font.Size = ObjOldFont * FormName.ScaleHeight
Next i

Next Obj

On Error GoTo 0
End Sub

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

Private Sub Form_Load()
'在程序装入时必须加入
Call ResizeInit(Me)
End Sub
zq102605 2005-12-08
  • 打赏
  • 举报
回复
命令按钮的大小不变么〉?
control.Move , frmmain.ScaleHeight- control.height -200
这样相当于设定了top
left的思路是相同的
zhzhq800204 2005-12-08
  • 打赏
  • 举报
回复
在Form_Resize事件中
每一次窗体发生变化都会执行Form_Resize事件。
在设定控件大小时,控件的大小和窗体的大小建立一种比例关系就可以了
比如
text1.width=form1.width/2,这样text1的宽度就占窗体宽度的一半。
ldq003 2005-12-08
  • 打赏
  • 举报
回复
这样写不行的~~~ 这样控件占满了整个窗体其他的控件就看不到了.

我的意思是窗体中的控件在最大化的时候和设计的时候 占窗口的比例是一样的.

比如:
我的在设计的时候在窗体的最下方有个命令按钮 我在最大化的时候这个按钮应该还是在最下方.

怎么样写控件占的比例是一样的?????
ldq003 2005-12-08
  • 打赏
  • 举报
回复
control.Move 0,0

请问这个MOVE 0,0 是指定坐标还是就写0,0 就可以了!
zq102605 2005-12-08
  • 打赏
  • 举报
回复
在Form_Resize事件中
设置
control.Move 0,0,frmMain.ScaleWidth ,frmmain.ScaleHeight

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧