mudar cores no foco
esse é meu primeiro post, entao desculpe se algo estiver errado na ´postagem´.
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
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
Curtidas 0
Respostas
Alanporto
16/10/2009
vc tem q indicar o form pra ele contar o componentcount.
Ex:
se for o caso, use Self ao invés do nome do formulário.
Ex:
Form1.ComponentCount; Form1.Components[0];
se for o caso, use Self ao invés do nome do formulário.
GOSTEI 0
Adilsond
16/10/2009
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
Inajai
16/10/2009
private
{ 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
{ 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
Alanporto
16/10/2009
tenta a opção do AdilsonD, pq a opção q eu passei não funcionará em alguns casos (dependendo onde vc vai usar, Self pode não estar atribuído ainda).
GOSTEI 0
Emerson Nascimento
16/10/2009
veja se [url=http://forum.devmedia.com.br/viewtopic.php?t=72688]este tópico[/url] te ajuda.
GOSTEI 0
Inajai
16/10/2009
Valeu a atenção de todos
o link do tópico postado pelo emerson.en resolveu a situação...
Obrigado!!
o link do tópico postado pelo emerson.en resolveu a situação...
Obrigado!!
GOSTEI 0