VB6.0窗体中有一个DataGrid数据表格,当窗体最大化时,数据表格随着窗体的尺寸而变化,并且两边各留下相同的余量。效果图:
窗体对象名称:FrmTest 数据控件名称:默认的DataGrid1 窗体属性我设置了三项,分别是: BorderStyle=1-Fixed Single,这样窗体就只有关闭按钮。 StartUpPosition=2-屏幕中心 WindowState=2-Maximized 思路:用窗体宽度-表格左边距-表格右边距就是表格的宽度,代码实现应该是: DataGrid1.Width = Me.Width - DataGrid1.Left * 2 Me代表本窗体对象。 因为左右边距一样,所以可以减去左边距的2倍。 最初设想的代码应该是: Private Sub Form_Load() DataGrid1.Left = 200 DataGrid1.Width = Me.Width - DataGrid1.Left * 2 End Sub 结果发现,并不能实现需求。窗体是最大化了,但是表格宽度却没有任何变化。 成功的代码是: Private Sub Form_Load() Me.Show DataGrid1.Left = 200 DataGrid1.Width = Me.Width - DataGrid1.Left * 2 End Sub 可看出,仅仅只差了一句Me.Show 原因分析: 归根结底,还是跟这个Form_Load事件有关,这个事件只是将窗体对象装入内存中,并没有显示,其尺寸数据仍然是最初设计时给的初始尺寸,即WindowState=2-Maximized还没有生效,只有Show以后,最大化才生效。 可以用下面代码测试一下 Private Sub Form_Load() DataGrid1.Left = 200 DataGrid1.Width = Me.Width - DataGrid1.Left * 2 MsgBox Me.Width End Sub 你会发现,显示的窗体宽度并不是全屏宽度,而是设计时给的初始宽度。 失败代码与成功代码只差一句,Me.Show,要先显示窗体,让窗体最大化生效,然后再设置数据表格的宽度,这样才是成功的。 个中详细原理,还需要细细琢磨! |
|