FormKeyDown e Form não modal.

Delphi

07/01/2026

Tenho Form01 onde abro o Form02 dentro de um panel.
procedure TfrmTelaPrincipal.btnTelaPrincipal_MembrosClick(Sender: TObject);
begin
  vOpcaoMenu := 'MEMBROS';
  if FrmTag > -1 then
    FechaFrom(FrmTag);

  if frmManutencaoMembros = nil then
  begin
    pnTelas.BringToFront;
    pnTelas.Visible := True;
    Application.CreateForm(TfrmManutencaoMembros,frmManutencaoMembros);
    frmManutencaoMembros.Parent := pnTelas;
    frmManutencaoMembros.Show;
  end;
end;


Nos dois Forms esta com o
KeyPreview := True

e quando aperto "ESC" está saindo do sistema em vem de fechar só o Form02

No Form02:
    if (key=VK_ESCAPE) and (pnStatusManutencao.Caption='Consultando') then
      btnTelaInicialClick(btnTelaInicial); // Fecha Form02


No Form01:
  if (key=VK_ESCAPE) and (FrmTag <= 0)  then
  begin
    EncerraSistema;
  end;


FrmTag eu uso para identificar se tem form aberto e fechar, tipo se eu for abrir o form03 e o form02 estiver aberto o form02 é fechado.
O que ocorre é no FormKeyDown do form02 ao fechar ele zera a variável FrmTag e quando vai FormKeyDown do form01 a variável já esta zerada e com isso Fecha o sistema.

Queria umas ideias de como fazer isso funcionar...
Eduardo Silva

Eduardo Silva

Curtidas 0

Melhor post

Paulo

Paulo

09/01/2026

if (key=VK_ESCAPE) and (pnStatusManutencao.Caption='Consultando') then
  btnTelaInicialClick(btnTelaInicial); // Fecha Form02


Presumindo que este código esteja dentro do KeyDown do form2

acrescente o

Key := 0;  


ficando assim

if (key=VK_ESCAPE) and (pnStatusManutencao.Caption='Consultando') then
Key := 0;  
btnTelaInicialClick(btnTelaInicial); // Fecha Form02


Isso vai impedir do ESC chegar até o form principal.

GOSTEI 1
POSTAR