Bonjour à tous,
Comme d'habitude je ne fais que passé 
Voilà en fait deux problèmes se posent dans la construction du projet Apparea et je crains ne pas être à la hauteur pour les résoudre seul. Les voici ...
1) Problème concernant l'organisation des propriétés des contrôles
Chaque contrôle dans le projet va maintenant commencé à être assez grand du point de vue des propriétés qu'il contient. J'essaie de donner à l'utilisateur les moyens de personnaliser au mieux son contrôle ActiveX et de trouver le style qui lui convient pour son application. Mais cela me pousse à créer beaucoup de propriétés. Par exemple, le contrôle Button_xp pourrait bien contenir plus de 500 propriétés ! du fait de son fonctionnement :
> Il détient 12 modes événementiels : Out, Over, Down, Up, Focus, Enabled, Toggle_Out, Toggle_Over, Toggle_Down, Toggle_Up, Toggle_Focus, Toggle_Enabled
> Pour chaque mode, l'utilisateur a la possibilité de modifier l'image sur le bouton. J'ai créé une fonction PrintPicture qui a 24 paramêtres utiles pour l'utilisateur ; donc du coup ça fait déjà 12 x 24 = 288 propriétés.
> De plus, pour chaque mode, l'utilisateur a la possibilité de modifier le texte qui est écrit sur le bouton ainsi que son apparence. J'ai de même créé une fonction PrintText qui a 20 paramêtres utiles pour l'utilisateur dont le paramêtre de type de police qui n'est pas inclut dedant ; ce qui fait 12 x 21 (avec le type de police) = 252 propriétés en plus.
> On en est déjà à plus de 540 propriétés ! Et je vous passe le Fading sur la Caption et les autres options du bouton telles que la bordure, les styles, les angles arrondis, etc.
> Voici donc la question qui se pose : Comment organiser de telles propriétés dans une, ou plusieurs pages de propriétés ?
2) Problème concernant des propriétés particulières telles que CurrentX ou CurrentY
En fait ici il s'agit de "cacher" une propriété du contrôle à l'utilisateur. Il faut que je puisse y accéder (la lire et la modifier) à partir d'un module ou du code de mon contrôle ActiveX mais que l'utilisateur ne la voit pas. C'est le cas des propriétés CurrentX et CurrentY : j'ai besoin de les lire et de la modifier pour afficher du texte, mais l'utilisateur n'en a pas besoin dans le cadre de l'utilisation du contrôle. Voici donc ce que j'ai testé :
Private Property Get CurrentX() As Single
CurrentX = UserControl.CurrentX
End Property
Private Property Let CurrentX(ByVal new_CurrentX As Single)
UserControl.CurrentX() = new_CurrentX
End Property
> Voici le début de syntaxe de ma fonction PrintText placée dans un module ainsi que l'instruction pour modifier la propriété CurrentX :
Public Function PrintText(Control As Object, Message As String, ... , XPosition as Integer, ... )
'On Error Resume Next
(...)
Control.CurrentX = XPosition
(...)
End Sub
> Aahh !, elle n'apparaît plus dans les pages de propriétés du contrôle. Mais ...
> Si je suis dans mon contrôle ActiveX et que je fait un appel vers PrintText comme ceci :
PrintText Me, "Message sur le bouton", (...) , 10, (...)
> J'obtiend une Erreur 438 : "L'objet ne gère pas cette propriété ou cette méthode" ; ce qui est NORMAL du fait de PRIVATE Property.
> Voici donc la question qui se pose : Comment puis-je lire ou modifier une propriété du contrôle sans que celle-ci soit vu par l'utilisateur dans la page de propriété ?
3) N'oubliez pas de préciser sur quel sujet vous répondez SVP
Merci d'avance
Copyrightx