Svakako će vam za bilo koju komercijalnu aplikaciju trebati mogućnost automatske izmene veličine kontrola na nekoj formi (prozoru). Za ove potrebe na tržištu postoji veći broj komercijalnih gotovih kontrola (koje se naravno plaćaju). Ali sa programskim kodom koji ćemo vam predstaviti besplatno ćete moći da implementirate ovu mogućnost u vaše programe. Programski kod se sastoji iz dva dela, prvi je vezan za događaj „Form_Load“, a drugi za događaj promene veličine „Form_Resize“.
Programski kod vezan za događaj „Form_Load“ pokrenuće se prvi put kada data forma bude učitana. Programski kod se upotrebljava za sve kontrole, s tim što se individualni podaci o dimenzijama čuvaju u osobini „Tag“ svake kontrole. Takođe, uz pomoć dve varijable čuvaju se podaci o visini i širini celokupne glavne forme. Drugi deo programskog koda, onaj vezan za događaj „Form_Resize“, aktivira se svaki put kada se izvši promena veličine forme. Ovaj deo koda je vezan za svaku kontrolu na formi i vrši njihovo redimenzionisanje, u zavisnosti od novih dimenzija same forme. Osim same promene veličina kontrola, možete dodati i mogućnost eventualne promene veličine fonta u kontrolama. Biće dovoljno da sledeći programski kod dodate svakoj vašoj formi u programu:
Private Sub Form_Load()Dim Ctl As Control
lngFormWidth = ScaleWidth
lngFormHeight = ScaleHeightOn Error Resume Next
For Each Ctl In Me
Ctl.Tag = Ctl.Left & " " & Ctl.Top & " " & _
Ctl.Width & " " & Ctl.Height & " "
Ctl.Tag = Ctl.Tag & Ctl.FontSize & " "
Next CtlOn Error GoTo 0
End Sub
Private Sub Form_Resize()
Dim D(4) As Double
Dim i As LongDim TempPoz As Long
Dim StartPoz As LongDim Ctl As Control
Dim TempVisible As BooleanDim ScaleX As Double
Dim ScaleY As DoubleScaleX = ScaleWidth / lngFormWidth
ScaleY = ScaleHeight / lngFormHeightOn Error Resume Next
For Each Ctl In Me
TempVisible = Ctl.Visible
Ctl.Visible = False
StartPoz = 1For i = 0 To 4
TempPoz = InStr(StartPoz, Ctl.Tag, " ", _
vbTextCompare)If TempPoz > 0 Then
D(i) = Mid(Ctl.Tag, StartPoz, _
TempPoz – StartPoz)
StartPoz = TempPoz + 1
Else
D(i) = 0
End IfCtl.Move D(0) * ScaleX, D(1) * ScaleY, _
D(2) * ScaleX, D(3) * ScaleY
Ctl.Width = D(2) * ScaleX
Ctl.Height = D(3) * ScaleY‘Change font size
If ScaleX < ScaleY Then
Ctl.FontSize = D(4) * ScaleX
Else
Ctl.FontSize = D(4) * ScaleY
End IfNext i
Ctl.Visible = TempVisible
Next Ctl
On Error GoTo 0
End Sub
Pratite Krstaricu na www.krstarica.com