FindComponent em todo o form
Tenho um RadioButton que está dentro de um Painel, que está dentro de um tabsheet, que está dentro de um pagecontrol. Mas suponhamos que não tenho o nome do painel, nem do tabsheet (são criados em tempo de execucao, assim como o radiobutton).
Como localizar um componente, dentro do form, indepentemente de onde ele estiver? Sem usar o For vI = 1 to TComponents.... Gostaria de ter um find direto...
Obrigado.
Como localizar um componente, dentro do form, indepentemente de onde ele estiver? Sem usar o For vI = 1 to TComponents.... Gostaria de ter um find direto...
Obrigado.
Crpavao
Curtidas 0
Melhor post
Carlos Pavão
30/06/2015
Muito obrigado Mário. Na verdade nem lembro mais deste problema. Já faz 11 anos! Acho até interessante o seu interesse e é muito bom para as pessoas que pesquisam por aqui.
Grande abraço,
Grande abraço,
GOSTEI 1
Mais Respostas
Tap_pedroso
21/10/2004
já tentou application.findcomponent(´nomedocomponente´)?
GOSTEI 0
Crpavao
21/10/2004
Na verdade, eu acho o componente atraves de vRadio.FindComponent(´RA123´). Depois faco:
If assigned(vRadio) Then
showmessage(´achou´)
Tudo isto funciona mas qdo troco o showmessage por :
vRadio.Checked := True dá acess violation.
Dá prá saber?
Obrigado
If assigned(vRadio) Then
showmessage(´achou´)
Tudo isto funciona mas qdo troco o showmessage por :
vRadio.Checked := True dá acess violation.
Dá prá saber?
Obrigado
GOSTEI 0
Paulo_amorim
21/10/2004
Olá
Você está fazendo [b:229ee49a15]vRadio[/b:229ee49a15].FindComponent ? Creio que o correto seria
Espero que funcione
Até+
Você está fazendo [b:229ee49a15]vRadio[/b:229ee49a15].FindComponent ? Creio que o correto seria
vRadio := nil; vRadio := Form1.FindComponent(´RA123´); vRadio.Checked := Assigned(vRadio);
Espero que funcione
Até+
GOSTEI 0
Crpavao
21/10/2004
Paulo,
Dá erro pois vRadio está definico como tradioButton e, qdo usado o form1.component dá incompatibilidade entre tradiobutton e component.
Dá erro pois vRadio está definico como tradioButton e, qdo usado o form1.component dá incompatibilidade entre tradiobutton e component.
GOSTEI 0
Paulo_amorim
21/10/2004
Olá
Desculpe, eh necessário que se faça um TypeCast:
vRadio := TRadioButton( Form.FindComponent(´RA123´) );
Espero que ajude
Até+
Desculpe, eh necessário que se faça um TypeCast:
vRadio := TRadioButton( Form.FindComponent(´RA123´) );
Espero que ajude
Até+
GOSTEI 0
Crpavao
21/10/2004
Paulo,
O comando funcionou mas no assigned dá falso...
Tá f.., não?
O comando funcionou mas no assigned dá falso...
Tá f.., não?
GOSTEI 0
Fórum Vini
21/10/2004
[quote:4ee2e85e13=´Pavão´]Paulo,
O comando funcionou mas no assigned dá falso...
Tá f.., não?[/quote:4ee2e85e13]
Olá,
se dá falso é porque ele não achou..
Certifique-se de estar definindo o form como o Owner do componente na hora de criá-lo(Owner é diferente de Parent) :wink:
Espero ter ajudado,
Vinicius;
O comando funcionou mas no assigned dá falso...
Tá f.., não?[/quote:4ee2e85e13]
Olá,
se dá falso é porque ele não achou..
Certifique-se de estar definindo o form como o Owner do componente na hora de criá-lo(Owner é diferente de Parent) :wink:
rd:= TRadioButton.Create(Form1); //Nesse exemplo Form1 é o Owner de rd
Espero ter ajudado,
Vinicius;
GOSTEI 0
Crpavao
21/10/2004
Vinicius,
Obrigado pela mão, mas o owner do radiobutton é um Painel, que foi criado em tempo de execução e não quero referenciá-lo (usá-lo). Dá prá encontrar este radiobutton sem indicar o Painel? Pois aí também este painel está dentro de um tabsheet.
Obrigado pela mão, mas o owner do radiobutton é um Painel, que foi criado em tempo de execução e não quero referenciá-lo (usá-lo). Dá prá encontrar este radiobutton sem indicar o Painel? Pois aí também este painel está dentro de um tabsheet.
GOSTEI 0
Crpavao
21/10/2004
sobe, cara, sobe...
GOSTEI 0
Fórum Vini
21/10/2004
[quote:0ad687cf3c=´Pavão´]Vinicius,
Obrigado pela mão, mas o owner do radiobutton é um Painel, que foi criado em tempo de execução e não quero referenciá-lo (usá-lo). Dá prá encontrar este radiobutton sem indicar o Painel? Pois aí também este painel está dentro de um tabsheet.[/quote:0ad687cf3c]
Não vejo motivo para você não querer usá-lo, mas então você vai ter que criar o RadioButton tendo o formulário como Owner, então o código irá funcionar normalmente.. observe que isso não impedirá que o RadioButton fique dentro do Panel, pois quem determina isso é a propriedade Parent, o Owner serve somente para o objeto pai destruir os filhos quando ele for destruído tbm...
Obrigado pela mão, mas o owner do radiobutton é um Painel, que foi criado em tempo de execução e não quero referenciá-lo (usá-lo). Dá prá encontrar este radiobutton sem indicar o Painel? Pois aí também este painel está dentro de um tabsheet.[/quote:0ad687cf3c]
Não vejo motivo para você não querer usá-lo, mas então você vai ter que criar o RadioButton tendo o formulário como Owner, então o código irá funcionar normalmente.. observe que isso não impedirá que o RadioButton fique dentro do Panel, pois quem determina isso é a propriedade Parent, o Owner serve somente para o objeto pai destruir os filhos quando ele for destruído tbm...
GOSTEI 0
Paulo_amorim
21/10/2004
Olá
COmo bem explicou o Vinicius, não tem problema deixar o TRadioButton no painel com Owner no Form, desde que o Parent seja o Painel
Creio que colocando o Form como Owner ele acha certinho...
Até+
COmo bem explicou o Vinicius, não tem problema deixar o TRadioButton no painel com Owner no Form, desde que o Parent seja o Painel
Creio que colocando o Form como Owner ele acha certinho...
Até+
GOSTEI 0
Crpavao
21/10/2004
Valeu Paulo, valeu Vinicius. Acho que agora tenho informação suficiente para tocar op barco.
Qq coisa estamos aqui.
Obrigado pela força.
Té outra..
Qq coisa estamos aqui.
Obrigado pela força.
Té outra..
GOSTEI 0
Mário Filho
21/10/2004
...
var
vRadio: TRadioButton;
begin
vRadio := nil;
vRadio := TRadioButton(imp_guias_bolo.FindComponent('QRLabel'+trim(inttostr(i1))));
if Assigned(vRadio) then
TRadioButton(imp_guias_bolo.FindComponent('QRLabel'+trim(inttostr(i1)))).Checked:=true
else
TRadioButton(imp_guias_bolo.FindComponent('QRLabel'+trim(inttostr(i1)))).Checked:=false;
end;
var
vRadio: TRadioButton;
begin
vRadio := nil;
vRadio := TRadioButton(imp_guias_bolo.FindComponent('QRLabel'+trim(inttostr(i1))));
if Assigned(vRadio) then
TRadioButton(imp_guias_bolo.FindComponent('QRLabel'+trim(inttostr(i1)))).Checked:=true
else
TRadioButton(imp_guias_bolo.FindComponent('QRLabel'+trim(inttostr(i1)))).Checked:=false;
end;
GOSTEI 0
Mário Filho
21/10/2004
...
*// Corrigindo:
*// o form1 deve estar declarado na sua Uses lá em cima no inicio do programa
var
vRadio: TRadioButton;
begin
vRadio := nil;
vRadio := TRadioButton(Form1.FindComponent('QRLabel'+trim(inttostr(i1))));
if Assigned(vRadio) then
TRadioButton(Form1.FindComponent('QRLabel'+trim(inttostr(i1)))).Checked:=true
else
TRadioButton(Form1.FindComponent('QRLabel'+trim(inttostr(i1)))).Checked:=false;
end;
*// Corrigindo:
*// o form1 deve estar declarado na sua Uses lá em cima no inicio do programa
var
vRadio: TRadioButton;
begin
vRadio := nil;
vRadio := TRadioButton(Form1.FindComponent('QRLabel'+trim(inttostr(i1))));
if Assigned(vRadio) then
TRadioButton(Form1.FindComponent('QRLabel'+trim(inttostr(i1)))).Checked:=true
else
TRadioButton(Form1.FindComponent('QRLabel'+trim(inttostr(i1)))).Checked:=false;
end;
GOSTEI 0