Главная страница
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
1-18401
Вован
2003-09-25 15:32
2003.10.06
У когонибуть есть русский Consts.pas и DBConsts.pas ???


1-18347
lovres
2003-09-23 13:13
2003.10.06
А как сделать, чтобы в TEdit e можно было вводить только цифры?


1-18415
Romka
2003-09-25 12:45
2003.10.06
Конвентирование bmp в ico


14-18580
саша2
2003-09-18 11:44
2003.10.06
про них


1-18318
SergP
2003-09-23 17:08
2003.10.06
Можно ли делать отчет (TQuickRep) из данных массива?