小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

在VB6.0中根據(jù)窗體寬度設(shè)置數(shù)據(jù)表格的寬度

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

VB6.0窗體中有一個DataGrid數(shù)據(jù)表格,當窗體最大化時,數(shù)據(jù)表格隨著窗體的尺寸而變化,并且兩邊各留下相同的余量。效果圖:

  • 嘗試過程

窗體對象名稱:FrmTest

數(shù)據(jù)控件名稱:默認的DataGrid1


窗體屬性我設(shè)置了三項,分別是:

BorderStyle=1-Fixed Single,這樣窗體就只有關(guān)閉按鈕。

StartUpPosition=2-屏幕中心

WindowState=2-Maximized


思路:用窗體寬度-表格左邊距-表格右邊距就是表格的寬度,代碼實現(xiàn)應(yīng)該是:

DataGrid1.Width = Me.Width - DataGrid1.Left * 2

Me代表本窗體對象。

因為左右邊距一樣,所以可以減去左邊距的2倍。


最初設(shè)想的代碼應(yīng)該是:

Private Sub Form_Load()

    DataGrid1.Left = 200

    DataGrid1.Width = Me.Width - DataGrid1.Left * 2

End Sub

結(jié)果發(fā)現(xiàn),并不能實現(xiàn)需求。窗體是最大化了,但是表格寬度卻沒有任何變化。


成功的代碼是:

Private Sub Form_Load()

    Me.Show

    DataGrid1.Left = 200

    DataGrid1.Width = Me.Width - DataGrid1.Left * 2

End Sub

可看出,僅僅只差了一句Me.Show


原因分析:

歸根結(jié)底,還是跟這個Form_Load事件有關(guān),這個事件只是將窗體對象裝入內(nèi)存中,并沒有顯示,其尺寸數(shù)據(jù)仍然是最初設(shè)計時給的初始尺寸,即WindowState=2-Maximized還沒有生效,只有Show以后,最大化才生效。

可以用下面代碼測試一下

Private Sub Form_Load()

    DataGrid1.Left = 200

    DataGrid1.Width = Me.Width - DataGrid1.Left * 2

    MsgBox Me.Width

End Sub

你會發(fā)現(xiàn),顯示的窗體寬度并不是全屏寬度,而是設(shè)計時給的初始寬度。


失敗代碼與成功代碼只差一句,Me.Show,要先顯示窗體,讓窗體最大化生效,然后再設(shè)置數(shù)據(jù)表格的寬度,這樣才是成功的。

個中詳細原理,還需要細細琢磨!

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多