请教各个大虾 ( 积分: 100 )

  • 主题发起人 主题发起人 hhi179
  • 开始时间 开始时间
H

hhi179

Unregistered / Unconfirmed
GUEST, unregistred user!
在delphi7.0中表单中,当某edit控件得到焦点时,相应的edit控件的背景颜色变成蓝色,失去焦点后又变成白色,如何做?(我又不想在每个edit控件都写代码来完成,这样太多代码了)
 
在delphi7.0中表单中,当某edit控件得到焦点时,相应的edit控件的背景颜色变成蓝色,失去焦点后又变成白色,如何做?(我又不想在每个edit控件都写代码来完成,这样太多代码了)
 
我认写代码最好了,代码很简单的!
 
for I:=0 to self.ComponentCount-1 do
begin
if self.Components.ClassName='TEdit' then
if (self.Components as tedit).Focused then
(self.Components as tedit).Color :=clblue
else (self.Components as tedit).Color :=clwhite;
end;
 
假設你有20個Edit;
在Edit1的OnEnter事件中寫:
TEdit(Sender).Color := clBlue;
在Edit1的OnExit事件中寫:
TEdit(Sender).Color := clWindow;
在窗體的Create事件中寫:
var i: Integer;
begin
for i := 0 to self.ComponentCount-1 do
if self.components is TEdit then
begin
TEdit(self.components).onEnter := Edit1Enter(TEdit(self.components
));
TEdit(self.components).OnExit := Edit1Enter(TEdit(self.components
));
end;
end;
或者直接在每個Edit的OnEnter和OnExit事件中選擇Edit1的事件。
 
1。可以自己建个从tedit继承的控件,处理onenter,onexit事件。
2。每个edit控件的onenter,onexit指向同一个时间处理函数

procedure TForm1.Edit1Enter(Sender: TObject);
begin
TEdit(Sender).Color := clBlack;
end;
procedure TForm1.Edit1Exit(Sender: TObject);
begin
TEdit(Sender).Color := clWhite;
end;
 
谢谢知位
 
suninrain的答案不知如何用,leadyli的答案运行出错,参数不对
 
leadyli的答案通过改进,可以了。thanks
 
以上的答案可以解决,但还有一个缺陷,我的每个edit的OnEnter事件还有其它代码,加入以上的答案代后,那些代码不能执行了,还有没有更好的办法解决?
 
推荐一组控件,很漂亮,这些功能它都有了Raize
 
后退
顶部