HELP~~~~~~~~~~~~关于鼠标移动!

hahah 2000-02-20 03:40:00
让鼠标移动到组件上时组件的文字变色,离开这个组件时
就变回原来的颜色。
我用ONMOUSEMOVE时,要把其它所有组件的都要写一段代
码,太繁了,

请问有什么方法可以用很少的代码就能达到?
...全文
269 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sess 2000-02-23
  • 打赏
  • 举报
回复
捕捉窗口(application.message)的WM_MOUSEHOVER和WM_MOUSELEAVE两条消息,然后用is 判断
Lin 2000-02-22
  • 打赏
  • 举报
回复
1、自己写一个组件,不过我有现成的;
2、WM_MOUSEHOVER和WM_MOUSELEAVE两条消息用过没有?希望对你有所帮助。
huiwsey 2000-02-21
  • 打赏
  • 举报
回复
我平时用的一个笨办法,先给一个组件写好处理程序,
IF SENDER IS TButton then
With (Sender As TButton ) do
begin
 font.color:=/////
end;
然后其他需要的组件把OnMouseMove指定为这个过程就行了。
yijun2000 2000-02-21
  • 打赏
  • 举报
回复
fancy的方法比较好,而且简单。这就是vb中控件数组的扩展。多掌握这样的概念,在很多地方都用得到,甚至不一定是控见的问题。
Fancy 2000-02-21
  • 打赏
  • 举报
回复
將其他控件的ONMOUSEMOVE都對應在同一個PROCEDURE中
然後用IS來判斷SENDER是何控件, 完了用AS進行轉換后再對其FONT.COLOR進行賦值
渤海海峡 2000-02-20
  • 打赏
  • 举报
回复
简单的例子:
从Tlabel继承,加一个focuscolor属性。
用了鼠标进入和离开两个消息。

unit HxLabel;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
THxLabel = class(TLabel)
private
FFcolor:Tcolor;
FoldColor:Tcolor;
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
procedure CMMSENTER(var Msg: TMessage);message CM_MOUSEENTER;
procedure CMMSLEAVE(var Msg: TMessage);message CM_MOUSELEAVE;
published
property FocusColor:Tcolor read FFcolor write FFcolor;
{ Published declarations }
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Hxsoft', [THxLabel]);
end;

procedure THxlabel.CMMSENTER(var Msg: TMessage);
begin
//鼠标进入
Foldcolor:=self.font.Color;
self.Font.Color:= FFcolor;
end;

procedure THxlabel.CMMSLEAVE(var Msg: TMessage);
begin
//鼠标离开
self.font.Color:=Foldcolor;
end;

end.
hahah 2000-02-20
  • 打赏
  • 举报
回复
我要DELPHI的代码,QIUJOE可以吗?
qiujoe 2000-02-20
  • 打赏
  • 举报
回复
扩展你的TControl类让所有组件继承于你的扩展类就可以了
如果需要的话可以给你一段VC的例子
土豆 2000-02-20
  • 打赏
  • 举报
回复
1。鼠标进入可由MOUSMOVE得到
2. 鼠标离开没有消息,但父窗口会得到消息,可在父窗口的MOUSEMOVE消息处理中处理;另外,也可以做一个定时器,在鼠标移入控件时启动定时器,每个一段较短的时间就检查鼠标是否在控件上,如果没有则说明鼠标移出了
kxy 2000-02-20
  • 打赏
  • 举报
回复
好像没有简单的方法,
把要用到的控件都自己继承一个:)
gypb 2000-02-20
  • 打赏
  • 举报
回复
利用IS 操作副可轻松搞定。
IF SENDER IS TButton then
With (Sender As TButton ) do
begin
{do somthing};
end;

5,386

社区成员

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

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