如何使窗体的所有Edit控件获得焦点时,Edit控件的属性Color为Blue?

lumina 2003-08-21 03:06:32
如何使窗体的所有Edit控件获得焦点时,Edit控件的属性Color为Blue?
...全文
40 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxpbuaa 2003-08-22
  • 打赏
  • 举报
回复
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Edit1Enter(Sender: TObject);
procedure Edit2Enter(Sender: TObject);
private
PreEnter, PreExit: Array of TNotifyEvent;
public
{ Public declarations }
published
procedure EditEnter(Sender: TObject);
procedure EditExit(Sender: TObject);
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.EditEnter(Sender: TObject);
begin
with TEdit(Sender) do
begin
Color := clBlue;
if Assigned(PreEnter[ComponentIndex]) then
PreEnter[ComponentIndex](Sender);
end;
end;

procedure TForm1.EditExit(Sender: TObject);
begin
with TEdit(Sender) do
begin
Color := clWindow;
if Assigned(PreExit[ComponentIndex]) then
PreExit[ComponentIndex](Sender);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
begin
SetLength(PreEnter, ComponentCount);
SetLength(PreExit, ComponentCount);
for I := 0 to ComponentCount-1 do
if Components[I].InheritsFrom(TEdit) then
with TEdit(Components[I]) do
begin
PreEnter[I] := OnEnter;
OnEnter := EditEnter;
PreExit[I] := OnExit;
OnExit := EditExit;
end;
end;

procedure TForm1.Edit1Enter(Sender: TObject);
begin
ShowMessage('Edit1Enter');
end;

procedure TForm1.Edit2Enter(Sender: TObject);
begin
ShowMessage('Edit2Enter');
end;

end.

————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
ZyxIp 2003-08-22
  • 打赏
  • 举报
回复
将TEDIT重新继承一下。
lumina 2003-08-22
  • 打赏
  • 举报
回复
lxpbuaa(桂枝香在故国晚秋) :
如果我在ONENTER,ONEXIT上有其他的代码,这些代码会一同执行。如何能够更加优化啊?
mingjunlee 2003-08-21
  • 打赏
  • 举报
回复
同意楼上的
lxpbuaa 2003-08-21
  • 打赏
  • 举报
回复
procedure TForm1.Edit1Enter(Sender: TObject);
begin
TEdit(Sender).Color := clBlue;
end;

procedure TForm1.Edit1Exit(Sender: TObject);
begin
TEdit(Sender).Color := clWindow;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
begin
for I := 0 to ControlCount-1 do
if Controls[I].InheritsFrom(TEdit) then
with TEdit(Controls[I]) do
begin
OnEnter := Edit1.OnEnter;
OnExit := Edit1.OnExit;
end;
end;

————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
jy_1201 2003-08-21
  • 打赏
  • 举报
回复
先写一个Edit组件的OnEnter事件
例:
(Sender as TEdit).Color:=clYellow;
OnExit事件
(sender as TEdit).color:=clWhite;
然后设置所有的Edit控件的OnEnter和OnExit事件为上面的这两个事件。
我想这样就行了吧。

5,388

社区成员

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

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