我继承了个TBUTTON组件,请问怎么重画皮肤,包括实现鼠标经过,按下时的样式切换,给点思路,代码参考

解决方案 »

  1.   

      在下面几个消息中重绘就OK了。  TMyButton = class(TButton)
      private
        procedure CMMouseLeave(var AMsg: TMessage); message CM_MOUSELEAVE;  //鼠标离开消息
        procedure CMMouseEnter(var AMsg: TMessage); message CM_MOUSEENTER;  //鼠标经过消息    procedure WMPaint(var AMsg: TMessage); message WM_PAINT;            //Paint消息
        procedure WMNCPaint(var AMsg: TMessage); message WM_NCPAINT;        //非客户区Paint消息
        procedure WMLButtonDown(var AMsg: TMessage); message WM_LBUTTONDOWN; //鼠标左键按下
        procedure WMLButtonUP(var AMsg: TMessage); message WM_LBUTTONUP;    //鼠标左键弹起
        procedure WMRButtonDown(var AMsg: TMessage); message WM_RBUTTONDOWN;//鼠标右键按下
        procedure WMRButtonUP(var AMsg: TMessage); message WM_RBUTTONUP;    //鼠标右键弹起
      end;implementationprocedure TMyButton.CMMouseLeave(var AMsg: TMessage);
    begin
      //在这里画图吧
    end;procedure TMyButton.CMMouseEnter(var AMsg: TMessage);
    begin
      //在这里画图吧
    end;procedure WMNCPaint(var AMsg: TMessage);
    begin
      //在这里画图吧
    end;procedure WMPaint(var AMsg: TMessage);
    begin
      //在这里画图吧
    end;............end.