1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| Function modif_UserForm1(uf As Object, Optional modif As Long = &H94CF0080)
'on determine le handle de la form (identifiant de la fenetre)maintenant avec findwindows +precis lors du choix de la fentre a modifier
handle = FindWindow(vbNullString, uf.Caption)
'on va memoriser le multiplicateur des dimention de l'usf par rapport a chaque controls dans leurs tags respectifs
For Each ctrl In uf.Controls '*
ctrl.Tag = uf.InsideWidth / (ctrl.Left + 0.01) & ":" & uf.InsideHeight / (ctrl.Top + 0.01) & ":" & uf.InsideWidth / ctrl.Width & ":" & uf.InsideHeight / ctrl.Height
'ici en fonction du type de control si il a la propriété font size on place l'operateur en derniere position dans le tag
If TypeName(ctrl) <> "ScrollBar" And TypeName(ctrl) <> "Image" And TypeName(ctrl) <> "SpinButton" Then ctrl.Tag = ctrl.Tag & ":" & uf.InsideWidth / ctrl.Font.Size '*
Next
'on applique les modification a la fenetre userform en une seule ligne
SWLA handle, -16, modif: SWLA handle, -20, &H0: DMB handle
End Function
Sub maForm_Resize(usf As Object)
'ici on boucle sur tout les controls
For Each Ctl In usf.Controls
Properties = Split(Ctl.Tag, ":") 'on coupe le tag de chaque control par les double point
'chaque morceau du texte du tag corespond a un operateur
'et on applique le multiplicateur au controls pour la largeur et la hauteur en une seule ligne
'left,top,largeur,hauteur,
Ctl.Move usf.InsideWidth / Properties(0), usf.InsideHeight / Properties(1), usf.InsideWidth / Properties(2), usf.InsideHeight / Properties(3)
'tout les controls qui ont le multiplicateur du font size enregistré dans leurs tags respectifs verront leur font size redimentionné en proportion
If UBound(Properties) > 3 Then Ctl.Font.Size = Round(usf.InsideWidth / Properties(4), 0)
' autrement dit au depart si le control posedait cette propriété l'operateur c'est inscrit en derniere position dans le tag
' on l'applique alors
Next
usf.Repaint
End Sub |
Partager