Компоненты 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.»