CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

超级难题!有兴趣的请进!

楼主yingshang(伤影)2003-10-04 00:55:39 在 Delphi / VCL组件开发及应用 提问

 
  我动态继承了一个MyButton:TSpeedButton,现在想将Button的样子改变一下,例如变成圆的,鼠标移动到上面则变为红色,按下变为绿色。请问该覆盖哪几个函数?最好能有一些代码!望各位大侠解惑! 问题点数:0、回复次数:4Top

1 楼ihihonline(潇潇->戒烟)回复于 2003-10-04 01:13:19 得分 0

MouseDwon  
  MouseUp  
  直接写这两个事件就可以。  
   
  ----------------------------------------------------------  
  事太多、心太乱  
           
  Top

2 楼crossbow(【以无形为形】)回复于 2003-10-04 09:35:16 得分 0

CMMouseEnter  
  CMMouseLeave消息Top

3 楼crossbow(【以无形为形】)回复于 2003-10-04 09:38:08 得分 0

procedure   CNMeasureItem(var   Message:   TWMMeasureItem);   Message   CN_MEASUREITEM;  
          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;Top

4 楼hiflower(花)回复于 2003-10-04 10:11:51 得分 0

楼主概念错误!   没有动态继承的概念。  
  按你的写法其实是   动态创建   一个   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   事件处理同上Top

相关问题

  • 超级难题 进来啊!!!
  • 超级难题!!!!!!
  • 超级难题!!!!
  • 超级难题!!!
  • 超级难题
  • ************超级难题**************
  • ****************超级难题*****************
  • ~~~~~超级难题~~~~~~~
  • 超级难题!!!!
  • 超级难题

关键词

  • tmyspeedbutton
  • tmessage
  • fonmousedown
  • onmousedown
  • procedure
  • tspeedbutton
  • mousedown
  • 继承
  • message
  • cm

得分解答快速导航

  • 帖主:yingshang

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo