Click no Botão Fechar (X) do Form
Olá pessoal,
Como faço para saber se a pessoa [color=blue:de92124443]CLICOU[/color:de92124443] no Botão Fechar (X) do form?
Desde já agradeço
Susana Cardoso
Como faço para saber se a pessoa [color=blue:de92124443]CLICOU[/color:de92124443] no Botão Fechar (X) do form?
Desde já agradeço
Susana Cardoso
Susi
Curtidas 0
Melhor post
Siam
22/09/2006
Defina:Depois:
procedure WM_Sys(var Msg:TMessage); message WM_SysCommand;
procedure TForm1.WM_Sys(var Msg:TMessage); begin if (Msg.WParam = SC_Close) and (Msg.LParam <> 0) then begin // Clicou no ´X´ inherited; // Retire esta linha se não quiser fechar o Form end else inherited; end;
GOSTEI 1
Mais Respostas
Rjun
22/09/2006
Não sei se tem como saber que o form está sendo fechando pelo clique no botão X. Mas se você quer fazer algum tratamento antes de fechar o form, pode usar o evento OnCloseQuery.
GOSTEI 0
Susi
22/09/2006
Olá Rogério,
Realmente, posso fazer no OnCloseQUery, só que ali, mesmo que eu tecle ALT+F4 ele também vai fazer... e eu gostaria que só fizesse quando clicasse no Botão...
Mas agradeço sua ajuda...
Um abraço
Susana Cardoso
Não sei se tem como saber que o form está sendo fechando pelo clique no botão X. Mas se você quer fazer algum tratamento antes de fechar o form, pode usar o evento OnCloseQuery.
Realmente, posso fazer no OnCloseQUery, só que ali, mesmo que eu tecle ALT+F4 ele também vai fazer... e eu gostaria que só fizesse quando clicasse no Botão...
Mas agradeço sua ajuda...
Um abraço
Susana Cardoso
GOSTEI 0
Siam
22/09/2006
Defina uma procedure do tipo message WM_SysCommand.
Se WParam = SC_Close e LParam <> 0; então foi clicado o X do Form.
Se WParam = SC_Close e LParam <> 0; então foi clicado o X do Form.
GOSTEI 0
Susi
22/09/2006
Defina uma procedure do tipo message WM_SysCommand.
Se WParam = SC_Close e LParam <> 0; então foi clicado o X do Form.
Olá Siam,
Não consegui entender muito bem ... coloquei a procedure, mas dá erro nos parametros.... poderia me explicar melhor?
Fico muito grata
Susana
GOSTEI 0
Susi
22/09/2006
Olá Siam...
Obrigada...Funcionou perfeitamente...
Um abraço
Susana Cardoso
Obrigada...Funcionou perfeitamente...
Um abraço
Susana Cardoso
GOSTEI 0
Output
22/09/2006
Humm... e q tipow de parametro q passa pra esse Procedimento...
Tipow eu tava xamando o procedimneto no evento OnClose do form....
?
Tipow eu tava xamando o procedimneto no evento OnClose do form....
?
GOSTEI 0
Siam
22/09/2006
Humm... e q tipow de parametro q passa pra esse Procedimento...
Tipow eu tava xamando o procedimneto no evento OnClose do form....
Não entendí. Que parâmetro e qual procedimento você se refere?GOSTEI 0
Output
22/09/2006
procedure TForm1.WM_Sys(var Msg:TMessage); begin if (Msg.WParam = SC_Close) and (Msg.LParam <> 0) then begin // Clicou no ´X´ inherited; // Retire esta linha se não quiser fechar o Form end else inherited; end;
O procedimento acima,,, eu tava xamando ele no evento onClose do form,,
mah tm q passa um parametro,,, me da um exemplo?
GOSTEI 0
Susi
22/09/2006
Olá Rodrigo....
Você não precisa chamar ele no Evento OnClose do Form...
É só colocar a procedure na unit do form que vc quer.... e pronto ele faz sozinho... não precisa passar parametros....
Um abraço...
Susana
Você não precisa chamar ele no Evento OnClose do Form...
É só colocar a procedure na unit do form que vc quer.... e pronto ele faz sozinho... não precisa passar parametros....
Um abraço...
Susana
GOSTEI 1
Output
22/09/2006
Brigado Suzana pela dica....
Eu fiz como vc disse,,,e tb retirei a linha inherited,,, pra c o kra clikar no x pra fechar ,, naum fexe,, somente feche c ele clikar no botao fechar....
Eu fiz como vc disse,,,e tb retirei a linha inherited,,, pra c o kra clikar no x pra fechar ,, naum fexe,, somente feche c ele clikar no botao fechar....
procedure TForm1.WM_Sys(var Msg:TMessage); begin if (Msg.WParam = SC_Close) and (Msg.LParam <> 0) then begin // Clicou no ´X´ RETIREI A LINHA Q ESTAVA AKI // Retire esta linha se não quiser fechar o Form end else inherited; end;
GOSTEI 0
Siam
22/09/2006
Na verdade quando é declarada uma procedure do tipo WM_SysCommand, ela intercepta as msgs de sistema que o Windows manda para o seu Form quando vc mexe na barra de título. Se vc colocar [b:cd3304b489]inherited[/b:cd3304b489], o Windows continua a processar a msg e faz o esperado; se não colocar, o Windows não faz mais nada.
GOSTEI 0
Output
22/09/2006
Pois eh kra,,, eu fiz issu,,, tirei a [b:4c868784c5]inherited[/b:4c868784c5] mais o form fecha do msm geito.
GOSTEI 0
Siam
22/09/2006
Pois eh kra,,, eu fiz issu,,, tirei a inherited mais o form fecha do msm geito.
Poste o códigoGOSTEI 0
Output
22/09/2006
procedure TForm1.WM_Sys(var Msg:TMessage); begin if (Msg.WParam = SC_Close) and (Msg.LParam <> 0) then begin end else inherited; end;
GOSTEI 0
Siam
22/09/2006
Não era para fechar o Form1.
Poste a declaração de WM_Sys em TForm1.
Poste a declaração de WM_Sys em TForm1.
GOSTEI 0
Output
22/09/2006
Perdao kra.... dei uma olhada eu tava fazendo nhaca na declaração de WM_Sys em TForm1.......
agora deu certinho vlw kra
agora deu certinho vlw kra
GOSTEI 0