表單中控制項自動隨表單變化大小

來源:互聯網
上載者:User
控制項 在開發中,往往開發人員需要控制控制項大小適應視窗的大小,使得軟體在不同的解析度下也顯得比例協調.
那麼,怎麼才能讓表單中控制項自動隨表單變化大小呢?

我覺得有一種原始方法很有用,不讓表單可以最大化:比如飛天餐飲軟體.......

當然這種方法是繞道而行.開發出來的軟體肯定好看不了.
好了,讓我們來引出下面這個很有用,比較專業的Model吧.
--------------------------------------------------------------------------------
Option Explicit
Private FormOldWidth As Long
'儲存表單的原始寬度
Private FormOldHeight As Long
'儲存表單的原始高度

'在調用ResizeForm前先調用本函數
Public Sub ResizeInit(FormName As Form)
Dim Obj As Control
FormOldWidth = FormName.ScaleWidth
FormOldHeight = FormName.ScaleHeight
On Error Resume Next
For Each Obj In FormName
Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " "
Next Obj
On Error GoTo 0
End Sub

'按比例改變表單內各元件的大小,在調用ReSizeForm前先調用ReSizeInit函數
Public Sub ResizeForm(FormName As Form)
Dim Pos(4) As Double
Dim i As Long, TempPos As Long, StartPos As Long
Dim Obj As Control
Dim ScaleX As Double, ScaleY As Double

ScaleX = FormName.ScaleWidth / FormOldWidth
'儲存表單寬度縮放比例
ScaleY = FormName.ScaleHeight / FormOldHeight
'儲存表單高度縮放比例
On Error Resume Next
For Each Obj In FormName
StartPos = 1
For i = 0 To 4
'讀取控制項的原始位置與大小
TempPos = InStr(StartPos, Obj.Tag, " ", vbTextCompare)
If TempPos > 0 Then
Pos(i) = Mid(Obj.Tag, StartPos, TempPos - StartPos)
StartPos = TempPos + 1
Else
Pos(i) = 0
End If
'根據控制項的原始位置及表單改變大小的比例對控制項重新置放與改變大小
Obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
Next i
Next Obj
On Error GoTo 0
End Sub

'開發軟體時候,把這個modal裝入程式中.然後加入如下代碼:
Private Sub Form_Load()
Call ResizeInit(Me) '在程式裝入時必須加入
End Sub

Private Sub Form_Resize()
Call ResizeForm(Me) '確保表單改變時控制項隨之改變
End Sub
--------------------------------------------------------------------------------

ok,這樣你的軟體就可以表單中控制項自動隨表單變化大小!

你的軟體至少從外觀上從此變得不再那麼難看了.而且大解析度下也顯得比例協調了.




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。