tags:

views:

153

answers:

4

hi all

in my project i have two forms ,when i clicked show form 2 button in form1 ,form2 will pop up ,i want to terminate my whole application by clicking close button on form2 ,

can anyone please tell me how can i do this ?

+2  A: 

If you mean when a TButton called Close is clicked, then in the Button.OnClick event call Application.Terminate;

If you mean when the form's X button is clicked, then in Form2's OnClose event, call Application.Terminate;

_J_
thanks mate, worked fine .
noob
+9  A: 

Do not use Application.Terminate if you want your OnCloseQuery and OnClose handlers of the main app form to be called (for example to be able to cancel this or to ask whether to save modified files or such).

You can call

Application.MainForm.Close;

instead, from all forms (even the main form itself).

mghie
A: 

The post easiest mode is to user TerminateProcess(GetCurrentProcessID, 0); no ask, no freeze, no s*iet.

delphigeist
As the API help says, "The TerminateProcess function is used to unconditionally cause a process to exit. Use it only in extreme circumstances.". Application.Terminate calls the PostQuitMessage function which allows threads and other processes to exit gracefully.
_J_
A: 

Another option is to send a wm_Close message to the application/application.mainform

PostMessage(Application.Handle,wm_Close,0,0);

or

PostMessage(Application.MainForm.Handle,wm_Close,0,0);

This places the close request in the message queue, existing messages already in the message queue will continue to process first.

skamradt