2008-09-03 67 views
1

是否可以確定ActiveX控件的哪個屬性是默認屬性?例如,什麼是VB6控件CommandButton的默認屬性,以及如何找出其他控件的默認值!ActiveX控件默認屬性發現

/編輯:而不必源對象本身

回答

1

使用與Microsoft Visual Studio分發的OLE/Com對象查看器。

轉到類型庫,並找到控制收納在庫,例如命令按鈕存儲在Microsoft窗體2.0對象庫。右鍵單擊庫並選擇視圖。找到組件類代表控制並選擇它:

alt text

可以看出,對於命令按鈕的默認界面是ICommandButton,當你檢查ICommandButton查找具有0的IDL的DISPID屬性CommandButton的dispid 0屬性爲:

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

向您顯示默認屬性。

1

我不使用VB,但在這裏不言而喻。

我找到Using the Value of a Control,但它不是一個程序化的解決方案。 如果你有機會獲得代碼,使用記事本找

Attribute Value.VB_UserMemId = 0 

1

您可以訪問代碼,查找

偏偏我沒有訪問代碼爲大多數控件。但是,該鏈接對於Microsoft控件很有用,但我仍然想知道其他控件的方法。

1

這取決於你何時想確定這一點。你可以打印的,也就是說,一個標籤控件「值」(沒有「值」屬性)像調試器:

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

,這將給你是這樣的:

價值cmdTest是[False]

事實證明,命令按鈕的默認值是它的狀態(按或不),所以如果您將上面的代碼示例放在控件的click事件中,您將看到「真」,如果你在其他地方執行它,你會看到「假」。

對於其他結果,此方法至少會顯示您正在查找的屬性類型。你可以使用:

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

,告訴你實際的類型,即:

cmdTest的價值類型爲[布爾]

您可以使用各種方法來縮小範圍,如設置值並查看發生了什麼。