VB控件窗口自适应

用VB写了一个户籍管理系统,里边用到了Datagrid控件,但窗体最大化后,控件大小不随之改变,这代码应该怎么写,写在哪里,请详细一点,我是新手,谢谢... 用VB写了一个户籍管理系统,里边用到了Datagrid控件,但窗体最大化后,控件大小不随之改变,这代码应该怎么写,写在哪里,请详细一点,我是新手,谢谢 展开
 我来答
zgwxm
2010-08-05 · TA获得超过2.1万个赞
知道大有可为答主
回答量:3567
采纳率:87%
帮助的人:2631万
展开全部
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

Private Sub Form_Load()
Call ResizeInit(Me) '在装入时必须加入
End Sub

Private Sub Form_Resize()
Call ResizeForm(Me) '控件随之改变
End Sub
请参阅我的博客:http://hi.baidu.com/zgmg/blog/item/1e62ba1681bb895df3de32a3.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
远风的梦想家
2010-08-05 · TA获得超过2550个赞
知道大有可为答主
回答量:1389
采纳率:0%
帮助的人:0
展开全部
Private Sub Form_Resize()
DBGrid1.Width = (Me.Width - DBGrid1.Left * 2) / 2
DBGrid1.Height = (Me.Height - DBGrid1.Top * 2) / 2
End Sub
'不拿尘明白的百度消携禅HI我隐困
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式