quinta-feira, 15 de outubro de 2009

Mudar a cor do Edit ao receber o foco

. quinta-feira, 15 de outubro de 2009

Alguns programas mostram o Edit que está com o foco em uma
cor diferente dos demais. Como fazer isto em Delphi?
Na seção private do form declare o procedimento abaixo:
private
procedure MudancaDeFoco(Sender: TObject);
public
end;
Na seção implementation, escreva o código do procedimento:
{ Esta rotina será chamada através do evento OnExit (perda do foco)
  de todos os componentes do tipo TEdit que existirem no form. }
procedure TForm1.MudancaDeFoco(Sender: TObject);
var
  I: integer;
  Ed: TEdit;
begin
{ Percorre a matriz de componentes do form }
for I := 0 to ComponentCount - 1 do
{ Se o componente é do tipo TEdit... }
if Components[I] is TEdit then
begin
{ Faz um type-casting pata o tipo TEdit }
      Ed := Components[I] as TEdit;
{ Se o Edit está com o foco... }
if Ed.Focused then
        Ed.Color := clYellow { Amarelo }
else
        Ed.Color := clWhite; { Branco }
end;
end;
No evento OnCreate do Form, coloque o código abaixo:
procedure TForm1.FormCreate(Sender: TObject);
var
  I: integer;
begin
{ Percorre a lista de componentes do form (matriz de componentes)
    e verifica cada componente para saber se é um TEdit. Se for,
    associa o evento OnExit do componente com a procedure
    "MudancaDeFoco". }
for I := 0 to ComponentCount - 1 do
if Components[I] is TEdit then
(Components[I] as TEdit).OnExit := MudancaDeFoco;
end;
No evento OnActivate coloque:
procedure TForm1.FormActivate(Sender: TObject);
begin
{ Esta chamada é necessária para que o estado inicial seja
    controlado. }
  MudancaDeFoco(nil);
end;

0 comentários:

Postar um comentário

Robôs 19