2008-09-03 64 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的价值类型为[布尔]

您可以使用各种方法来缩小范围,如设置值并查看发生了什么。