Это может быть очень легко или несколько сложно в зависимости от требуемого синтаксиса.
Одним из способов было бы создать свой собственный набор значений в элементе управления ActiveX. Можно добавить только два метода:
HRESULT GetPropery([in] BSTR name, [out,retval] VARIANT value);
HRESULT SetPropery([in] BSTR name, [in] VARIANT value);
В основном вы бы одно свойство на контроль, который будет содержать набор всех остальных. Это самый прямой путь.
Вы можете создать com collection (ссылка предполагает ATL, но theres общая информация о коллекциях com) свойство вариантов. Сделайте вызов Item() коллекции принятыми строками.Доступ было бы как (коллекция называется «Свойство»):
myValue = myControl.Properties("Name")
Я не знаю, как вы могли бы установить значение, как это?
myControl.Properties("Name") = newValue
Это может потребовать, чтобы коллекция возвращала не варианты, а COM-объекты со свойством «по умолчанию». Я даже не помню, как много деталей свойств по умолчанию, но я думаю, что клиенты VB6 поддерживают их хорошо, и все, что вам нужно было, было установлено в качестве атрибутов в файле IDL/ODL.
Обе идеи требуют, чтобы вызывающие абоненты имели это немного косвенности метода (Get/SetProperty) или использования свойства collection (myobject.Properties.XXXX). Если вы должны иметь синтаксис вроде этого:
x = myControl.MyDynamticProperty
Вам нужно написать свой собственный реализацию IDispatch GetIDsOfName «s и Invoke. Я сделал это некоторое время назад, это было уродливо. К счастью, все это было удалено, так как мы пошли в другом направлении с этой частью приложения. Вам придется заставить вызывающих абонентов использовать интерфейс IDispatch без виртуальной таблицы (и быть связанным с поздней задержкой). Я полагаю, это может быть легко или сложно в зависимости от языка вызова. Мои абоненты всегда были VB сценарий, так что это не было проблемой.
Вы хотите установить свойства своего собственного элемента управления ActiveX с помощью VBA? Можно установить большинство свойств большинства (если не всех) элементов управления в VBA во время выполнения. – Fionnuala
Да, я хочу получить и установить свойства управления ActiveX с помощью VBA. Но это не проблема. Я хочу динамически изменять набор доступных/открытых свойств элемента управления ActiveX во время выполнения. –