Dynamically Creating a VCL Modeless Form
Go Up to How To Build VCL Forms Applications
A modeless form is a window that is displayed until it is either obscured by another window or until it is closed or minimized by the user. Using RAD Studio, the following procedure creates a modeless form dynamically.
Building this VCL application consists of the following steps:
- Create the project directory.
- Create two forms for the project.
- Remove the second form's invocation at startup.
- Link the forms.
- Create a control on the main form to create and display the modal form; then write the event handler.
- Build and run the application.
To create the two forms
- Choose File > New > Other > Delphi Projects or C++Builder Projects and double-click the VCL Forms Application icon. The VCL Forms Designer displays Form1.
- Choose File > New > Other > Delphi Projects > Delphi Files or File > New > Other > C++Builder Files and double-click the Form icon. The VCL Forms Designer displays Form2.
To remove Form2's invocation at startup
- Choose Project > Options. The Project Options dialog displays.
- Select Form2 in the Auto-create forms list and click [>]. Form2 is moved to the Available forms list.
- Click OK to close the dialog.
To link Form1 to Form2
- Select Form1 and choose File > Use Unit. The Uses Unit dialog displays.
- Select Form2 (the form that Form1 needs to reference) in the dialog.
- 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
- Select Form1, if necessary; then, from the Standard page of the Tool Palette, place a button on the form.
- 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.
- Enter the following event handling code:
Form2 := TForm2.Create(self); Form2.Show;
Form2 = new TForm2( this ); Form2->Show();
Note: If your application requires additional instances of the modeless form, declare a separate global variable for each instance. In most cases you use the global reference that was created when you made the form (the variable name that matches the Name property of the form).
To build and run the application
- Save all files in the project; then choose Run > Run. The application executes, displaying Form1.
- Click the button. Form2 displays.
- Click Form1. Form1 becomes the active form. Form2 displays until you minimize or close it.