Fórum quot;FindComponentquot; não funciona. #225362
12/04/2004
0
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
Curtir tópico
+ 0Posts
12/04/2004
Motta
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
12/04/2004
Lucas Silva
Continua dando o mesmo erro, com este código que você me passou ai.
Alguem sabe como resolver isto?
Gostei + 0
12/04/2004
Nildo
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
12/04/2004
Motta
Gostei + 0
12/04/2004
Lucas Silva
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
12/04/2004
Lucas Silva
Deve tá acontecendo alguma coisa aqui, a função FindComponent não dá nenhum resultado....
Gostei + 0
12/04/2004
Nildo
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
12/04/2004
Lucas Silva
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
12/04/2004
Nildo
Gostei + 0
12/04/2004
Lucas Silva
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
12/04/2004
Nildo
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
12/04/2004
Lucas Silva
Muito obrigado nildo, Valeu pela atenção ai.
Gostei + 0
12/04/2004
Lucas Silva
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
13/04/2004
Nildo
Gostei + 0
13/04/2004
Lucas Silva
é verdade, mais de qualquer forma valeu, já encontrei uma solução aqui.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)