+6 votos
45 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 | 45 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 (861 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

Melhores May 2020
  1. henrique.muller

    18 Pontos

  2. joao.melo

    14 Pontos

  3. joseglauber

    11 Pontos

  4. SlimShady

    7 Pontos

  5. willian.metalsystem

    6 Pontos

  6. lucas.melo

    3 Pontos

  7. fluipress.luciano

    2 Pontos

  8. pajucara.wallacef

    2 Pontos

  9. jean.filho

    2 Pontos

  10. maicon.pereira

    2 Pontos

200 pontos
Melhores 2020 May 25 - 31
    433 perguntas
    476 respostas
    346 comentários
    466 usuários