ActiveX控件默认属性发现

时间:2008-09-03 11:40:16

标签: vb6 activex

是否可以确定ActiveX控件的哪个属性是默认属性?例如,VB6控件CommandButton的默认属性是什么?我如何找到任何其他控件默认值!

/ EDIT:没有对象本身的来源

4 个答案:

答案 0 :(得分:1)

我不使用VB,但这里就是。

我找到了Using the Value of a Control,但这不是一个程序化的解决方案。 如果您有权访问该代码,请查找

Attribute Value.VB_UserMemId = 0

使用记事本。

答案 1 :(得分:1)

这取决于你想要确定的时间。您可以将标签控件(没有“value”属性)的“值”打印到调试器,如:

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

这会给你类似的东西:

  

cmdTest的值为[False]

事实证明,命令按钮的默认值是它的状态(是否按下),因此如果您将上面的代码示例放在控件的单击事件中,您将看到“True”,如果执行在其他地方,你会看到“假”。

对于其他结果,此方法至少会向您显示您正在寻找的属性类型。你可以使用:

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

告诉你实际的类型,即:

  

cmdTest的值是[Boolean]

类型

您可以使用各种方法缩小范围,例如设置值并查看发生的情况。

答案 2 :(得分:1)

使用随Microsoft Visual Studio一起分发的OLE / Com对象查看器。

转到类型库并找到控件所在的库,例如CommandButton存储在 Microsoft Forms 2.0对象库 中。右键单击库并选择视图。找到代表控件的coclass并选择它:

alt text

可以看出,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();

显示默认属性。

答案 3 :(得分:0)

  

您可以访问代码,查找

不幸的是,我无法访问大多数控件的代码。但是,该链接对Microsoft控件很有用,但我仍然想知道其他控件。