+6 votos
136 visitas
Como deixar invisível utilizando GenPanelFields um campo que consta em mais de uma tab de uma tabela?

Ex: quero deixar invisível o campo XXXXX que consta na segunda tab de um campo de uma tabela, porém quando seto para ficar invisível ele respeita apenas o campo da primeira tab, o da segunda continua visível.
por (29 pontos)
editado por | 136 visitas

1 Resposta

+3 votos
Melhor resposta

Não existe um jeito simples quando se tem mais de um componente para o mesmo campo. Mas é possível fazer isto percorrendo os campos da página e configurando a visibilidade do componente desejado:

var
  i: Integer;
  pg: TDBPageControl;
  tab: TTabSheet;
begin
  pg := TDBPageControl(BGenPanelFields1.GetField('TAB'));
  tab := pg.Pages[1]; // Obtém a segunda página, talvez conferir o nome da tab também, para se proteger de alterações nos metadados
  for i := 0 to BGenPanelFields1.ControlList.Count - 1 do begin
    if (TControl(BGenPanelFields1.ControlList[i]).ClassName = 'TBDBLookupTxt') and
      (TControl(BGenPanelFields1.ControlList[i]).Parent = tab) then begin
      if (TBDBLookupTxt(BGenPanelFields1.ControlList[i]).Field.FieldName) = 'CAMPO' then begin
        TBDBLookupTxt(BGenPanelFields1.ControlList[i]).Visible := False;
        Exit;
      end;
    end;
  end;
end;

 

por (865 pontos)
selecionada por
Nestes casos onde o campo está repedido. Se for possível agrupe os campos em um grupo, e de nome único a ele. Assim evitaria o problema.

Perguntas relacionadas

+2 votos
1 resposta
perguntado 29 Out, 2019 por rodrigo.castagnaro (23 pontos) | 89 visitas
+2 votos
1 resposta
perguntado 21 Out, 2020 por Thiago Coutinho (15 pontos) | 47 visitas
Melhores Apr 2026
  1. CeceliaWysel

    5 Pontos

  2. VernonSchaw

    5 Pontos

  3. MargieOsterh

    5 Pontos

200 pontos
Melhores 2026 Apr 06 - 12
  1. danilo.pereira

    96 Pontos

  2. danilo.pereira

    96 Pontos

  3. danilo.pereira

    96 Pontos

  4. willian.metalsystem

    69 Pontos

  5. henrique.muller

    62 Pontos

  6. luciano.fronza

    61 Pontos

  7. luciano.fronza

    61 Pontos

  8. luciano.fronza

    61 Pontos

  9. diuari.molinari

    52 Pontos

  10. diuari.molinari

    51 Pontos

518 perguntas
567 respostas
389 comentários
772 usuários