Ativar aba do Pagecontrol pelo DGBRID

Delphi

CRUD - Delphi

12/04/2022

Olá, eu estou tentando ativar uma aba do pagecontrol, quando eu clico duas vezes no registro, no dbgrid vai abrir a aba correspondente a referencia que esta ligada ao DEPARTAMENTO mais nao estou conseguindo ativar. (Eu uso esse codigo para o cadastro, pegando a referencia que esta no EDIT esse codigo funciona)
  FDQuery_Consulta.Close;
  FDQuery_Consulta.SQL.Clear;
  FDQuery_Consulta.SQL.Add('SELECT * FROM PRODUTOS');

  FDQuery_Consulta.Open;

  // Verifica qual Departamento, e desativa e habilita abas do PagaControl
  if FDQuery_ConsultaDEPARTAMENTO.Text = 'ADULTO' then
  begin
    Tab_Adulto.Visible := true;
    Tab_Infantil.Visible := false;
    Tab_Especial.Visible := false;
  end;
  if FDQuery_ConsultaDEPARTAMENTO.Text = 'INFANTIL' then
  begin
    Tab_Infantil.Visible := true;
    Tab_Adulto.Visible := false;
    Tab_Especial.Visible := false;

  end;
  if FDQuery_ConsultaDEPARTAMENTO.Text = 'ESPECIAL' then
  begin
    Tab_Especial.Visible := true;
    Tab_Adulto.Visible := false;
    Tab_Infantil.Visible := false;
  end;
end;
Upmilk

Upmilk

Curtidas 0

Melhor post

Emerson Nascimento

Emerson Nascimento

12/04/2022

em que momento a tabela de produtos é aberta? pelo que entendi você só precisa abrir uma vez durante a execução do programa
  FDQuery_Consulta.Close;
  FDQuery_Consulta.SQL.Clear;
  FDQuery_Consulta.SQL.Add('SELECT * FROM PRODUTOS');
  FDQuery_Consulta.Open;

o código abaixo deve ficar num evento que captura o posicionamento do registro.
pode ser no OnDataChange do TDataSource. Você não precisa daquela redundância de código. Reduzi pra você.
  // verifica qual departamento, e desativa e habilita abas do PagaControl
  Tab_Adulto.Visible := (FDQuery_ConsultaDEPARTAMENTO.Text = 'ADULTO' );
  Tab_Infantil.Visible := (FDQuery_ConsultaDEPARTAMENTO.Text = 'INFANTIL');
  Tab_Especial.Visible := (FDQuery_ConsultaDEPARTAMENTO.Text = 'ESPECIAL');
nota: eu não esconderia a aba,a penas desabilitaria.
daí, para acionar a aba, você implementa o OnDblClick do TDBGrid:
if (FDQuery_ConsultaDEPARTAMENTO.Text = 'ADULTO' ) then
  PageControl.ActivePage := Tab_Adulto
else
if (FDQuery_ConsultaDEPARTAMENTO.Text = 'INFANTIL') then
  PageControl.ActivePage := Tab_Infantil
else
  PageControl.ActivePage := Tab_Especial;


GOSTEI 1
POSTAR