Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.027 c
1-1104149785
markers
2004-12-27 15:16
2005.01.16
На тему ini файлов


1-1104034380
Viktop
2004-12-26 07:13
2005.01.16
По какому рисунку был сделан клик?


1-1104516664
Cheguevara
2004-12-31 21:11
2005.01.16
Как создать компоненту в координатах клика мыши?


1-1104238546
JK
2004-12-28 15:55
2005.01.16
StringGrid


1-1104474122
Dr. Genius
2004-12-31 09:22
2005.01.16
Свойства и процедуры библиотеки Jpeg




   Наверх