Problema para achar componente criado em tempo de execução
Eu criei uma série de TchecklistsBox em tempo de execução,
só que eles não aparecem no Form1.ComponentsCount, para eu dar um SelectAll em todos eles.
Alguém pode me sugerir algo que localize estes componentes ?
só que eles não aparecem no Form1.ComponentsCount, para eu dar um SelectAll em todos eles.
Alguém pode me sugerir algo que localize estes componentes ?
Rodrigo Ferreira
Curtidas 0
Respostas
Wilson Junior
29/06/2010
Quando você der um Create no seu componente, passe como parâmetro o Form1.
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0
Rodrigo Ferreira
29/06/2010
Ele está dentro de um TabSheet que também é criado em tempo de execução:
TabSheet := TTabSheet.Create(Self); TabSheet.PageControl := PageControl1; TabSheet.Name := 'TabSheet' + IntToStr(Pagina); TabSheet.Caption := DM.qryGen.FieldByName('caption_form').AsString;
CheckListBox := TCheckListBox.Create(TabSheet); CheckListBox.Parent := TabSheet; CheckListBox.Name := 'CheckListBox' + IntToStr(Pagina); CheckListBox.Align := alClient;
O meu problema é que depois de saído do Loop de criação dos objetos eu não consigo achá-lo no Form1.ComponentsCount..
Ele não acha nenhum componente TCheckListBox.
TabSheet := TTabSheet.Create(Self); TabSheet.PageControl := PageControl1; TabSheet.Name := 'TabSheet' + IntToStr(Pagina); TabSheet.Caption := DM.qryGen.FieldByName('caption_form').AsString;
CheckListBox := TCheckListBox.Create(TabSheet); CheckListBox.Parent := TabSheet; CheckListBox.Name := 'CheckListBox' + IntToStr(Pagina); CheckListBox.Align := alClient;
O meu problema é que depois de saído do Loop de criação dos objetos eu não consigo achá-lo no Form1.ComponentsCount..
Ele não acha nenhum componente TCheckListBox.
GOSTEI 0
Wilson Junior
29/06/2010
Bom, no seu Form1.ComponentCount, você somente irá achar os componentes nos quais forma criados com o Form1 como parâmetro, no seu caso os TTabSheet irão aparecer, já os seus TCheckListBox irão aparecer dentro do TabSheet.ComponentCount.
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0
Marco Salles
29/06/2010
Ele está dentro de um TabSheet que também é criado em tempo de execução:
TabSheet := TTabSheet.Create(Self); TabSheet.PageControl := PageControl1; TabSheet.Name := 'TabSheet' + IntToStr(Pagina); TabSheet.Caption := DM.qryGen.FieldByName('caption_form').AsString;
CheckListBox := TCheckListBox.Create(TabSheet); CheckListBox.Parent := TabSheet; CheckListBox.Name := 'CheckListBox' + IntToStr(Pagina); CheckListBox.Align := alClient;
O meu problema é que depois de saído do Loop de criação dos objetos eu não consigo achá-lo no Form1.ComponentsCount..
Ele não acha nenhum componente TCheckListBox.
..
Ou use como o amigo anteriormente citou ou altere o Owner do CheckListBox
CheckListBox := TCheckListBox.Create(TabSheet); e deixe o Parent Como esta
TabSheet := TTabSheet.Create(Self); TabSheet.PageControl := PageControl1; TabSheet.Name := 'TabSheet' + IntToStr(Pagina); TabSheet.Caption := DM.qryGen.FieldByName('caption_form').AsString;
CheckListBox := TCheckListBox.Create(TabSheet); CheckListBox.Parent := TabSheet; CheckListBox.Name := 'CheckListBox' + IntToStr(Pagina); CheckListBox.Align := alClient;
O meu problema é que depois de saído do Loop de criação dos objetos eu não consigo achá-lo no Form1.ComponentsCount..
Ele não acha nenhum componente TCheckListBox.
GOSTEI 0
Marco Salles
29/06/2010
Ele está dentro de um TabSheet que também é criado em tempo de execução:
TabSheet := TTabSheet.Create(Self); TabSheet.PageControl := PageControl1; TabSheet.Name := 'TabSheet' + IntToStr(Pagina); TabSheet.Caption := DM.qryGen.FieldByName('caption_form').AsString;
CheckListBox := TCheckListBox.Create(TabSheet); CheckListBox.Parent := TabSheet; CheckListBox.Name := 'CheckListBox' + IntToStr(Pagina); CheckListBox.Align := alClient;
O meu problema é que depois de saído do Loop de criação dos objetos eu não consigo achá-lo no Form1.ComponentsCount..
Ele não acha nenhum componente TCheckListBox.
..
Ou use como o amigo anteriormente citou ou altere o Owner do CheckListBox
CheckListBox := TCheckListBox.Create(self); e deixe o Parent Como esta
TabSheet := TTabSheet.Create(Self); TabSheet.PageControl := PageControl1; TabSheet.Name := 'TabSheet' + IntToStr(Pagina); TabSheet.Caption := DM.qryGen.FieldByName('caption_form').AsString;
CheckListBox := TCheckListBox.Create(TabSheet); CheckListBox.Parent := TabSheet; CheckListBox.Name := 'CheckListBox' + IntToStr(Pagina); CheckListBox.Align := alClient;
O meu problema é que depois de saído do Loop de criação dos objetos eu não consigo achá-lo no Form1.ComponentsCount..
Ele não acha nenhum componente TCheckListBox.
GOSTEI 0
Rodrigo Ferreira
29/06/2010
Realmente não está funcionando ou não estou entendendo as respostas de vocês.
É algo simples, eu leio registros do Oracle...
em uma tabela com 2 campos....
NOME - OPÇÔESRODRIGO - OP1RODRIGO - OP2RODRIGO - OP3RODRIGO - OP4RODRIGO - OP5RODRIGO - OP6ROBERTO - OP1ROBERTO - OP2ROBERTO - OP3
O Form tem logo de cara um PageControl criado....
Para Cada nome ele cria um TabSheet e dentro deste TabSheet tem um CheckListBox com as OPs para este nome..
O meu problema é que alguns nomes terão centenas de OPS então eu quero clickar em um check box e selecionar todos simultaneamente.
Obs.:Quando eu vou clicar no Feedback diz que a página não foi encontrada.
É algo simples, eu leio registros do Oracle...
em uma tabela com 2 campos....
NOME - OPÇÔESRODRIGO - OP1RODRIGO - OP2RODRIGO - OP3RODRIGO - OP4RODRIGO - OP5RODRIGO - OP6ROBERTO - OP1ROBERTO - OP2ROBERTO - OP3
O Form tem logo de cara um PageControl criado....
Para Cada nome ele cria um TabSheet e dentro deste TabSheet tem um CheckListBox com as OPs para este nome..
O meu problema é que alguns nomes terão centenas de OPS então eu quero clickar em um check box e selecionar todos simultaneamente.
Obs.:Quando eu vou clicar no Feedback diz que a página não foi encontrada.
GOSTEI 0
Marco Salles
29/06/2010
Vc não esta entedendo o que ???
Olha se ao Inves de Criar esses CheckListBox passando como Proprietário o TabSheet passe o Formulário
Vc esta Fazendo assim:
CheckListBox := TCheckListBox.Create(TabSheet);
Faça assim
CheckListBox := TCheckListBox.Create(self);
Desse modo vc vai acha-los no Form1.ComponentsCount . Melhor Ainda é Usar o Form.ControlCount ou usar
o ForEach para Versão Delphi2010
GOSTEI 0
Rodrigo Ferreira
29/06/2010
Valeu Marco!
Agora foi!!
Desculpe a desatenção, estou olhando para este fonte desde as 8:00h e me passou despercebido o detalhe do self!
Como fazer para encerrar o chamado ?
Agora foi!!
Desculpe a desatenção, estou olhando para este fonte desde as 8:00h e me passou despercebido o detalhe do self!
Como fazer para encerrar o chamado ?
GOSTEI 0
Wilson Junior
29/06/2010
O ComponentCount conta somente os componentes que estão vinculados a ele.
Exemplo:
Form1 possui 1 TEdit e 1 TPageControl com 3 TTabSheet, o TabSheet1 possui 2 TCheckListBox, oTabSheet2 possui 7 TCheckListBox e o TabSheet3 possui 1 TCheckListBox.
Logo:
Form1.ComponentCount = 2 (TEdit e TPageControl)
TPageControl.ComponentCount = 3 (TTabSheet1, TTabSheet2 e TTabSheet3)
TTabSheet1.ComponentCount = 2 (2 TCheckListBox)
TTabSheet1.ComponentCount = 7 (2 TCheckListBox)
TTabSheet1.ComponentCount = 1 (2 TCheckListBox)
Espero ter colaborado.
Exemplo:
Form1 possui 1 TEdit e 1 TPageControl com 3 TTabSheet, o TabSheet1 possui 2 TCheckListBox, oTabSheet2 possui 7 TCheckListBox e o TabSheet3 possui 1 TCheckListBox.
Logo:
Form1.ComponentCount = 2 (TEdit e TPageControl)
TPageControl.ComponentCount = 3 (TTabSheet1, TTabSheet2 e TTabSheet3)
TTabSheet1.ComponentCount = 2 (2 TCheckListBox)
TTabSheet1.ComponentCount = 7 (2 TCheckListBox)
TTabSheet1.ComponentCount = 1 (2 TCheckListBox)
Espero ter colaborado.
GOSTEI 0
Wilson Junior
29/06/2010
O ComponentCount conta somente os componentes que estão vinculados a ele.
Exemplo:
Form1 possui 1 TEdit e 1 TPageControl com 3 TTabSheet, o TabSheet1 possui 2 TCheckListBox, oTabSheet2 possui 7 TCheckListBox e o TabSheet3 possui 1 TCheckListBox.
Logo:
Form1.ComponentCount = 2 (TEdit e TPageControl)
TPageControl.ComponentCount = 3 (TTabSheet1, TTabSheet2 e TTabSheet3)
TTabSheet1.ComponentCount = 2 (2 TCheckListBox)
TTabSheet2.ComponentCount = 7 (2 TCheckListBox)
TTabSheet3.ComponentCount = 1 (2 TCheckListBox)
Espero ter colaborado.
Exemplo:
Form1 possui 1 TEdit e 1 TPageControl com 3 TTabSheet, o TabSheet1 possui 2 TCheckListBox, oTabSheet2 possui 7 TCheckListBox e o TabSheet3 possui 1 TCheckListBox.
Logo:
Form1.ComponentCount = 2 (TEdit e TPageControl)
TPageControl.ComponentCount = 3 (TTabSheet1, TTabSheet2 e TTabSheet3)
TTabSheet1.ComponentCount = 2 (2 TCheckListBox)
TTabSheet2.ComponentCount = 7 (2 TCheckListBox)
TTabSheet3.ComponentCount = 1 (2 TCheckListBox)
Espero ter colaborado.
GOSTEI 0
Marco Salles
29/06/2010
O ComponentCount conta somente os componentes que estão vinculados a ele.
Exemplo:
Form1 possui 1 TEdit e 1 TPageControl com 3 TTabSheet, o TabSheet1 possui 2 TCheckListBox, oTabSheet2 possui 7 TCheckListBox e o TabSheet3 possui 1 TCheckListBox.
Logo:
Form1.ComponentCount = 2 (TEdit e TPageControl)
TPageControl.ComponentCount = 3 (TTabSheet1, TTabSheet2 e TTabSheet3)
TTabSheet1.ComponentCount = 2 (2 TCheckListBox)
TTabSheet2.ComponentCount = 7 (2 TCheckListBox)
TTabSheet3.ComponentCount = 1 (2 TCheckListBox)
Espero ter colaborado.
...
Cuidado com este expressão.. Vinculado
O ComponentCount conta somente os componentes que estão vinculados a ele.Exemplo:
Form1 possui 1 TEdit e 1 TPageControl com 3 TTabSheet, o TabSheet1 possui 2 TCheckListBox, oTabSheet2 possui 7 TCheckListBox e o TabSheet3 possui 1 TCheckListBox.
Logo:
Form1.ComponentCount = 2 (TEdit e TPageControl)
TPageControl.ComponentCount = 3 (TTabSheet1, TTabSheet2 e TTabSheet3)
TTabSheet1.ComponentCount = 2 (2 TCheckListBox)
TTabSheet2.ComponentCount = 7 (2 TCheckListBox)
TTabSheet3.ComponentCount = 1 (2 TCheckListBox)
Espero ter colaborado.
Pode confundir os mais inexperientes ou provocar erros como o que nos vimos neste tópico Form1 possui 1 TEdit e 1 TPageControl com 3 TTabSheet, o TabSheet1 possui 2 TCheckListBox, oTabSheet2 possui 7 TCheckListBox e o TabSheet3 possui 1 TCheckListBox.
Logo:
Form1.ComponentCount = 15 (1 TEdit e 1 TPageControl 3TTabSheet1 10TCheckListBox)
Em Tempo de Designe o Proprietário sera Invariavelmente o Formulário
GOSTEI 0