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

Вниз

Insert ActiveX Forms in runtime   Найти похожие ветки 

 
WondeRu ©   (2004-03-16 11:38) [0]

Здравствуйте! Как в Delphi вставить ActiveX форму динамически, имея все ее GUID"s? Может еще какие нужны условия? Спасибо!


 
just me   (2004-03-16 19:04) [1]

Никаких особых условий не нужно, но необходимо прежде всего создать контейнер для ActiveX на базе класса TOleControl, в котором перекрыть витруальный метод InitControlData. В этом методе необходимо определить GUID фабрики классов ActiveX, число обработчиков событий и ссылку реализованного в клиенте интерфейса обработчиков событий, а также ссылку на лицензионный интерфейс, необходимый для вызовов методов интерфейса IClassFactory2.
Примерно так:
type
 TRunTimeActiveX = class(TOleControl)
 protected
   FControlData: TControlData;
   procedure InitControlData; override;
 public
   constructor EmbeddActiveX(AOwner: TComponent;
     AParent: TWinControl; AClassID: TGUID; Rect:TRect);
 end;
...
constructor TRunTimeActiveX.EmbeddActiveX(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 TRunTimeActiveX.InitControlData;
begin
 ControlData := @FControlData;
end;
И вызвать примерно так:
procedure TMyForm.Button1Click(Sender: TObject);
begin
 TRunTimeActiveX.EmbeddActiveX(Self,Self,
   StringToGUID(<my_ActiveX_CF_GUID>), Rect(10,10,100,100));
end;


 
WondeRu ©   (2004-03-24 14:43) [2]

А как вызывать дополнительные функции формы и обрабатывать callback-вызовы?



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

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

Наверх




Память: 0.47 MB
Время: 0.041 c
6-1098890522
CRACKISH
2004-10-27 19:22
2005.01.16
TTcpServer и TTcpServer из вкладки Internet


1-1104144168
lexis
2004-12-27 13:42
2005.01.16
Нужен хитрый chart


4-1101570504
Dmitry_04
2004-11-27 18:48
2005.01.16
Есть ли разница обработки сообщения в программе?


10-1080216496
Comwad
2004-03-25 15:08
2005.01.16
Два SmartAgent-a в одной подсети.


6-1098386375
Comp
2004-10-21 23:19
2005.01.16
Контроль трафика