关于在继承类中 写事件 的问题 !!!!!!!! 修改下载的第三方控件(提过但没解决的问题)(1分)

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

zysunit

Unregistered / Unconfirmed
GUEST, unregistred user!
我修改下载的第三方控件 raize , 对TrzGroupbar 下的 TrzGroup类中加入一个
onclick() 事件 代码如下 重新编译安装没有出现 onclick 事件
不知道是为什么? 但我单独列出在自己建立的单元中是可以的
很费解。 请高手指点


unit Rzgroupxx;

interface

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

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


implementation
procedure TRzGroup.Click;
begin
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;
 
要不要我帮你写?
对TrzGroupbar 下的 TrzGroup类中加入一个
onclick() 事件?
TRzGroup是不是一个控件?下面还有子类吗?
RZ控件我有!不过我没看里面的代码!
 
刚才我看了一下控件的源码;
TrzGroup本来就有onclick事件还加什么onclick?
这个类本来就有onclick事件,因为它的父类有,可以直接用!
你不信可以加入这样一句话
procedure click; override;

procedure TRzGroup.click;
begin
Inherited;
showmessage('有click事件了');
end;
然后你再运行环境,点击RzGroup1或者其它的TRzGroup,就会show‘有click事件了’;
目前的问题不是click加不进去,我估计而是在控件的注册代码中屏蔽了click事件的显示;
 
TRzGroupBar是控件它本身有onclick事件 而 TRzGroup 不是TRzGroupBar 的子类 它没有onclick事件 只有doubleClick()事件
它们的继承关系是
TRzGroupBar = class( TCustomControl )
TRzGroup = class( TCustomControl )
 
TCustomControl 的父类有onclick事件!
你按我说的试了没有?
 
我查看了多遍
TCustomControl 的父类是TWinControl 它所有的声明如下 没有onclick事件
TWinControl 的父类是TControl TControl的父类是TComponent 都是没有 onclick事件的 所以没有用 procedure click; override;
才会有我如上声明的是 procedure Click; virtual; 问题的关键在于重新编译安装没有出现 onclick 事件




TCustomControl = class(TWinControl)
private
FCanvas: TCanvas;
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
protected
procedure Paint; virtual;
procedure PaintWindow(DC: HDC); override;
property Canvas: TCanvas read FCanvas;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
 
你按我说的试了没有? 你先试试!真急人!
 
好的 清新空气 你真是个好人
 
后退
顶部