我动态继承了一个MyButton:TSpeedButton,现在想将Button的样子改变一下,例如变成圆的,鼠标移动到上面则变为红色,按下变为绿色。请问该覆盖哪几个函数?最好能有一些代码!望各位大侠解惑!
解决方案 »
- TADOConnection有没办法检测SQL SERVER 已经停止了
- 关于Connect失败求助
- TSocketConnection连接远程数据库,运行状态下拔掉网线,会弹出“windows socket error
- fastreport 打印票据的问题
- 三层结构中,现在在中间层定义一个方法,其参数想定义为HashMap类型,不知如何做?
- 请问大虾如何得到MAXTHON浏览器当前页面的IWebBrowser2接口?
- 为中国足球默哀!!!
- 求 dbgrid转excel的通过了的代码!!!我用的delphi7
- Borland Pascal 7.0 中 longint 使用 shr 得不到正确的结果
- 远程访问Sql Server200 的问题 (在线等)
- 小问题!~~~
- 國慶節﹐散分
MouseUp
直接写这两个事件就可以。----------------------------------------------------------
事太多、心太乱
procedure CNDrawItem(var Message: TWMDrawItem); Message CN_DRAWITEM;
procedure CMFontChanged(var Message: TMessage); Message CM_FONTCHANGED;
procedure CMEnabledChanged(var Message: TMessage); Message CM_ENABLEDCHANGED;
procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); Message WM_LBUTTONDBLCLK;
procedure CMMouseEnter(var Message:TMessage); Message CM_MOUSEENTER;
procedure CMMouseLeave(var Message:TMessage); Message CM_MOUSELEAVE;
procedure WMKeyDown (var Message:TMessage); Message WM_KEYDOWN;
procedure WMKeyUp (var Message:TMessage); Message WM_KEYUP;
procedure WMMove (var Message:TMessage); Message WM_MOVE;
按你的写法其实是 动态创建 一个 TSpeedButton 对象。
要继承,必须定义一个新的类:
TMySpeedButton=class(TSpeedButton)
protected
procedure Paint;override;
private
FOnMouseDown:TMouseEvent;
procedure MouseDown(Sender: TObject;Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
property OnMouseDown:TMouseEvent read FOnMouseDown write FOnMouseDown;
end;
var
MySpeedButton:TMySpeedButton;procedure TMySpeedButton.Paint;
begin
//inherited; 不要继承父类的方法
Canvas.Ellipse(0,0,50,50);// 画你自己的形状
inherited OnMouseDown:=MouseDown; 截取父类的 MouseDown 事件end;
procedure TMySpeedButton.MouseDown(Sender: TObject;Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
//你的处理
if Assigned(OnMouseDown) then
OnMouseDown(Sender,Button,Shift,X,Y);// 执行客户的 OnMouseDown 事件
end;// OnMouseUp 事件处理同上