Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.06;
Скачать: CL | DM;

Вниз

ActiveX   Найти похожие ветки 

 
vixic ©   (2003-09-24 15:36) [0]

Как динамически(в run-time) добавить ActiveX объект на форму?
Объект зарегистрирован в системе но неустановлен в Delphi?


 
Vixic ©   (2003-09-24 15:50) [1]

Ну?


 
me   (2003-09-24 20:42) [2]

Ну "КВА!"

Требуется создать VCL-контейнер, куда ActiveX будет помещаться. Роль такого контейнера в Delphi выполняет класс TOleControl, который объявлен в модуле OleCtrls.pas. Базовый метод этого класса — InitControlData. В указанном методе необходимо определить GUID фабрики классов элемента управления ActiveX, число обработчиков событий и ссылку реализованного на клиенте интерфейса обработчиков событий, а также ссылку на лицензионный интерфейс, необходимый для вызовов методов IClassFactory2. Метод InitControlData вызывается автоматически после отработки конструктора TOleControl.
В приложение в объявим новый класс-потомок TOleControl:
type
TRTActiveX = class(TOleControl)
protected
FControlData: TControlData;
procedure InitControlData; override;
public
constructor EmbeggAX(AOwner: TComponent; AParent: TWinControl; AClassID: TGUID; Rect:TRect);
end;
Методы InitControlData и EbeggAX реализуем следующим образом:

procedure TRTActiveX.InitControlData;
begin
ControlData:=@FControlData;
end;

constructor TRTActiveX.EmbeggAX(AOwner: TComponent; AParent: TWinControl; AClassID: TGUID; Rect:TRect);
begin
with FControlData do begin
ClassID:=AClassID;
EventCount:=0;
EventDispIDs:=nil;
LicenseKey:=nil;
Flags:=$00000000;
end;
inherited Create(AOwner);
Self.parent:=AParent;
Self.visible:=true;
Self.Left:=Rect.Left;
Self.Top:=Rect.Top;
Self.Width:=Rect.Right-Rect.Left;
Self.Height:=Rect.Bottom-Rect.Top;
end;

Поместим на форму кнопку и создадим простой обработчик события:
procedure TForm1.Button1Click(Sender: TObject);
begin
TRTActiveX.EmbeggAX(Self,Self,StringToGUID("{...}"),Rect(0,0,100,100));
end;
Все!


 
nikkie ©   (2003-09-24 20:56) [3]

где-то этот код уже видел... :))



Страницы: 1 вся ветка

Текущий архив: 2003.10.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.025 c
14-18582
Бразилец
2003-09-17 19:00
2003.10.06
Динамо Киев - Локо, ваши прогнозы, господа товарищи?


1-18438
AndreyAs
2003-09-24 18:35
2003.10.06
Об отчетах - какой выбрать


1-18362
LinOS
2003-09-23 08:13
2003.10.06
Popup по click на кнопке


11-18286
Kladov
2003-01-23 15:15
2003.10.06
Конкурс на самую короткую реализацию Double2Str


1-18354
Dark Elf
2003-09-23 11:34
2003.10.06
Обработка нажатия клавиши F1