很菜鸟的问题,请提供让"控件大小能跟着窗体变化而变化"的代码!

lesfdcp 2003-09-07 12:00:51
不要拉了窗体大小就找不到控件了!
谢谢提供,先来先得分!
...全文
29 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ybcaa 2003-09-07
  • 打赏
  • 举报
回复
如让一个文本框的大小随窗口的变化而变
Private Sub Form_Resize()
With Text1
.Top = 0
.Left = 0
.Height = Me.ScaleHeight
.Width = Me.ScaleWidth
End With
End Sub
supergoalcn 2003-09-07
  • 打赏
  • 举报
回复
以上代码是在《Visual Basic 案例教程》上抄来的吧。
不过这个模块对组合框不支持,需要自己改写的。
lihonggen0 2003-09-07
  • 打赏
  • 举报
回复
将以上代码保存为一个模块

窗体调用方法

Private Sub Form_Load()
ResizeInit Me
End Sub


Private Sub Form_Resize()
ResizeForm Me
End Sub
lihonggen0 2003-09-07
  • 打赏
  • 举报
回复
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

kmzs 2003-09-07
  • 打赏
  • 举报
回复
Private Sub Form_Resize()
With Text1
.Top = 10
.Left = 10
.Height = Me.ScaleHeight - 20
.Width = Me.ScaleWidth - 20
End With
End Sub
dengyiwolf 2003-09-07
  • 打赏
  • 举报
回复
只要将FORM的boderstayle属性设置成1就行了
战箫 2003-09-07
  • 打赏
  • 举报
回复
在窗体的form_resize()事情过程中设置就可以了。楼上有说的很清楚的。

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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