Как выставить свойства компонента, созданного в форме activex - PullRequest
2 голосов
/ 27 мая 2010

Вы можете опубликовать свойства элемента управления внутри формы activex?

пример У меня есть форма с компонентом TAdoconnection, я хочу, чтобы свойства этого компонента могли быть изменены пользователем, когда он загружает мой элемент управления activex.

альтернативный текст http://i46.tinypic.com/2hd1xr4.png

UPDATE

@ TOndrej дает мне очень хороший пример, но этот пример работает только для компонентов, полученных из элемента управления activex, как можно добиться такого же эффекта с компонентом VCL, таким как Timage или TMemo? Можно ли опубликовать все свойства без перезаписи каждого свойства, чтобы выставить вручную?

1 Ответ

3 голосов
/ 27 мая 2010

Компоненты ADO уже являются объектами ActiveX, поэтому проще всего представить соединение как простое свойство формы ActiveX:

В редакторе библиотек типов добавьте «Библиотека объектов данных Microsoft ActiveX 2.1» в список используемых библиотек. Это сгенерирует ADODB_TLB.pas единицу в каталоге вашего проекта.

альтернативный текст http://i46.tinypic.com/2itfprm.png

Затем вы можете объявить новое свойство только для чтения Connection типа Connection (этот тип объявлен в ADODB_TLB единицах) в вашем интерфейсе IActiveFormX.

альтернативный текст http://i47.tinypic.com/2a5atf9.png

В реализации вы можете просто вернуть интерфейс из вашего TADOConnection компонента:

type
  THackADOConnection = class(TADOConnection);

function TActiveFormX.Get_Connection: Connection;
begin
  Result := Connection(THackADOConnection(ADOConnection).ConnectionObject);
end;

Тип 1045 * необходим только потому, что ConnectionObject защищен. Внешний тип Connection предназначен для устранения ошибки компилятора «Несовместимые типы: ADODB_TLB._Connection и ADOInt._Connection.»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...