如何增加Tshape的双击和单击事件 我想实现双击Shape控件处理相应事件,但Tshape本身没有双击和单击事件,如何实现或者如何继承重写控件啊,看了很多帖子,只是说了一下,还是不会,我想知道详细的实现步骤或者实现方法,我的分可能不多,但我会尽力给分,因为我真得很急。麻烦各位大侠了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 type Test = class(TShape) published onclick;end;procedure Register;implementationprocedure Register;begin RegisterComponents('T', [Test ]);end; TOnClick=procedure(Sender: TObject) of Object;type TYourSharp = class(TSharp) private FOnClick: TOnClick; protected procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; published procedure StyleChanged(Sender: TObject); property Align; property Anchors; property Brush: TBrush read FBrush write SetBrush; property DragCursor; property DragKind; property DragMode; property Enabled; property Constraints; property ParentShowHint; property Pen: TPen read FPen write SetPen; property Shape: TShapeType read FShape write SetShape default stRectangle; property ShowHint; property Visible; property OnContextPopup; property OnDragDrop; property OnDragOver; property OnEndDock; property OnEndDrag; property OnMouseDown; property OnMouseMove; property OnMouseUp; property OnStartDock; property OnStartDrag; property OnClick: TOnClick read FOnClick write FOnClick; end;procedure TYourSharp.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin if Assigned(FOnClick) then FOnClick(Self);end; TShape是从TControl继承的,只是没有公布出来,你直接published就可以了。可以公布的事件属性如下: TNewShap = class(TShape) published property OnCanResize; property OnClick; property OnConstrainedResize; property OnContextPopup; property OnDblClick; property OnDragDrop; property OnDragOver; property OnEndDock; property OnEndDrag; property OnMouseDown; property OnMouseMove; property OnMouseUp; property OnMouseWheel; property OnMouseWheelDown; property OnMouseWheelUp; property OnResize; property OnStartDock; property OnStartDrag; end; 我再包装一下,其实楼上几位已经说了比较清楚了。1、代码直接新建一个单元,把下面的代码拷贝过去即可;unit ExtendShape;interfaceuses SysUtils, Classes, Controls, ExtCtrls;type TExtendShape = class(TShape) private { Private declarations } protected { Protected declarations } public { Public declarations } published property OnClick; //单击 property OnDblClick;//双击 end;procedure Register;implementationprocedure Register;begin //参数1:要注册的组件面板 //参数2:要注册的类名 RegisterComponents('System', [TExtendShape]);end;end.2、安装组建 点击菜单“component”—〉install componet...后,第一个输入框选择你刚才保存的 pas文件,点击OK按钮即完成安装,安装后的组件在上面注册的 System 面板里面。3、效果图A、B、如果还有什么问题,可以继续接着讨论! delphi仿hao123桌面版,开网页的速度没人加快呢? 谁能给一个LRC歌词的算法和显示的DEMO 中文显示问题 设置窗体焦点 DBGrid数据显示问题,在钱等急急 reportbuilder中文帮助文档 快过年了,散分庆祝! zcvz 还有个小问题,在删除一条记录时,提示can't modify a read-only dataset 请问Delphi是否可以使用应用服务器中的EJB? delphi7连接oracle9数据库,哪种方法速度最快 DELPHI7.0控件事件的屏蔽与打开方法?
type
Test = class(TShape)
published
onclick;
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('T', [Test ]);
end;
TYourSharp = class(TSharp)
private
FOnClick: TOnClick;
protected
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
published
procedure StyleChanged(Sender: TObject);
property Align;
property Anchors;
property Brush: TBrush read FBrush write SetBrush;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property Constraints;
property ParentShowHint;
property Pen: TPen read FPen write SetPen;
property Shape: TShapeType read FShape write SetShape default stRectangle;
property ShowHint;
property Visible;
property OnContextPopup;
property OnDragDrop;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDock;
property OnStartDrag;
property OnClick: TOnClick read FOnClick write FOnClick;
end;procedure TYourSharp.MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
begin
if Assigned(FOnClick) then
FOnClick(Self);
end;
可以公布的事件属性如下:
TNewShap = class(TShape)
published
property OnCanResize;
property OnClick;
property OnConstrainedResize;
property OnContextPopup;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnMouseWheel;
property OnMouseWheelDown;
property OnMouseWheelUp;
property OnResize;
property OnStartDock;
property OnStartDrag;
end;
interface
uses
SysUtils, Classes, Controls, ExtCtrls;
type
TExtendShape = class(TShape)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
published
property OnClick; //单击
property OnDblClick;//双击
end;procedure Register;implementationprocedure Register;
begin
//参数1:要注册的组件面板
//参数2:要注册的类名
RegisterComponents('System', [TExtendShape]);
end;
end.2、安装组建
点击菜单“component”—〉install componet...后,第一个输入框选择你刚才保存的 pas文件,点击OK按钮即完成安装,安装后的组件在上面注册的 System 面板里面。3、效果图A、B、如果还有什么问题,可以继续接着讨论!