Fórum FormKeyDown e Form não modal. #623847
07/01/2026
0
Tenho Form01 onde abro o Form02 dentro de um panel.
Nos dois Forms esta com o
e quando aperto "ESC" está saindo do sistema em vem de fechar só o Form02
No Form02:
No Form01:
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...
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 Form02No 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
Curtir tópico
+ 0
Responder
Post mais votado
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.
Paulo
Responder
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)