現在有一個ocx組件,里面有二個實時的事件函式,假設里面是這樣寫的:
AAA_TLB.pas
......
_EBCH_CommStdEvents = dispinterface
['{BBA0C151-D567-4980-8DFF-547B142E24E6}']
procedure Method1(var param: WideString); dispid 1;
procedure Method2(var param: WideString); dispid 2;
end;
TM_ComStdMethod1 = procedure(ASender: TObject; var param: WideString) of object;
TM_ComStdMethod2 = procedure(ASender: TObject; var param: WideString) of object;
TM_ComStd = class(TOleControl)
........
,我現在需要寫一個dll檔案去捕獲它,求教如何寫?
ABC.dpr
library ABC;
uses AAA_TLB;
..........
exports
end.
在線等,真心求教了。
uj5u.com熱心網友回復:
大神快來回答呀,幫我搞定這個問題了,加Q給你發個大紅包。
uj5u.com熱心網友回復:
library ABC;
uses AAA_TLB,windows,SysUtils,Forms,Classes,activex, Messages, Variants, Graphics, Controls,
Dialogs, OleCtrls, StdCtrls;
type
WEDLL=class
STM_ComStd1:TM_ComStd;
constructor Create();
procedure STM_ComStd1Method1(ASender: TObject; var param: WideString);//ocx里的事實在這里是這樣寫么?
procedure STM_ComStd1Method2(ASender: TObject; var param: WideString);//ocx里的事實在這里是這樣寫么?
private
protected
public
end;
constructor WEDLL.Create;
begin
STM_ComStd1:=TM_ComStd.Create(nil);
end;
procedure WEDLL.STM_ComStd1Method1(ASender: TObject; var param: WideString);
begin
writeln(param);//這里沒有執行
end;
procedure WEDLL.STM_ComStd1Method2(ASender: TObject; var param: WideString);
begin
writeln(param);//這里沒有執行
end;
var
wedll1:WEDLL;
sign:boolean=false;
procedure createobj();
begin
if not(sign) then
begin
wedll1 := WEDLL.Create;
sign := True;
end;
end;
function run(): JInt; {$IFDEF WIN32} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
begin
createobj();
end;
exports
run;
end.
我上面這段代碼執行run后那個method1和method按理說能監聽到事件,為什么沒效果?因為對delphi不太熟,望各位大神幫忙呀。
uj5u.com熱心網友回復:
STM_ComStd1.Method1 := STM_ComStd1Method1 寫在create方法里轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/76093.html
標籤:VCL組件開發及應用
上一篇:求 delphi xe 下載地址
