Domanda

È possibile determinare quale proprietà di un controllo ActiveX è la proprietà predefinita?Ad esempio, qual è la proprietà predefinita del controllo CommandButton VB6 e come potrei scoprire eventuali altri controlli predefiniti!

/MODIFICARE: Senza avere origine per l'oggetto stesso

È stato utile?

Soluzione 3

Utilizzare OLE/Com Object Viewer, distribuito con Microsoft Visual Studio.

Vai alle librerie dei tipi e trova la libreria in cui è ospitato il controllo, ad esempio in cui è archiviato CommandButton Libreria di oggetti Microsoft Forms 2.0.Fare clic con il tasto destro sulla libreria e selezionare Visualizza.Trova la coclasse che rappresenta il controllo e selezionala:

alt text

Come si può vedere, l'interfaccia predefinita per CommandButton è ICommandButton, quando controlli ICommandButton cerca una proprietà che abbia un dispid pari a 0.L'IDL per la proprietà dispid 0 di CommandButton è:

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

Mostrandoti la proprietà predefinita.

Altri suggerimenti

Non uso VB, ma eccolo qui.

ho trovato Utilizzo del valore di un controllo, ma non è una soluzione programmatica.Se hai accesso al codice, cerca

Attribute Value.VB_UserMemId = 0

utilizzando il Blocco note.

Dipende da quando vuoi determinarlo.Potresti stampare il "valore", ad esempio, di un controllo etichetta (che non ha la proprietà "valore") nel debugger come:

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

Che ti darà qualcosa come:

Il valore per cmdTest è [False]

A quanto pare, il valore predefinito per un pulsante di comando è il suo stato (premuto o meno), quindi se inserisci l'esempio di codice sopra nell'evento click per il controllo, vedrai "True", se lo esegui da qualche altra parte , vedrai "Falso".

Per altri risultati, questo metodo ti mostrerà almeno il tipo di proprietà che stai cercando.Potresti usare:

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

che ti dicono il tipo reale, vale a dire:

Il valore di cmdTest è di tipo [Booleano]

Potresti utilizzare vari metodi per restringere il campo, ad esempio impostare il valore e vedere cosa succede.

hai accesso al codice, cerca

Sfortunatamente non ho accesso al codice per la maggior parte dei controlli.Tuttavia il collegamento è utile per i controlli Microsoft, ma vorrei comunque avere un modo per saperlo per altri controlli.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top