跳至內容

VB控件大小自適應函數的類型不符合要求!

更新時間
快连VPN:速度和安全性最佳的VPN服务
快连VPN:速度和安全性最佳的VPN服务

VB用控件自適應大小函數類型不匹配!

添加一個模塊

Option Explicit

Dim FormOldWidth As Long '窗體舊的寬度值

Dim FormOldHeight As Long '窗體舊的高度值

Public Sub ResizeInit(FormName As Form)

Dim pCtl As Control

'設置窗體舊的高度與寬度

FormOldWidth = FormName.ScaleWidth

FormOldHeight = FormName.ScaleHeight

On Error Resume Next

For Each pCtl In FormName

'設置窗體中控件的Tag值(根據空間的位置和大小來設置)

'返回或設置一個表達式,它存儲程序需要的額外數據。

'與其它屬性不同,Visual Basic 不使用 Tag 屬性的值;

'可用該屬性識別對象。

pCtl.Tag = pCtl.Left & " " & pCtl.Top & " " & pCtl.Width & " " & pCtl.Height & " "

Next pCtl

On Error GoTo 0

End Sub

Public Sub ResizeForm(FormName As Form)

Dim Pos(4) As Double

Dim i As Long, tmpPos As Long, staPos As Long

Dim pCtl As Control

Dim ScaleX As Double, ScaleY As Double

'保存窗體的寬度與高度縮放比例

ScaleX = FormName.ScaleWidth / FormOldWidth

ScaleY = FormName.ScaleHeight / FormOldHeight

On Error Resume Next

'變化窗體內的各控件

For Each pCtl In FormName

staPos = 1

For i = 0 To 4 '位置和大小

'取得控件的原始位置和大小

tmpPos = InStr(staPos, pCtl.Tag, " ", vbTextCompare)

If tmpPos > 0 Then

Pos(i) = Mid(pCtl.Tag, staPos, tmpPos - staPos)

staPos = tmpPos + 1

Else

Pos(i) = 0

End If

'根據控件的原始位置及窗體改變大小的

'比例對控件重新定位與改變大小

pCtl.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY

Next i

Next pCtl

On Error GoTo 0

End Sub

在Form中添加代碼

Private Sub Form_Load()

Call ResizeInit(Me)

End Sub

'窗體大小發生變化時,根據窗體改變大小的比例

'對窗體中各控件重新定位和改變大小。

Private Sub Form_Resize()

Call ResizeForm(Me)

End Sub

然後在窗體裏放幾個控件然後改變窗體大小試試

VB textbox控件隨窗體變化自動調整

控件自適應窗體:

Dim oldheight&, oldwidth&

Private Sub Form_Load()

oldheight = Me.Height: oldwidth = Me.Width

End Sub

Private Sub Form_Resize()

Dim cnt As Control

For Each cnt In Controls

cnt.Width = cnt.Width * Me.Width / oldwidth

cnt.Height = cnt.Height * Me.Height / oldheight

Next

oldheight = Me.Height: oldwidth = Me.Width

End Sub

以上就是VB控件大小自適應函數的類型不符合要求!的詳細內容,更多請關注本站其它相關文章!

更新時間

發表留言

請注意,留言須先通過審核才能發佈。