ActiveForm如何自定义事件 ( 积分: 50 )

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

rzxiaojun

Unregistered / Unconfirmed
GUEST, unregistred user!
我用Type Library自定义事件,为什么总是提示我没定义这个事件。

procedure TClientActiveFormX.Initialize;
begin
inherited Initialize;
OnActivate := ActivateEvent;
OnClick := ClickEvent;
OnCreate := CreateEvent;
OnDblClick := DblClickEvent;
OnDeactivate := DeactivateEvent;
OnDestroy := DestroyEvent;
OnKeyPress := KeyPressEvent;
OnPaint := PaintEvent;
OnChange := ChangeEvent;
end;
OnChange事件是我自己定义的,总是提示我"undeclareed identifier:Onchange"
 
我用Type Library自定义事件,为什么总是提示我没定义这个事件。

procedure TClientActiveFormX.Initialize;
begin
inherited Initialize;
OnActivate := ActivateEvent;
OnClick := ClickEvent;
OnCreate := CreateEvent;
OnDblClick := DblClickEvent;
OnDeactivate := DeactivateEvent;
OnDestroy := DestroyEvent;
OnKeyPress := KeyPressEvent;
OnPaint := PaintEvent;
OnChange := ChangeEvent;
end;
OnChange事件是我自己定义的,总是提示我"undeclareed identifier:Onchange"
 
你是怎么定义的!?
 
必须声明 onchange
OnActivate,OnClick ....都是在TCustomForm TCustomActiveForm中声明的。
你的类声明类似这样
private
procedure myevent(sender:Tobject)

..
property Onchange read myevent;

procedure TClientActiveFormX.Initialize;
begin
...
OnChange := 不用要这句
end;
procedure TClientActiveFormX.myevent(Sender:Tobject);
begin
if FEvents <> nil then FEvents.Onchange;
end;
类似上述方式。
定义一个事件肯定要截获消息处理中调用事件。就是当发生什么时就做什么。就是不知道你要干嘛
 
先在Public里声明一下
 
用Type Library自定义事件似乎没什么用,不需要在这里定义。搂主有什么用
 
to jxyghm:
我在ActiveForm窗体上,放置了一个控件,控件里面有个read事件,我想read事件触发的话,就传递到ActiveForm的自定义事件中。这样我就在制作好的控件中,直接扑获到这个事件了, 请指教一下。 多谢!
 
控件.Read:=ActionForm.EventProc;
就可以了
如果Read事件的参数和你所想的自定义事件不一致,你就要改写这个控件。在原来控件中再声明一个事件变量,比如叫 Feventx
在控件调用Read事件的地方(此处肯定是消息处理相关的)加上一句Feventx();
控件声明一个property newevent read feventx write feventx;
ActiveForm初始化时比如在Onactive里面控件.newevent := ActiiveForm.eventProc;
 
接受答案了.
 
后退
顶部