J'essaie de faire un substitut d'un Contrôle auxquel on ajouterait des propriétés et (c'est là le pb) un comportement prédéfinit.
Je me retrouve avec mon module de classe "CommandQuit". Dans un formulaire, je définis un CommandButton. Dans le Form_Load du formulaire, j'ai :
Et le module de classe est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private m_oCmdQuit As CommandQuit Private Sub Form_Load() Set m_oCmdQuit = New CommandQuit m_oCmdQuit.xCommandButton = cmdTest End Sub
J'aimerais que testX() soit définit dans le module de classe mais évidemment, cmdTest, alias xCmd du module, ne peut pas la voir là. Une fois les propriétés définient, je ne suis plus liée à ma variable m_oCmdQuit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Private xCmd As CommandButton Const cImgFolder As String = "\Commun\Images\" Property Let xCommandButton(cmd As CommandButton) Set xCmd = cmd Debug.Print cmd.Name & " est xCommandButton" 'Initialiser XCmd xCmd.Picture = CurrentProject.Path & cImgFolder & "x.bmp" xCmd.Height = 261 '=0.46cm xCmd.Width = 261 '=0.46cm xCmd.OnClick = "=testX()" '<-- Le problème. End Property
Idée 1 : Trouver un moyen de faire référence encore à l'instance (plus d'idée donc next).
Idée 2 : Définir testX comme une fonction non liée à une instance de la classe (une fonction "Static" pour les habitués de C# et autres langages). Toujours pas résolu... Est-ce seulement possible avec VBA?
Idée 3 : Définir testX dans un module standard. Ça marche. C'est presqu'invisible quand on utilise la classe (ok cool)... mais je me demande encore si y'a moyen de faire mieux, surtout que ça limite pas mal ce que je peux faire par la suite.
Vous avez d'autres pistes? :-)
Tout ça est un p'tit exercice pour le moment : l'idée finale est de créer un module de classe "Barre de navigation d'enregistrement" où y'aurait plus qu'à placer 6 contrôles (4 boutons, 1 textbox et 1 label pour le "sur xxx") sur un form et les liés à la classe pour qu'ils fassent leur travail comme des grands.
Merci!
Caroline
Partager