GARANTIR DESCONTO

Fórum Click no Botão Fechar (X) do Form #329903

22/09/2006

0

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


Susi

Susi

Responder

Post mais votado

22/09/2006

Defina:
  procedure WM_Sys(var Msg:TMessage); message WM_SysCommand;
Depois:
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;



Siam

Siam
Responder

Gostei + 1

Mais Posts

22/09/2006

Rjun

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.


Responder

Gostei + 0

22/09/2006

Susi

Olá Rogério,

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


Responder

Gostei + 0

22/09/2006

Siam

Defina uma procedure do tipo message WM_SysCommand.
Se WParam = SC_Close e LParam <> 0; então foi clicado o X do Form.


Responder

Gostei + 0

22/09/2006

Susi

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


Responder

Gostei + 0

22/09/2006

Susi

Olá Siam...

Obrigada...Funcionou perfeitamente...


Um abraço

Susana Cardoso


Responder

Gostei + 0

23/09/2006

Output

Humm... e q tipow de parametro q passa pra esse Procedimento...


Tipow eu tava xamando o procedimneto no evento OnClose do form....


?


Responder

Gostei + 0

23/09/2006

Siam

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?


Responder

Gostei + 0

23/09/2006

Output

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?


Responder

Gostei + 0

25/09/2006

Susi

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


Responder

Gostei + 1

25/09/2006

Output

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....

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;



Responder

Gostei + 0

25/09/2006

Siam

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.


Responder

Gostei + 0

25/09/2006

Output

Pois eh kra,,, eu fiz issu,,, tirei a [b:4c868784c5]inherited[/b:4c868784c5] mais o form fecha do msm geito.


Responder

Gostei + 0

25/09/2006

Siam

Pois eh kra,,, eu fiz issu,,, tirei a inherited mais o form fecha do msm geito.
Poste o código


Responder

Gostei + 0

25/09/2006

Output

procedure TForm1.WM_Sys(var Msg:TMessage);
begin
  if (Msg.WParam = SC_Close) and (Msg.LParam <> 0) then
  begin
  
  end
  else
    inherited;
end; 
[/code]


Responder

Gostei + 0

25/09/2006

Siam

Não era para fechar o Form1.
Poste a declaração de WM_Sys em TForm1.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar