RAD Studio
ContentsIndex
PreviousUpNext
Creating a VCL Form Instance Using a Local Variable

A safe way to create a unique instance of a modal VCL form is to use a local variable in an event handler as a reference to a new instance. If you use a local variable, it doesn't matter whether the form is auto-created or not. The code in the event handler makes no reference to the global form variable. Using RAD Studio, the following procedure creates a modal form instance dynamically. It (optionally) removes the second form's invocation at startup.  

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 (optional).
  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 C++Builder Projects and double-click the Form icon. The VCL Forms Designer displays Form2.

To optionally 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. Select Form1 and choose FileUse Unit (Delphi) or Include Unit Hdr (C++). 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. For Delphi, insert the cursor just above the event handler block and enter the following statement to define a local variable:

var FM: TForm2;

For C++, enter the following variable declaration:

TForm2 *FM;

  1. Insert the cursor in the event handler block, and enter the following code:

FM := TForm2.Create(self);
FM.ShowModal;
FM.Free;

 

FM = new TForm2( this );
FM->ShowModal();
FM->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. With Form2 displayed, attempt to click on Form1 to activate it. Nothing happens. Click the X in the upper right corner of Form2. Form2 closes and Form1 becomes the active form.

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