Question

Est-il possible de déterminer quelle propriété d’un contrôle ActiveX est la propriété par défaut ?Par exemple, quelle est la propriété par défaut du contrôle VB6 CommandButton et comment puis-je découvrir les autres contrôles par défaut !

/MODIFIER: Sans avoir la source de l'objet lui-même

Était-ce utile?

La solution 3

Utilisez OLE/Com Object Viewer, distribué avec Microsoft Visual Studio.

Accédez aux bibliothèques de types et recherchez la bibliothèque dans laquelle le contrôle est hébergé, par exemple CommandButton est stocké dans Bibliothèque d'objets Microsoft Forms 2.0.Cliquez avec le bouton droit sur la bibliothèque et sélectionnez la vue.Recherchez la coclasse représentant le contrôle et sélectionnez-la :

alt text

Comme on peut le voir, l'interface par défaut de CommandButton est ICommandButton, lorsque vous inspectez ICommandButton, recherchez une propriété qui a un dispid de 0.L'IDL de la propriété dispid 0 de CommandButton est :

[id(00000000), propput, bindable, displaybind, hidden, helpcontext(0x001e8d04)]
void Value([in] VARIANT_BOOL rhs);
[id(00000000), propget, bindable, displaybind, hidden, helpcontext(0x001e8d04)]
VARIANT_BOOL Value();

Vous montrant la propriété par défaut.

Autres conseils

Je n'utilise pas VB, mais voilà.

j'ai trouvé Utiliser la valeur d'un contrôle, mais ce n'est pas une solution programmatique.Si vous avez accès au code, recherchez

Attribute Value.VB_UserMemId = 0

à l'aide du Bloc-notes.

Cela dépend du moment où vous souhaitez le déterminer.Vous pouvez imprimer la "valeur", par exemple, d'un contrôle d'étiquette (qui n'a pas de propriété "valeur") sur le débogueur comme :

debug.print "Value for cmdTest is ["+format(cmdTest)+"]"

Ce qui vous donnera quelque chose comme :

La valeur de cmdTest est [False]

Il s'avère que la valeur par défaut d'un bouton de commande est son état (appuyé ou non), donc si vous mettez l'exemple de code ci-dessus dans l'événement click du contrôle, vous verrez "True", si vous l'exécutez ailleurs. , vous verrez "Faux".

Pour d'autres résultats, cette méthode vous montrera au moins le type de propriété que vous recherchez.Vous pourriez utiliser :

debug.print "cmdTest's value is of type ["+TypeName(oObject) +"]"

qui vous indique le type réel, à savoir :

La valeur de cmdTest est de type [Boolean]

Vous pouvez utiliser diverses méthodes pour affiner les choses, comme définir la valeur et voir ce qui se passe.

vous avez accès au code, cherchez

Malheureusement, je n'ai pas accès au code de la plupart des contrôles.Cependant, le lien est utile pour les contrôles Microsoft, mais j'aimerais quand même savoir comment connaître les autres contrôles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top