Fórum mudar cores no foco #376089
16/10/2009
0
estou tentando colocar alguns codigo (procedure) achados na net num form pai, para q ele sirva para os forms filhos. mas esta dando erro:
---------------------------
procedure MudancaDeFoco(Sender: TObject);
var
I: integer;
Ed: TDBEdit;
begin
{ Percorre a matriz de componentes do form }
for I := 0 to [b:7ad1dbabcd]ComponentCount[/b:7ad1dbabcd] - 1 do
{ Se o componente é do tipo TDBEdit... }
if Components[I] is TDBEdit then
begin
{ Faz um type-casting pata o tipo TDBEdit }
Ed := Components[I] as TDBEdit;
{ Se o DBEdit está com o foco... }
if Ed.Focused then
Ed.Color := clGrayText { Cinza }
else
Ed.Color := clWhite; { Branco }
end;
end;
----------------------------------------------
o erro diz : undeclared identifier: ´ComponentCount´
antes estava dando erro dizendo: undeclared identifier: ´TDBEdit´
ms coloquei em Uses da interface as ´bibliotecas´ DB e DBCtrls, e passou, mas em ComponentCount e Components nao passa.
Agradeço se alguem puder ajudar..
BinaMOnn
Inajai
Curtir tópico
+ 0Posts
17/10/2009
Alanporto
Ex:
Form1.ComponentCount; Form1.Components[0];
se for o caso, use Self ao invés do nome do formulário.
Gostei + 0
17/10/2009
Adilsond
procedure MudancaDeFoco(Sender: TForm);
var
I: integer;
Ed: TDBEdit;
begin
{ Percorre a matriz de componentes do form }
for I := 0 to Sender.ComponentCount - 1 do
{ Se o componente é do tipo TDBEdit... }
if Sender.Components[I] is TDBEdit then
begin
{ Faz um type-casting pata o tipo TDBEdit }
Ed := Sender.Components[I] as TDBEdit;
{ Se o Edit está com o foco... }
if Ed.Focused then
Ed.Color := clGrayText { Cinza }
else
Ed.Color := clWhite; { Branco }
end;
end;MudancaDeFoco(Form1);
Gostei + 0
18/10/2009
Inajai
{ Private declarations }
procedure MudancaDeFoco(Sender: TObject);
public
{ Public declarations }
end;
var
frmPaiCadastro: TfrmPaiCadastro;
cdsOperacao: TClientDataSet;
implementation
{$R *.dfm}
{Esta rotina será chamada através do evento OnExit (perda do foco)
de todos os componentes do tipo TDBEdit que existirem no form. }
procedure MudancaDeFoco(Sender: TObject);
var
I: integer;
Ed: TDBEdit;
begin
{ Percorre a matriz de componentes do form }
for I := 0 to frmPaiCadastro.ComponentCount - 1 do
{ Se o componente é do tipo TDBEdit... }
if frmPaiCadastro.Components[I] is TDBEdit then
begin
{ Faz um type-casting pata o tipo TDBEdit }
Ed := frmPaiCadastro.Components[I] as TDBEdit;
{ Se o DBEdit está com o foco... }
if Ed.Focused then
Ed.Color := clGrayText { Cinza }
else
Ed.Color := clWhite; { Branco }
end;
end;
procedure TfrmPaiCadastro.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 TDBEdit. Se for,
associa o evento OnExit do componente com a procedure
´MudancaDeFoco´. }
for I := 0 to ComponentCount - 1 do
if Components[I] is TDBEdit then
(Components[I] as TDBEdit).OnExit := MudancaDeFoco;
end;
procedure TfrmPaiCadastro.FormActivate(Sender: TObject);
begin
MudancaDeFoco(nil);//Esta chamada é necessária para que o estado inicial seja controlado.
end;
coloquei como o alanporto disse colocar o nome do form antes:
frmPaiCadastro.ComponentCount
ele passa dai mas da o seguinte erro: [Fatal Error] uPai.pas(109): Program or unit ´uPai´ recursively uses itself
troquei e coloquei Self.ComponentCount e da o seguinte erro: [Error] uPai.pas(122): Undeclared identifier: ´Self´
e como o adilson falou tbm nao deu certo
Gostei + 0
18/10/2009
Alanporto
Gostei + 0
19/10/2009
Emerson Nascimento
Gostei + 0
20/10/2009
Inajai
o link do tópico postado pelo emerson.en resolveu a situação...
Obrigado!!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)