Science, Tech, Math › Computer Science How to Create, Use, and Close Forms in Delphi Understanding the Life Cycle of a Delphi Form Share Flipboard Email Print Chris Pecoraro/E+/Getty Images Computer Science Delphi Programming Delphi Tutorials Advanced PHP Programming Perl Python Java Programming Javascript Programming C & C++ Programming Ruby Programming Visual Basic View More By Zarko Gajic Zarko Gajic Twitter Computer Science Expert MSCS, Computer Science, University of Osijek Zarko Gajic is experienced in SQL and has working knowledge of DB systems such as MS SQL Server, Firebird, Interbase, and Oracle. He is also proficient in XML, DHTML, and JavaScript. Learn about our Editorial Process Updated on February 08, 2019 In Delphi, every project has at least one window -- the program's main window. All windows of a Delphi application are based on TForm object. Form Form objects are the basic building blocks of a Delphi application, the actual windows with which a user interacts when they run the application. Forms have their own properties, events, and methods with which you can control their appearance and behavior. A form is actually a Delphi component, but unlike other components, a form doesn't appear on the component palette. We normally create a form object by starting a new application (File | New Application). This newly created form will be, by default, the application's main form - the first form created at runtime. Note: To add an additional form to Delphi project, select File|New Form. Birth OnCreateThe OnCreate event is fired when a TForm is first created, that is, only once. The statement responsible for creating the form is in the project's source (if the form is set to be automatically created by the project). When a form is being created and its Visible property is True, the following events occur in the order listed: OnCreate, OnShow, OnActivate, OnPaint. You should use the OnCreate event handler to do, for example, initialization chores like allocating string lists. Any objects created in the OnCreate event should be freed by the OnDestroy event. OnCreate -> OnShow -> OnActivate -> OnPaint -> OnResize -> OnPaint ... OnShowThis event indicates that the form is being displayed. OnShow is called just before a form becomes visible. Besides main forms, this event happens when we set forms Visible property to True, or call the Show or ShowModal method. OnActivateThis event is called when the program activates the form - that is, when the form receives the input focus. Use this event to change which control actually gets focus if it is not the one desired. OnPaint, OnResizeEvents like OnPaint and OnResize are always called after the form is initially created, but are also called repeatedly. OnPaint occurs before any controls on the form are painted (use it for special painting on the form). Life The birth of a form is not so interesting as its life and death can be. When your form is created and all the controls are waiting for events to handle, the program is running until someone tries to close the form! Death An event-driven application stops running when all its forms are closed and no code is executing. If a hidden form still exists when the last visible form is closed, your application will appear to have ended (because no forms are visible), but will in fact continue to run until all the hidden forms are closed. Just think of a situation where the main form gets hidden early and all other forms are closed. ... OnCloseQuery -> OnClose -> OnDeactivate -> OnHide -> OnDestroy OnCloseQueryWhen we try to close the form using the Close method or by other means (Alt+F4), the OnCloseQuery event is called. Thus, event handler for this event is the place to intercept a form's closing and prevent it. We use the OnCloseQuery to ask the users if they are sure that they realy want the form to close. procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean) ; begin if MessageDlg('Really close this window?', mtConfirmation, [mbOk, mbCancel], 0) = mrCancel then CanClose := False; end; An OnCloseQuery event handler contains a CanClose variable that determines whether a form is allowed to close. The OnCloseQuery event handler may set the value of CloseQuery to False (via the CanClose parameter), aborting the Close method. OnCloseIf OnCloseQuery indicates that the form should be closed, the OnClose event is called. The OnClose event gives us one last chance to prevent the form from closing. The OnClose event handler has an Action parameter, with the following four possible values: caNone. The form is not allowed to close. Just as if we have set the CanClose to False in the OnCloseQuery.caHide. Instead of closing the form you hide it.caFree. The form is closed, so it's allocated memory is freed by Delphi.caMinimize. The form is minimized, rather than closed. This is the default action for MDI child forms. When a user shuts down Windows, the OnCloseQuery event is activated, not the OnClose. If you want to prevent Windows from shutting down, put your code in the OnCloseQuery event handler, of course CanClose=False will not do this. OnDestroyAfter the OnClose method has been processed and the form is to be closed, the OnDestroy event is called. Use this event for operations opposite to those in the OnCreate event. OnDestroy is used to deallocate objects related to the form and free the corresponding memory. When the main form for a project closes, the application terminates. Cite this Article Format mla apa chicago Your Citation Gajic, Zarko. "How to Create, Use, and Close Forms in Delphi." ThoughtCo, Feb. 16, 2021, thoughtco.com/life-cycle-of-a-delphi-form-1058011. Gajic, Zarko. (2021, February 16). How to Create, Use, and Close Forms in Delphi. Retrieved from https://www.thoughtco.com/life-cycle-of-a-delphi-form-1058011 Gajic, Zarko. "How to Create, Use, and Close Forms in Delphi." ThoughtCo. https://www.thoughtco.com/life-cycle-of-a-delphi-form-1058011 (accessed June 2, 2023). copy citation Featured Video