控件焦点问题!
请教大侠,我要实现功能:一个控件得到焦点时,底色变化,失去焦点时,又变回原来的颜色,要实现这样的功能有一个通用的procedure吗?如何写呢? 问题点数:70、回复次数:12Top
1 楼chechy(www.qdocuments.net)回复于 2001-09-05 10:23:45 得分 0
得到焦点,应该是触发CM_ENTER消息。
而失去焦点,应该触发CM_EXIT消息。
你写两个消息响应函数,就可以了。Top
2 楼enlightenment(破冰超人)回复于 2001-09-05 10:28:18 得分 10
添加:
procedure WmSetFocus(const Message:TMessage);message WM_SETFOCUS;
procedure WmKillFocus(const Message:TMessage);message WM_KILLFOCUS;
处理过程!
Top
3 楼lluunn007(书生)回复于 2001-09-05 10:42:23 得分 0
agree~~Top
4 楼lliuxxingw(lliuxxingw)回复于 2001-09-05 10:46:33 得分 0
也可对控件的事件进行编程,有onenter和onexitTop
5 楼pathe(睡斛)回复于 2001-09-05 10:50:41 得分 0
const 换成 var 吧!Top
6 楼feng_zi(二度程序员)回复于 2001-09-05 10:55:56 得分 0
to chechy,enlightenment:
可以具体点吗?我不是只对一个控件使用,我是想在一个form中,多个Tedit,TComboBox,当其中某个得到焦点时,颜色变化,失去时又复原.
你们所说的,具体如何能做到呢?
to lliuxxingw:
那样要每个控件中都写,很多就不好玩了!Top
7 楼enlightenment(破冰超人)回复于 2001-09-05 10:56:09 得分 0
const换成var,笔误!
Top
8 楼chechy(www.qdocuments.net)回复于 2001-09-05 11:05:30 得分 60
不难的,因为这些控件都有OnEnter和OnExit事件。将这些控件的OnEnter事件都连接到同一个OnEnter函数,将OnExit事件也连接上同一个OnExit事件,就简单了。
我写给你,
type
THackControl = class(TControl);
procedure TForm1.DoOnEnter(Sender: TObject);
begin
FOldColor := THackControl(Sender).Color; // OldColor事先需要定义。
THackControl(Sender).Color := clYellow;
end;
procedure TForm1.DoOnExit(Sender: TObject);
begin
THackControl(Sender).Color := FOldColor;
end;Top
9 楼feng_zi(二度程序员)回复于 2001-09-05 11:26:01 得分 0
先谢chechy,我试试,一会给分!Top
10 楼feng_zi(二度程序员)回复于 2001-09-05 11:40:39 得分 0
谢谢checky,成功了,以前我都是一个一个的设,那样好累,后来自己做了一个过程,但只能实现onenter的情况,却不能实现onexit,现在剩事多了!再次感谢checky!
问checky一个问题:
你是搞软件开发的吧,主要用delphi吗?在什么地方工作?我很想交你这个朋友!Top
11 楼feng_zi(二度程序员)回复于 2001-09-05 11:45:48 得分 0
谢谢checky,成功了,以前我都是一个一个的设,那样好累,后来自己做了一个过程,但只能实现onenter的情况,却不能实现onexit,现在剩事多了!再次感谢checky!
问checky一个问题:
你是搞软件开发的吧,主要用delphi吗?在什么地方工作?我很想交你这个朋友!Top
12 楼chechy(www.qdocuments.net)回复于 2001-09-05 11:46:04 得分 0
1、我搞软件开发,但是也搞一些研究。
2、我不用Delphi
3、在杭州。Top




