Bonjour a tous,
Après quelques bidouillages, j'ai trouvé une façon de modifier l'emplacement et la taille de tous les contrôles d'un formulaire quand on le "resize".
Ca fonctionne super bien sauf que, si l'utilisateur sauvegarde le formulaire, la taille du formulaire est changée mais pas les nouvelles propriétés des contrôles
=> Si le formulaire est plus grand au moment de la sauvegarde, il y a de grands vides a droite et en bas du formulaire quand on l'ouvre a nouveau.
Par contre, si on avait diminué sa taille, on ne voit plus tous les contrôles.
Que dois-je ajouter pour sauvegarder les changements que j'ai fais sur les contrôles du formulaire?
Voici mon code (et on ne rigole pas SVP! )
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 Option Compare Database Dim FWidth As Integer Dim FInsideheight As Integer Dim InfoControles(100, 5) As Variant Dim NbControles As Integer Private Sub Form_Open(Cancel As Integer) Dim Ctrl As Control Dim prp As Property Dim i As Integer FWidth = Me.InsideWidth FInsideheight = Me.InsideHeight Erase InfoControles NbControles = 0 For Each Ctrl In Me NbControles = NbControles + 1 Next Ctrl i = 0 For Each Ctrl In Me InfoControles(i, 0) = Ctrl.Properties("Name") InfoControles(i, 1) = Ctrl.Properties("ControlType") InfoControles(i, 2) = Ctrl.Properties("Left") InfoControles(i, 3) = Ctrl.Properties("Top") InfoControles(i, 4) = Ctrl.Properties("Width") InfoControles(i, 5) = Ctrl.Properties("Height") i = i + 1 Next Ctrl End Sub Private Sub Form_Resize() Dim Ctrl As Control Dim NewFWidth As Integer Dim NewFInsideheight As Integer NewFWidth = Me.InsideWidth NewFInsideheight = Me.InsideHeight For Each Ctrl In Me For i = 0 To NbControles If InfoControles(i, 0) = Ctrl.Properties("Name") Then Ctrl.Properties("Left") = (InfoControles(i, 2) * NewFWidth / FWidth) Ctrl.Properties("Top") = (InfoControles(i, 3) * NewFInsideheight / FInsideheight) Ctrl.Properties("Width") = (InfoControles(i, 4) * NewFWidth / FWidth) Ctrl.Properties("Height") = (InfoControles(i, 5) * NewFInsideheight / FInsideheight) End If Next i Next Ctrl End Sub
Partager