RAD Studio |  |

Dynamically Creating a VCL Modal Form
See Also
Collapse All

You may not want all your VCL application's forms in memory at once. To reduce the amount of memory required at load time, your application can create forms only when it needs to make them available for use. A dialog box, for example, needs to be in memory only during the time the user interacts with it. Using RAD Studio, the following procedure creates a modal form dynamically. The main difference between dynamically creating a form and displaying an auto-created VCL form is that you remove the second form's invocation at startup and write code to dynamically create the form.

Building this VCL application consists of the following steps:

1. Create the project directory.
2. Create two forms for the project.
3. Remove the second form's invocation at startup.
4. Link the forms.
5. Create a control on the main form to create and display the modal form; then write the event handler.
6. Build and run the application.

To create the two forms

1. Choose FileNewOtherDelphi Projects or C++Builder Projects and double-click the VCL Forms Application icon. The VCL Forms Designer displays Form1.
2. Choose FileNewOtherDelphi ProjectsDelphi Files or FileNewOtherC++Builder Files and double-click the Form icon. The VCL Forms Designer displays Form2.

To remove Form2's invocation at startup

1. Choose ProjectOptionsForms. The Project Options dialog displays.
2. Select Form2 in the Auto-create forms list and click [>]. Form2 is moved to the Available forms list.
3. Click OK to close the dialog.

To link Form1 to Form2

1. For Delphi, select Form1 and choose FileUse Unit. For C++, select Form1 and choose FileInclude Unit Hdr The Uses Unit dialog displays.
2. Select Form2 (the form that Form1 needs to reference) in the dialog.
3. Click OK. For Delphi, a uses clause containing the unit name Unit2 is placed in the implementation section of Unit1. For C++, the #include “Unit2.h” directive is added to Unit1.h.

To display Form2 from Form1

1. Select Form1, if necessary; then, from the Standard page of the Tool Palette, place a TButton on the form.
2. In the Object Inspector with Button1 selected, double-click the OnClick event on the Events tab. The Code Editor displays with the cursor in the TForm1.Button1Click (Delphi) or TForm1::Button1Click (C++) event handler block.
3. Enter the following event handling code:

Copy Code

    Form2 := TForm2.Create(self);
    try
      Form2.ShowModal;
    finally
      Form2.Free;
    end;

Copy Code

    Form2 = new TForm2( this );
    try {
      Form2–>ShowModal();
    } __finally {
      Form2–>Free();
    }

To build and run the application

1. Save all files in the project; then choose RunRun. The application executes, displaying Form1.
2. Click the button. Form2 displays.
3. Click the X in the upper right corner of the form. Form2 closes and Form1 becomes the active form.

See Also

VCL Overview

Building a VCL Forms Application

Dynamically Creating a VCL Modeless Form

Displaying an Auto-Created VCL Form

Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!