找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5424|回復(fù): 8
收起左側(cè)

VB:所有控件自適應(yīng)窗口大小 .

[復(fù)制鏈接]
ID:127229 發(fā)表于 2016-6-19 16:29 | 顯示全部樓層 |閱讀模式
Option Explicit

Private FormOldWidth As Long
'保存窗體的原始寬度
Private FormOldHeight As Long

'保存窗體的原始高度
'
在調(diào)用ResizeForm前先調(diào)用本函數(shù)
Private 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

'按比例改變表單內(nèi)各元件的大小,在調(diào)用ReSizeForm前先調(diào)用ReSizeInit函數(shù)
Private 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
            
            '根據(jù)控件的原始位置及窗體改變大小的比例對控件重新定位與改變大小
            Obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
        Next i
        
    Next Obj
   
On Error GoTo 0

End Sub

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

Private Sub Form_Resize()
    Call ResizeForm(Me) '確保窗體改變時控件隨之改變
End Sub

回復(fù)

使用道具 舉報

ID:200118 發(fā)表于 2017-5-18 19:51 | 顯示全部樓層
很好,學(xué)習(xí)
回復(fù)

使用道具 舉報

ID:241242 發(fā)表于 2017-11-16 16:47 | 顯示全部樓層
非常棒
回復(fù)

使用道具 舉報

ID:241242 發(fā)表于 2017-12-8 09:09 | 顯示全部樓層
太好了,親測好用
回復(fù)

使用道具 舉報

ID:64765 發(fā)表于 2019-3-16 14:10 | 顯示全部樓層
謝謝分享。
回復(fù)

使用道具 舉報

ID:681272 發(fā)表于 2020-1-10 05:19 | 顯示全部樓層
謝謝分享。
回復(fù)

使用道具 舉報

ID:702600 發(fā)表于 2020-3-25 09:51 | 顯示全部樓層
謝謝分享,剛好需要。
回復(fù)

使用道具 舉報

ID:64765 發(fā)表于 2020-3-28 14:43 | 顯示全部樓層
好資料,學(xué)習(xí)了,謝謝分享。以前搞過VB,再學(xué)習(xí)一下,很好。
回復(fù)

使用道具 舉報

ID:298008 發(fā)表于 2020-3-29 18:38 | 顯示全部樓層
謝謝樓主分享�。�!
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表