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ù)表格的寬度,這樣才是成功的。 個中詳細原理,還需要細細琢磨! |
|
|