Обнаружение свойств по умолчанию для элемента управления ActiveX - PullRequest
1 голос
/ 03 сентября 2008

Можно ли определить, какое свойство элемента управления ActiveX является свойством по умолчанию? Например, что является свойством по умолчанию для элемента управления CommandButton VB6 и как бы я узнал о других элементах управления по умолчанию!

/ EDIT: Не имея источника для самого объекта

Ответы [ 4 ]

1 голос
/ 19 марта 2010

Используйте OLE / Com Object Viewer, который распространяется с Microsoft Visual Studio.

Перейдите в библиотеки типов и найдите библиотеку, в которой находится элемент управления, например, CommandButton хранится в Библиотека объектов Microsoft Forms 2.0 . Щелкните правой кнопкой мыши библиотеку и выберите вид. Найдите кокласс, представляющий элемент управления, и выберите его:

alt text

Как можно видеть, интерфейс по умолчанию для CommandButton - это ICommandButton, когда вы проверяете, что ICommandButton ищет свойство с показом 0. IDL для свойства dispid 0 в 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();

Отображение свойства по умолчанию.

1 голос
/ 10 сентября 2008

Зависит от того, когда вы хотите это определить. Вы можете вывести «значение», скажем, элемента управления меткой (у которого нет свойства «значение») в отладчик, например:

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

Что даст вам что-то вроде:

Значение для cmdTest равно [False]

Как оказалось, значением по умолчанию для командной кнопки является ее состояние (нажата или нет), поэтому, если вы поместите приведенный выше пример кода в событие click для элемента управления, вы увидите «True», если вы выполните в другом месте вы увидите «Ложь».

Для других результатов этот метод, по крайней мере, покажет вам, какое свойство вы ищете. Вы можете использовать:

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

которые сообщают вам фактический тип, а именно:

Значение cmdTest имеет тип [Boolean]

Вы можете использовать различные методы для сужения, например, установить значение и посмотреть, что произойдет.

1 голос
/ 03 сентября 2008

Я не использую VB, но здесь все идет.

Я нашел Используя значение элемента управления , но это не программное решение. Если у вас есть доступ к коду, ищите

Attribute Value.VB_UserMemId = 0

с помощью Блокнота.

0 голосов
/ 03 сентября 2008

у вас есть доступ к коду, ищите

К сожалению, у меня нет доступа к коду для большинства элементов управления. Однако эта ссылка полезна для элементов управления Microsoft, но я все же хотел бы узнать о других элементах управления.

...