質問
ActiveX コントロールのどのプロパティがデフォルトのプロパティであるかを判断することはできますか?たとえば、VB6 コントロールの CommandButton のデフォルトのプロパティは何ですか、また、他のコントロールのデフォルトを確認するにはどうすればよいでしょうか。
/編集: オブジェクト自体へのソースを持たない
解決 3
Microsoft Visual Studio とともに配布される OLE/Com Object Viewer を使用します。
タイプ ライブラリに移動し、コントロールが格納されているライブラリを見つけます。たとえば、CommandButton は次のように格納されています。 Microsoft Forms 2.0 オブジェクト ライブラリ. 。ライブラリを右クリックし、表示を選択します。コントロールを表すコクラスを見つけて選択します。
ご覧のとおり、CommandButton の既定のインターフェイスは ICommandButton であり、ICommandButton を検査するときに dispid が 0 であるプロパティを探します。CommandButton の dispid 0 プロパティの IDL は次のとおりです。
[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();
デフォルトのプロパティを表示します。
他のヒント
VBは使いませんが、これで大丈夫です。
見つけました コントロールの値の使用, しかし、それはプログラムによる解決策ではありません。コードにアクセスできる場合は、次のコードを探してください。
Attribute Value.VB_UserMemId = 0
メモ帳を使用して。
これをいつ決定するかによって異なります。たとえば、ラベル コントロール (「値」プロパティを持たない) の「値」を次のようにデバッガーに出力できます。
debug.print "Value for cmdTest is ["+format(cmdTest)+"]"
これにより、次のような結果が得られます:
cmdTest の値は [False] です
結局のところ、コマンド ボタンのデフォルト値はその状態 (押されているかどうか) であるため、コントロールのクリック イベントに上記のコード例を挿入すると、他の場所で実行すると「True」と表示されます。 、「False」と表示されます。
他の結果の場合、このメソッドは少なくとも探している種類のプロパティを表示します。以下を使用できます:
debug.print "cmdTest's value is of type ["+TypeName(oObject) +"]"
これにより、実際のタイプがわかります。
cmdTest の値の型は [Boolean] です。
値を設定して何が起こるかを確認するなど、さまざまな方法を使用して対象を絞り込むことができます。
コードにアクセスできるので、探してください
残念ながら、ほとんどのコントロールのコードにアクセスできません。ただし、このリンクは Microsoft コントロールには役立ちますが、他のコントロールについても知る方法が必要です。