GARANTIR DESCONTO

Fórum mudar cores no foco #376089

16/10/2009

0

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


Inajai

Inajai

Responder

Posts

17/10/2009

Alanporto

vc tem q indicar o form pra ele contar o componentcount.

Ex:

Form1.ComponentCount;
Form1.Components[0];


se for o caso, use Self ao invés do nome do formulário.


Responder

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);



Responder

Gostei + 0

18/10/2009

Inajai

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


Responder

Gostei + 0

18/10/2009

Alanporto

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).


Responder

Gostei + 0

19/10/2009

Emerson Nascimento

veja se [url=http://forum.devmedia.com.br/viewtopic.php?t=72688]este tópico[/url] te ajuda.


Responder

Gostei + 0

20/10/2009

Inajai

Valeu a atenção de todos


o link do tópico postado pelo emerson.en resolveu a situação...


Obrigado!!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar