Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : PROPERTIES ERROR : Comment gérer un grand nombre de propriétés ? [ Windows / ActiveX / COM ] (copyrightx)

lundi 12 mars 2007 à 14:03:26 | PROPERTIES ERROR : Comment gérer un grand nombre de propriétés ?

copyrightx

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


lundi 12 mars 2007 à 15:48:31 | Re : PROPERTIES ERROR : Comment gérer un grand nombre de propriétés ?

Renfield

Administrateur CodeS-SourceS


pour le point n°2, faut modifier les attributs de ta propriété.
Faisable depuis l'explorateur d'objet (F2)
tu pourras dire que cette propriété est masquée (mets la en Publique tout de même) ^^


pour le point 1, tu pourrais faire un "tableau" :

MonControl.Text([Type : Over]) = "Button1"
Set MonControl.Picture([Type : Over]) = LoadPicture(...)
By Renfield
avec ce genre de déclaration :

Public Enum PropertiesConstants
    [Type : Over]
    [Type : Out]
    ...
End Enum

Private mxsText(21) As String

Public Property Get Text(ByVal veType As PropertiesConstants) As String
   Text = mxsText(veType)
End Property

Public Property Let Text(ByVal veType As PropertiesConstants, ByRef Value As String)
   mxsText(veType) = Value
End Property
By Renfield

NB. Evites de poser plusieurs questions dans la même topic...

Renfield
Admin CodeS-SourceS- MVP Visual Basic

lundi 12 mars 2007 à 19:08:31 | Re : PROPERTIES ERROR : Comment gérer un grand nombre de propriétés ?

copyrightx

Salut Renfield,

Désolé pour les deux sujets dans le même topic mais en fait ça faisait partit du même sujet.

Pour ce qui est des tableaux j'y est réfléchis mais je pense que cette solution va être très longue à mettre en place. Une BDD peut-être serait adaptée mais pour un contrôle ActiveX "ça le fait pas trop".

Dites moi ce que vous en pensez ...

Merci,
Copyrightx



Cette discussion est classé dans : contrôle, utilisateur, propriétés, currentx, toggle


Répondre à ce message

Sujets en rapport avec ce message

Boîte de dialogue Propriétés du contrôle ADODC [ par Anne ] Je n'arrive pas à afficher cette boîte de dialogue à partir du code de mon application contrôle utilisateur [ par rodrigos ] Est-ce que quelq'un connait un tutorial sur les contrôles utilisateurs?j'ai beau chercher je n'arive pas à en trouver. Modifier les propriétés par défaut d'un contrôle [ par GarnetDiAlexandros ] SalutJe voudrais modifier les propriétés par défauts des contrôles. Je m'explique avec un exemple : quand j'ajoute un label sur ma feuille, celui-ci n Saisie de chiffres par l'utilisateur [ par smithfr2000 ] Question toute bête d'un débutant en VB.NET ( et VB tout court).Je suis en train de construire une petite application qui doit effectuer un calcul à p Extraction données sous forme de "tableau" [ par Patrik ] Salut,Résultat : Afficher dans un "tableau" des informations extraites d'une base de données.Contraintes : - Nombre de lignes indéfini (non connu par Controle utilisateur acceder au propriétés [ par Nektanebos ] Voia je veux creer une controle utilisateur qui s'agrandira sur les même dimension que la feuille où sera placé le controle mais comment j'accede au p propriétés statiques [ par Saros ] Dans le contexte d'un contrôle utilisateur, à savoir une boîte de texte, j'aimerai pouvoir fixer une couleur d'arrière-plan et de texte, de type OLE_C Création d'OCX ?? [ par guilleto ] Bonjour à tous !Je viens de consulter le tutoriel pour la création d'OCX et il me reste quelques questions !Lorsque je crée un Contrôle et que je l'in Contrôle Utilisateur: lui donner une image [ par mythic_kruger ] Salut à tous,Après avoir créé un contrôle utilisateur, et fermé sa fenêtre de dévelopement, le contrôle apparait dans la boite à outils. Normal. Le hi Permettre à l'utilisateur de supprimer un contrôle [ par mailys6 ] Bonjour, Voilà dans mon projet, l'utilisateur ajoute des label en appuyant sur un bouton. J'aimerai qu'il puisse supprimer ses labels en les sélection


Nos sponsors

Sondage...

CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.