Pregunta

¿Es posible determinar qué propiedad de un control ActiveX es la propiedad predeterminada?Por ejemplo, ¿cuál es la propiedad predeterminada del control CommandButton de VB6 y cómo puedo saber si hay otros controles predeterminados?

/EDITAR: Sin tener fuente para el objeto en sí.

¿Fue útil?

Solución 3

Utilice OLE/Com Object Viewer, que se distribuye con Microsoft Visual Studio.

Vaya a bibliotecas de tipo y busque la biblioteca en la que se encuentra el control, por ejemplo, en la que se almacena CommandButton Biblioteca de objetos de Microsoft Forms 2.0.Haga clic derecho en la biblioteca y seleccione ver.Busque la coclase que representa el control y selecciónela:

alt text

Como puede verse, la interfaz predeterminada para CommandButton es ICommandButton, cuando inspecciona ICommandButton busque una propiedad que tenga un dispid de 0.El IDL para la propiedad dispid 0 de CommandButton es:

[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();

Mostrándole la propiedad predeterminada.

Otros consejos

No uso VB, pero aquí va.

encontré Usando el valor de un control, pero no es una solución programática.Si tienes acceso al código, busca

Attribute Value.VB_UserMemId = 0

usando el Bloc de notas.

Depende de cuándo quieras determinar esto.Podrías imprimir el "valor" de, por ejemplo, un control de etiqueta (que no tiene propiedad de "valor") en el depurador como:

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

Lo que te dará algo como:

El valor de cmdTest es [Falso]

Resulta que el valor predeterminado para un botón de comando es su estado (presionado o no), por lo que si coloca el código de ejemplo anterior en el evento de clic para el control, verá "Verdadero" si lo ejecuta en otro lugar. , verá "Falso".

Para otros resultados, este método al menos le mostrará el tipo de propiedad que está buscando.Podrías usar:

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

que le indican el tipo real, a saber:

El valor de cmdTest es de tipo [Booleano]

Puede utilizar varios métodos para limitar las cosas, como establecer el valor y ver qué sucede.

Tienes acceso al código, busca.

Lamentablemente no tengo acceso al código de la mayoría de los controles.Sin embargo, el enlace es útil para los controles de Microsoft, pero aún así me gustaría saberlo para otros controles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top