| 導購 | 订阅 | 在线投稿
分享
 
 
 

vb窗體中控件自動隨窗體變化大小(源碼)

來源:互聯網網民  2007-02-02 20:08:58  評論

源代碼下載:http://blog.blogchina.com/upload/2004-12-07/20041207155830520878.rar

在開發中,往往開發人員需要控制控件大小適應窗口的大小,使得軟件在不同的分辨率下也顯得比例協調.

那麽,怎麽才能讓窗體中控件自動隨窗體變化大小呢?

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

當然這種方法是繞道而行.開發出來的軟件肯定好看不了.

好了,讓我們來引出下面這個很有用,比較專業的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,這樣你的軟件就可以窗體中控件自動隨窗體變化大小!

你的軟件至少從外觀上從此變得不再那麽難看了.而且大分辨率下也顯得比例協調了.

 
特别声明:以上内容(如有图片或视频亦包括在内)为网络用户发布,本站仅提供信息存储服务。
 
源代碼下載:[url=http://blog.blogchina.com/upload/2004-12-07/20041207155830520878.rar]http://blog.blogchina.com/upload/2004-12-07/20041207155830520878.rar[/url] 在開發中,往往開發人員需要控制控件大小適應窗口的大小,使得軟件在不同的分辨率下也顯得比例協調. 那麽,怎麽才能讓窗體中控件自動隨窗體變化大小呢? 我覺得有一種原始方法很有用,不讓窗體可以最大化:比如飛天餐飲軟件....... 當然這種方法是繞道而行.開發出來的軟件肯定好看不了. 好了,讓我們來引出下面這個很有用,比較專業的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,這樣你的軟件就可以窗體中控件自動隨窗體變化大小! 你的軟件至少從外觀上從此變得不再那麽難看了.而且大分辨率下也顯得比例協調了.
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有