+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 Aug 2025
    200 pontos
    Melhores 2025 Jul 28 - Aug 03
    1. Larson

      156 Pontos

    2. danilo.pereira

      96 Pontos

    3. danilo.pereira

      96 Pontos

    4. danilo.pereira

      96 Pontos

    5. luciano.fronza

      61 Pontos

    6. luciano.fronza

      61 Pontos

    7. luciano.fronza

      61 Pontos

    8. diuari.molinari

      52 Pontos

    9. diuari.molinari

      51 Pontos

    10. diuari.molinari

      51 Pontos

    517 perguntas
    566 respostas
    389 comentários
    704 usuários