Форум: "Corba";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "Corba";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.034 c