Главная страница
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.044 c
6-1098805375
denissoft
2004-10-26 19:42
2005.01.16
Количество отправленных полученных байт.


1-1103982416
han
2004-12-25 16:46
2005.01.16
директивы препроцессора


1-1104315116
snake_r
2004-12-29 13:11
2005.01.16
CheckBox d DBGrid


1-1104211072
Тимур
2004-12-28 08:17
2005.01.16
Опять по ListView


1-1104108268
Klim
2004-12-27 03:44
2005.01.16
Округление чисел.