WM_MouseMove的问题.急,在线等

zykj_2000 2003-03-28 04:37:13
学与控件
我制做了一个button继承与TButton
我想实现在鼠标经过这个按钮时,按钮上的capton的颜色变为蓝色
我使用下面的办法
procedure TRButton.WMMouseMove(var Message: TWMMOUSEMOVE);
var
wh:TSize;
begin
FCanvas.Pen.Color:=clBlue;
FCanvas.Font:=Self.Font;
wh:=FCanvas.TextExtent(Caption);
FCanvas.TextOut((Width div 2)-(wh.cx div 2)-1,(height div 2)-(wh.cy div 2)-1,caption);
end;

但是运行出错,说Canvas does no allow drawing
why
...全文
165 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
FrameSniper 2003-03-29
  • 打赏
  • 举报
回复
GZ
shao528 2003-03-29
  • 打赏
  • 举报
回复
直接控制Canvas要小心点,其实要实现这样的功能,是不能这样做的,你可以截取以下两个消息:
CM_MOUSEENTER :鼠标进入消息。
CM_MOUSELEAVE :鼠标退出消息。


下面是一个能接收鼠标进入和移出消息的SpeedButton,增加了两个事件:鼠标进入和移出事件。

例子:

TMouseEnterEvent=Procedure(Sender:TObject) of Object; //定义事件类型
TMouseExitEvent=procedure(Sender:TObject) of Object;
TMSpeedButton = class(TSpeedButton)
private
FMOuseEnter: TMouseEnterEvent;
FMouseExit: TMouseExitEvent;
protected
procedure MouseEnterMsg(Var Message:TMessage);message CM_MOUSEENTER;//消息驱动函数
procedure MouseExitMsg(Var Message:TMessage);message CM_MOUSELEAVE;
procedure Loaded;override;
public
{ Public declarations }
published
property OnMouseEnter: TMouseEnterEvent read FMouseEnter write FMouseEnter;
property OnMouseExit: TMouseExitEvent read FMouseExit write FMouseExit;
end;

procedure Register;

implementation
uses DpkRes;

procedure Register;
begin
RegisterComponents('simple', [TMSpeedButton]);
end;

procedure TMspeedButton.MouseEnterMsg(Var Message:TMessage);
begin
inherited;
if Assigned(FMouseEnter) then
FMouseEnter(self);
end;

procedure TMspeedButton.MOuseExitMsg(Var Message:TMessage);
begin
inherited;
if Assigned(FmouseExit) then //判断用户是否写入事件代码,如果有则执行
FMOuseExit(self);
end;

end;
短歌如风 2003-03-29
  • 打赏
  • 举报
回复
应该用TControlCanvas:
FCanvas := TControlCanvas;
FCanvas.Control := self;
citytramper 2003-03-29
  • 打赏
  • 举报
回复
TRButton.Create创建时
fcanvas.Handle:=getdc(self.Handle);
zykj_2000 2003-03-28
  • 打赏
  • 举报
回复
在TRButton.Create时,创建的
xzgyb 2003-03-28
  • 打赏
  • 举报
回复
一般的按钮直接改好像不会变色
问一句你的FCanvas是啥时候创建

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧