quot;FindComponentquot; não funciona.
Bom dia pessoal.
Tenho que localizar um componente no form e o FindComponent não funciona. Olhem o código abaixo.
Ele sempre cai na msg falando que o componente não existe.
Alguem saberia me dizer aonde está o erro, ou se o findcomponent tem alguma restrição com componentes do tipo QRLabel??
Qualquer ajuda é bem vinda..
Lucas!
Tenho que localizar um componente no form e o FindComponent não funciona. Olhem o código abaixo.
qrlNomeSocio2: TQRLabel; qrlNomeSocio3: TQRLabel; qrlNomeSocio1: TQRLabel; // os componentes do form; .... procedure TForm.ButtonClick(sender: TObject); var i: integer; begin for i := 1 to 4 do begin if FindComponent(´qrlNomeSocio´+IntToStr(i)) <> nil then SHowMEssage(´O componente existe!´) else ShowMessage(´O componente não existe!´); end; end;
Ele sempre cai na msg falando que o componente não existe.
Alguem saberia me dizer aonde está o erro, ou se o findcomponent tem alguma restrição com componentes do tipo QRLabel??
Qualquer ajuda é bem vinda..
Lucas!
Lucas Silva
Curtidas 0
Respostas
Motta
12/04/2004
tente
procedure TForm.ButtonClick(sender: TObject);
var i: integer;
begin
for i := 1 to 4 do
begin
if Assigned(FindComponent(´qrlNomeSocio´+IntToStr(i))) then
SHowMEssage(´O componente existe!´)
else
ShowMessage(´O componente não existe!´);
end;
end;
procedure TForm.ButtonClick(sender: TObject);
var i: integer;
begin
for i := 1 to 4 do
begin
if Assigned(FindComponent(´qrlNomeSocio´+IntToStr(i))) then
SHowMEssage(´O componente existe!´)
else
ShowMessage(´O componente não existe!´);
end;
end;
GOSTEI 0
Lucas Silva
12/04/2004
Motta,
Continua dando o mesmo erro, com este código que você me passou ai.
Alguem sabe como resolver isto?
Continua dando o mesmo erro, com este código que você me passou ai.
Alguem sabe como resolver isto?
GOSTEI 0
Nildo
12/04/2004
Ok, vamos lá...
Os QrLabels ficam dentro de um TQuickRep certo?
O FindComponente NÃO pocura por componentes em todo seu formulário. Quando você coloca um QrLabel dentro de um TQuickRep, a propriedade PARENT destes QrLabels ficam sendo este TQuickRep.
Então o que você deve fazer é ao invez de usar o FindComponent, usar o [b:a4b93fb994]QuickRep1[/b:a4b93fb994].FindComponent
Será que isso resolve?
Os QrLabels ficam dentro de um TQuickRep certo?
O FindComponente NÃO pocura por componentes em todo seu formulário. Quando você coloca um QrLabel dentro de um TQuickRep, a propriedade PARENT destes QrLabels ficam sendo este TQuickRep.
Então o que você deve fazer é ao invez de usar o FindComponent, usar o [b:a4b93fb994]QuickRep1[/b:a4b93fb994].FindComponent
Será que isso resolve?
GOSTEI 0
Motta
12/04/2004
O Nildo tem razão !!
GOSTEI 0
Lucas Silva
12/04/2004
Nildo,
Isso que você pensou é totalmente lógico, mais também não deu certo.
Tentei fazer alguns exemplos(exemplos super básicos) aqui usando o FindComponent e nenhum deu certo.
Alguma sujestão? (ou exemplos)
Lucas!
Isso que você pensou é totalmente lógico, mais também não deu certo.
Tentei fazer alguns exemplos(exemplos super básicos) aqui usando o FindComponent e nenhum deu certo.
Alguma sujestão? (ou exemplos)
Lucas!
GOSTEI 0
Lucas Silva
12/04/2004
O Nildo tem razão !!
Deve tá acontecendo alguma coisa aqui, a função FindComponent não dá nenhum resultado....
GOSTEI 0
Nildo
12/04/2004
Na verdade ele retorna NIL se não achar.
Faz assim, clica sobre o QRLabel e apert SHIFT+ALT+F11 (object treeview) e veja dentro de qual controle (componente) que este QRLabel está. Vamos supor que esteja dentro de algum outro componente que esteja dentro do QuickRep, caso aconteça isso então nao vai funcionar. Então voce tem que fazer o mesmo esquema:
ComponenteOndeOLabelEstá.FindComponent
Faz assim, clica sobre o QRLabel e apert SHIFT+ALT+F11 (object treeview) e veja dentro de qual controle (componente) que este QRLabel está. Vamos supor que esteja dentro de algum outro componente que esteja dentro do QuickRep, caso aconteça isso então nao vai funcionar. Então voce tem que fazer o mesmo esquema:
ComponenteOndeOLabelEstá.FindComponent
GOSTEI 0
Lucas Silva
12/04/2004
Nildo,
O componente está dentro de um quickrep e de uma banda (rbTitle)..
Se eu deu QuickRep1.FindComponent não dá certo.
Eu teria que dá um FindComponent dentro da banda??
se sim, como eu faria isto....
Obrigado,
Lucas.
O componente está dentro de um quickrep e de uma banda (rbTitle)..
Se eu deu QuickRep1.FindComponent não dá certo.
Eu teria que dá um FindComponent dentro da banda??
se sim, como eu faria isto....
Obrigado,
Lucas.
GOSTEI 0
Nildo
12/04/2004
RbTitle.FindComponent
GOSTEI 0
Lucas Silva
12/04/2004
var c: TComponent c := qrband1.FindComponent(´qrlNomeSocio1´); if C <> nil then ShowMessage(´existe´);
Assim não deu certo....
var c: TComponent c := QuickReport1.Bands.TitleBand.FindComponent(´qrlNomeSocio1´); if C <> nil then ShowMessage(´existe´);
E assim também não deu certo..
Será que tem jeito de usar este findComponent dentro do quickReport?
Alguem já fez coisa do tipo?
GOSTEI 0
Nildo
12/04/2004
Ok, eu testei aqui e a seguinte solução funcionou:
Se não der a mensagem quer dizer que funcionou!
neste caso não importa que ele pertença à Banda X
if Formulario_do_QuickReport.FindComponent( ´qrlNomeSocio1´ ) = nil then ShowMessage(´Ihhhh, deu NIL´);
Se não der a mensagem quer dizer que funcionou!
neste caso não importa que ele pertença à Banda X
GOSTEI 0
Lucas Silva
12/04/2004
Agora funcionou blz,
Muito obrigado nildo, Valeu pela atenção ai.
Muito obrigado nildo, Valeu pela atenção ai.
GOSTEI 0
Lucas Silva
12/04/2004
Muito estranho nildo.
se eu colocar este código no formCreate do meu relatório funciona blz
agora se eu colocar numa procedure que eu criei não funciona mais..,.
você sabe o que pode ser?
se eu colocar este código no formCreate do meu relatório funciona blz
if FindComponent(´qrlNomeSocio1´) <> nil then SHowMEssage(´o componente existe´);
agora se eu colocar numa procedure que eu criei não funciona mais..,.
você sabe o que pode ser?
GOSTEI 0
Nildo
12/04/2004
Aí vc tem que analisar seu código...
GOSTEI 0
Lucas Silva
12/04/2004
Aí vc tem que analisar seu código...
é verdade, mais de qualquer forma valeu, já encontrei uma solução aqui.
GOSTEI 0