Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FK.

[Resolvido] Percorrer componentes que estão dentro de um TTabShee

Recommended Posts

Opa..

 

Tenho um TPageControl, e dentro dele, tenho 3 TTabSheets(tabPessoaFisica, tabPessoaJuridica, tabPessoaOutros).

 

Cada um desses tabSheets, tem TDBEdits ligados apenas a um mesmo DataSource, que por sua vez está ligado apenas a um ClientDataSet(cdsEmpresa), ou seja, se o usuário preencher o campo nome como "Guilherme" na tab de pessoa física, e mudar para a tab de pessoa jurídica, então la também terá o nome "Guilherme", já que estão num mesmo datasource.

 

O cliente, NÃO pode ser uma pessoa física, jurídica ou 'outros' ao mesmo tempo. Então, a unica solução que encontrei para resolver isso, era desativar a propriedade datasource dos TDBEdits que estão dentro dos outros tabSheets, antes de gravar no banco.

 

Olha o código:

 

case index of
0: // tabPessoaFisica.TabIndex do pagecontrolPessoas(Fisica, juridica ou outros).
 begin
   for I := 0 to tabSheetFis.ComponentCount -1 do
     begin
     if tabSheetFis.Components[i] is TDBEdit then
       begin
         TDBEdit(tabSheetFis.Components[i]).DataSource := datasource;
         TDBEdit(tabSheetJur.Components[i]).DataSource := nil;
         TDBEdit(tabSheetOut.Components[i]).DataSource := nil;
       end;
     end;
  end;
//... Aqui eu vejo os outros indices, se for 1, é pessoa juridica, se for 2, é outros

 

Eu passo o índice do pageControl(PageControl.TabIndex) e CASO seja 0, quer dizer que a tabPessoaFisica está selecionada, então eu percorro todos os TDBEdits desse tabPessoaFisica, atribuo a propriedade datasource deles o meu datasource, e para os outros, eu atribuo para nil. Assim, eu só gravo dados de pessoa física, mas, quando chega na linha:

 

for I := 0 to tabSheetsFis.ComponentCount -1 do

 

A propriedade ComponentCount está com o valor 0, não sei porque, já que dentro do meu TabSheet tem um monte de componente.

 

O que eu posso fazer? Será que tem uma outra solução ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, consegui resolver o problema setando o valor dos outros DBEdits para null. Assim se o usuário digita um CPF, e digitar um CNPJ, então será dedicido de acordo com a tab que estiver selecionada, ou seja, se estiver na tab de pessoa fisica, o CPF permanece, e seto CNPJ para null.

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.