Saindo com a tecla ESC

Delphi

04/02/2008

Pessoal como faço pra ao clicar a tecla ESC ela pergunte ao usuario ´DESEJA SAIR´ caso sim ele feche a Tela!

obrigado!


Nilodp

Nilodp

Curtidas 0

Respostas

Nilodp

Nilodp

04/02/2008

e com a tecla shift + tab tb

obrigado


GOSTEI 0
Cd.beco_df

Cd.beco_df

04/02/2008

para vc fazer com que o esc funcione, coloque um botao como sair,
na propriedade cancel, para true, a propriedade modal result mrcancel

e no form para que venha a pergunta ao usuario. no evento on can Close


GOSTEI 0
Tiago Rizzon

Tiago Rizzon

04/02/2008

Oi!

Para aparecer a pergunta ao tentar fechar o form principal...
No evento onCloseQuery

canClose := Application.MessageBox(´Tem certeza que deseja sair?´, ´Atenção!´, MB_YESNO+MB_ICONQUESTION) = idYES;

Para vc fechar utilizando a tecla ESC, não aconselho vc colocar em campo ou grade, eu, particularmente, prefiro utilizar uma ação (componente TActionList com uma ação) com o comando Close;

Aí, na propriedade SecondaryShortCuts da ação, coloca assim:
ESC
SHIFT+TAB

Funciona, mas tem inumeros métodos prá fazer isso!
Esse é o meu método!

Espero q isso ajude!
Abraço..

;-)


GOSTEI 0
Nilodp

Nilodp

04/02/2008

Nao consegui achar a propriedade
SecondaryShortCuts da ação, coloca assim:
ESC
SHIT+TAB

eu fui no form principal em EVENTS
>>onCloseQuery
canClose := Application.MessageBox(´Tem certeza que deseja sair?´, ´Atenção!´, MB_YESNO+MB_ICONQUESTION) = idYES;

ai tudo bem! funfo! mais pra por os botoes pra executar esta acao nao consegui encontrar


GOSTEI 0
Tiago Rizzon

Tiago Rizzon

04/02/2008

Assim, como te disse tem muitas maneiras de sair do programa com a tecla ESC, aqui embaixo a minha maneira... Não sei se é a melhor, mas funciona legal!

Na paleta de componentes Standard coloca o componente TActionList no teu formulário, dá dois cliques em cima do ActionList e adiciona uma nova ação... Nas propriedades da ação vai ter SecondaryShortCuts, coloca assim:

ESC
SHIFT+TAB

Aí vc programa a ação com o comando Close, tri simples!

Outra maneira é vc programar no evento OnKeyPress do formulário algo tipo:

If Key = #27 then Close;

Abração, espero q ajude!

;-)


GOSTEI 0
Paullsoftware

Paullsoftware

04/02/2008

para detectar o precionamento das teclas você faz:
Mude a propriedade [b:b9920fc3af]KeyPreview[/b:b9920fc3af] do Form para True

no evento OnKeyDown faça
  if ( Key = VK_ESCAPE ) or (Shift = [ssShift]) and (Key = VK_TAB) then
  Close;

para detectar o fechamento do form você pode usar como nilodp mensionou:
no evento [b:b9920fc3af]OnQueryClose[/b:b9920fc3af] do form
CanClose := False;
CanClose := Application.MessageBox(´Tem certeza que deseja sair?´, ´Atenção!´, MB_YESNO+MB_ICONQUESTION) = idYES; 


espero ter ajudado :wink:


GOSTEI 0
Nilodp

Nilodp

04/02/2008

naum tava funcionando pq o form principal
a propriedade FORMSTYLE estava FsMDIform
ai mudei pra normal ai funfo
=/
estranho!


GOSTEI 0
Andepunk

Andepunk

04/02/2008

faz asssim no evento OnFormKeyPress

If Key=#27 Then
begin
Key:=0;
if (coloca a mensagem) Then
close;
end;


GOSTEI 0
POSTAR