分享

在VB6.0中根据窗体宽度设置数据表格的宽度

 思念寒风 2020-09-04
  • 需求

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,要先显示窗体,让窗体最大化生效,然后再设置数据表格的宽度,这样才是成功的。

个中详细原理,还需要细细琢磨!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多