关于在继承类中 写事件 的问题 !!!!!!!!(10分)

  • 主题发起人 主题发起人 zysunit
  • 开始时间 开始时间
Z

zysunit

Unregistered / Unconfirmed
GUEST, unregistred user!
TRzGroup = class( TCustomControl )
private
FOnClick: TNotifyEvent;
protected
procedure Click; virtual;
published
property OnClick: TNotifyEvent read FOnClick write FOnClick;
end


implementation
procedure TRzGroup.Click;
begin
// Call OnClick if assigned and not equal to associated action's OnExecute.
// If associated action's OnExecute assigned then call it, otherwise, call OnClick.

if Assigned( FOnClick ) and ( Action <> nil ) and ( @FOnClick <> @Action.OnExecute ) then
FOnClick( Self )
else if not ( csDesigning in Group.ComponentState ) and ( ActionLink <> nil ) then
begin
{$IFDEF VCL60_OR_HIGHER}
ActionLink.Execute( Group );
{$ELSE}
ActionLink.Execute;
{$ENDIF}
end
else if Assigned( FOnClick ) then
FOnClick( Self );
end;

以上程序不知道那里出了问题 我重新编译安装没有出现 onclick 事件 为何? 请高手指点
 
可以呀,我刚才试了。源码:unit Rzgroupxx;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TRzGroup=class(TCustomControl)
private
FOnClick: TNotifyEvent;
protected
procedure Click; virtual;
published
property OnClick: TNotifyEvent read FOnClick write FOnClick;
end;
procedure Register;
implementation

{ TRzGroup }

procedure Register;
begin
RegisterComponents('listData', [TRzGroup]);
end;
procedure TRzGroup.Click;
begin
if Assigned( FOnClick ) and ( Action <> nil ) and ( @FOnClick <> @Action.OnExecute ) then
FOnClick( Self )
else if not (ActionLink<>nil) then //(csDesigning in TComponentState) and
begin
{$IFDEF VCL60_OR_HIGHER}
ActionLink.Execute( Group );
{$ELSE}
ActionLink.Execute;
{$ENDIF}
end
else if Assigned( FOnClick ) then
FOnClick( Self );
end;

end.
 
我不知道你为什么加一个虚方法!
procedure Click; virtual;
你给参考
uses
StdCtrls, control;
type

TRzGroup = class(TCustomControl)
private
FOnClick: TNotifyEvent;
protected
procedure Click(Sender:TObject);
public
published
property OnClick: TNotifyEvent read FOnClick write FOnClick;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Standard', [TRzGroup]);
end;

procedure TRzGroupClick(Sender:TObject);
begin
if Assigned( FOnClick ) then
FOnClick( Self );
end;
 
上面两位朋友都应该是对的 我也单独测试过 会出现 onclick 事件

但我修改下载的第三方控件 raize , 对TrzGroupbar 下的 TrzGroup类中加入一个
onclick() 事件 代码同上 重新编译安装没有出现 onclick 事件
不知道是为什么? 很费解。
 
楼主
我给你个QQ:43170626你问他吧!
我帮他写了个控件!他现在对控件的编写收益非浅;
 

Similar threads

I
回复
0
查看
527
import
I
I
回复
0
查看
625
import
I
I
回复
0
查看
981
import
I
I
回复
0
查看
541
import
I
后退
顶部