[Lazarus] ActiveX, TOLEControl
LacaK
lacak at zoznam.sk
Wed Oct 19 14:01:40 CEST 2016
>
>
>> Hi *,
>>
>> I need help with OCX component (not visual I guess), which I need use
>> in Lazarus application (to control another application, which
>> supplies this OCX control).
>> I have imported type library using importtl.exe (new unit was created
>> successfully)
>>
>> Then in program I have created instance:
>> v := CreateOleObject('SCAPS.ScSamlightClientCtrl');
>> or
>> intf := CreateComObject(CLASS_ScSamlightClientCtrl) as
>> _DSamlight_client_ctrl_ocx;
> What is the type of your V or intf variable?
V: OLEVariant;
intf: _DSamlight_client_ctrl_ocx;
> I am wild guessing maybe they are not proper referenced type so the
> object is created and then immediately freed.
There is something strange behind scene. I have tried various methods:
var
v1: OLEVariant;
v2: ScSamlightClientCtrl;
v: variant;
ax: TActiveXContainer;
disp: IDispatch;
i: integer;
begin
v1 := CreateOLEObject('SCAPS.ScSamlightClientCtrl');
i := v1.scIsRunning; // exception here
v2 := CoScSamlightClientCtrl.Create;
i := v2.scIsRunning; // exception here
ax := TActiveXContainer.Create(Self);
//ax.OleClassName := 'SCAPS.ScSamlightClientCtrl';
CoCreateInstance(CLASS_ScSamlightClientCtrl, nil,
CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, IDispatch, disp);
ax.ComServer:=disp;
ax.Active := True;
v := disp;
i := v.scIsRunning; // exception here
So in every case it returns exception when I try call first time
interface method ...
I am not familiar with ActiveX technology so I have no idea what is wrong ?
-Laco.
More information about the Lazarus
mailing list