ActiveForm的问题(100分)

  • 主题发起人 主题发起人 rmichael
  • 开始时间 开始时间
R

rmichael

Unregistered / Unconfirmed
GUEST, unregistred user!
[:D]现有一ActiveForm,其中有自定义事件
type
TGpsLocateEvent=procedure(Sender:TObject;wParam:integer;lParam:string) of object;
...
public
GpsLocateEvent :TGpsLocateEvent;
...
published
property OnGpsLocate:TGpsLocateEvent read GpsLocateEvent write GpsLocateEvent;
...
在type library为此控件添加了OnGpsLocate事件接口,并且通过TButton.OnClick来激活该事件
procedure TAFX_GpsLocate.B_LocateClick(Sender: TObject);
var
id:integer;
context:string;
begin
id:=1;
context:='adfasd';
if assigned(GpsLocateEvent) then
GpsLocateEvent(self,id,context);
end;
在此控件的测试程序中,添加了事件处理
procedure TForm1.AFX_GpsLocate1GpsLocate(Sender: TObject;
var wParam: Integer; var lParam: WideString);
begin
showmessage(format('wParam:%d'+chr(13)+'lParam:%s',[wparam,lparam]));
end;
请问为什么assigned(GpsLocateEvent)为false?如何将自定义事件与其接口对应连接?
 
你在派遣接口上生命了你的事件了吗?
看看Activex自己是怎么作的,应为:
if FEvents <> nil then FEvents.OnGpsLocate;
 
To xeen:
用type定义的事件如何声明?有错误产生。
 
To xeen:
procedure TAFX_GpsLocate.GpsLocateEvent(Sender:TObject;wParam:integer;lParam:string);
begin
if FEvents <> nil then FEvents.OnGpsLocate;
end;
[Error] AFI_GpsLocate.pas(286): Declaration of 'GpsLocateEvent' differs from previous declaration
 
procedure TActiveFormX.GpsLocateEvent(Sender:TObject;wParam:integer;lParam:string);
begin
if FEvents <> nil then FEvents.OnGpsLocate(wParam,lParam);
end;
procedure TActiveFormX.Button1Click(Sender: TObject);
begin
var
id:integer;
context:string;
begin
id:=1;
context:='adfasd';
GpsLocateEvent(Self,id,context);
end;
 
procedure TActiveFormX.GpsLocateEvent(Sender:TObject;wParam:integer;lParam:string);
如上写过程会出现错误。不过,我已搞定,如下:
procedure TAFX_GpsLocate.Button1Click(Sender: TObject);
begin
var
id:integer;
context:string;
begin
id:=1;
context:='adfasd';
if FEvents <> nil then FEvents.OnGpsLocate(id,context);
end;
谢谢,拿好分。
 
后退
顶部