Fórum Problema para achar componente criado em tempo de execução #380286

29/06/2010

0

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 ?
Rodrigo Ferreira

Rodrigo Ferreira

Responder

Posts

29/06/2010

Wilson Junior

Quando você der um Create no seu componente, passe como parâmetro o Form1.

Espero ter colaborado.
Responder

Gostei + 0

29/06/2010

Rodrigo Ferreira

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

Gostei + 0

29/06/2010

Wilson Junior

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

Gostei + 0

29/06/2010

Marco Salles

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  
Responder

Gostei + 0

29/06/2010

Marco Salles

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  
..   EDITANDO .. Ja que não consegui Editar pelas vias de Fato
Responder

Gostei + 0

29/06/2010

Rodrigo Ferreira

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

Gostei + 0

29/06/2010

Marco Salles

  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
Responder

Gostei + 0

29/06/2010

Rodrigo Ferreira

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 ?
Responder

Gostei + 0

29/06/2010

Wilson Junior

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

Gostei + 0

29/06/2010

Wilson Junior

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

Gostei + 0

29/06/2010

Marco Salles

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

Gostei + 0

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

Aceitar