-1
我創建了一個功能完整的程序,並且已將它發送給某些客戶端。他們中的一些人真的很老,電腦的分辨率很低,他們無法輕鬆訪問它,因爲表單和控件的尺寸都很大。有沒有一種簡單的方法讓我能夠根據分辨率自動調整窗體和控件的大小?根據每臺計算機的分辨率自動調整窗體/控件的大小
正如我在標題中所說的,這是針對Visual Basic 6.0的。感謝大家提前。
我創建了一個功能完整的程序,並且已將它發送給某些客戶端。他們中的一些人真的很老,電腦的分辨率很低,他們無法輕鬆訪問它,因爲表單和控件的尺寸都很大。有沒有一種簡單的方法讓我能夠根據分辨率自動調整窗體和控件的大小?根據每臺計算機的分辨率自動調整窗體/控件的大小
正如我在標題中所說的,這是針對Visual Basic 6.0的。感謝大家提前。
您可以在窗體上存儲每個控件的大小和位置,並根據需要移動或調整控件的大小。在下面的代碼中,我使用「TabIndex」屬性作爲每個控件的唯一ID(如果這是正確的做法,我不記得在舊的VB6內存中)。 我在Form_Load事件中存儲了表單的大小,以及每個控件的大小和位置。
Private lWidth As Long
Private lHeight As Long
Private Enum ePROPERTY
ep_Top = 0
ep_Left = 1
ep_Width = 2
ep_Height = 3
End Enum
Private aControlSize() As Long
Private Sub Form_Load()
Dim ctlTmp As Control
lWidth = Me.Width
lHeight = Me.Height
ReDim aControlSize(3, Form1.Controls.Count)
For Each ctlTmp In Form1.Controls
aControlSize(ctlTmp.TabIndex, ep_Top) = ctlTmp.Top
aControlSize(ctlTmp.TabIndex, ep_Left) = ctlTmp.Left
aControlSize(ctlTmp.TabIndex, ep_Width) = ctlTmp.Width
aControlSize(ctlTmp.TabIndex, ep_Height) = ctlTmp.Height
Next
End Sub
然後每次調整窗體大小(Form_resize事件)時,您都必須移動或調整每個控件的大小。 其中一些需要固定在右邊或底部(或兩者)。有些需要調整大小並移動。其他人不需要任何東西。
Private Sub Form_Resize()
Dim ctlTmp As Control
For Each ctlTmp In Form1.Controls
Select Case LCase$(ctlTmp.Name)
Case "text1"
' Text1 is anchored to the left and right borders of the form :
ctlTmp.Width = Me.Width - (lWidth - aControlSize(ctlTmp.TabIndex, ep_Width))
Case "command1"
' Command1 is anchored to the right border of the form :
ctlTmp.Left = aControlSize(ctlTmp.TabIndex, ep_Left) - (lWidth - Me.Width)
Case "check1"
' check1 is anchored to the bottom border of the form :
ctlTmp.Top = aControlSize(ctlTmp.TabIndex, ep_Top) - (lHeight - Me.Height)
End Select
Next
End Sub
形式加載:
表格的大小調整:
請注意,我的代碼主要是臻完美...
有可能是一個更多elega nt解決方案,通過重載每個Control並添加像dotnet中現有的屬性/方法。
您使用的是.NET嗎? – ale10ander
不。不幸的是,我的一些客戶沒有Net Framework,他們無法下載(船舶)。我的程序需要獨立於.NET,這就是爲什麼我使用VB 6.0 –
不幸的是,我只知道.NET解決方案,您可以在其中獲取視口大小和屏幕大小並進行相應調整。你可以在VB中做類似的事情嗎? – ale10ander