MDI-Anwendungen mit VCL-Formularen ohne Experten erstellen
Nach oben zu So erstellen Sie VCL-Formularanwendungen
Führen Sie folgende Schritte aus, um eine neue MDI-Anwendung mit einem untergeordneten Fenster ohne Zuhilfenahme eines Experten zu erstellen:
- Erstellen Sie das Hauptfensterformular bzw. das übergeordnete MDI-Fenster.
- Erstellen Sie ein Formular für das untergeordnete Fenster.
- Legen Sie fest, dass das untergeordnete Fenster benutzergesteuert vom Hauptfenster erstellt wird.
- Verfassen Sie den Code für die Ereignisbehandlungsroutine zum Schließen des untergeordneten Fensters.
- Erstellen Sie das Hauptmenü mit den zugehörigen Befehlen.
- Fügen Sie Ereignisbehandlungsroutinen für die Befehle hinzu.
- Compilieren Sie die Anwendung, und führen Sie sie aus.
Inhaltsverzeichnis
- 1 So erstellen Sie ein Hauptfensterformular:
- 2 So erstellen Sie ein untergeordnetes Fenster:
- 3 So veranlassen Sie die Erstellung des untergeordneten Fensters durch das Hauptfenster:
- 4 So verfassen Sie den Quelltext für die Ereignisbehandlungsroutine zum Schließen des untergeordneten Fensters:
- 5 So erstellen Sie das Hauptmenü mit den zugehörigen Befehlen:
- 6 So fügen Sie Ereignisbehandlungsroutinen für die Befehle "Neues untergeordnetes Fenster" und "Alle schließen" hinzu:
- 7 So schließen Sie das untergeordnete Fenster:
- 8 So compilieren Sie die MDI-Anwendung und führen sie aus:
- 9 Siehe auch
So erstellen Sie ein Hauptfensterformular:
- Wählen Sie Datei > Neu > Weitere > Delphi-Projekte oder C++Builder-Projekte, und doppelklicken Sie auf das Symbol VCL-Formularanwendung. Der VCL-Formular-Designer wird angezeigt.
- Setzen Sie im Objektinspektor die Eigenschaft FormStyle auf fsMDIForm.
- Geben Sie für die Eigenschaft Name einen aussagekräftigeren Namen ein, z. B. frMain
- Speichern Sie die Unit-Datei unter einem aussagekräftigen Namen, z. B. uMain.pas (Delphi) oder uMain.cpp (C++).
So erstellen Sie ein untergeordnetes Fenster:
- Wählen Sie Datei > Neu > Formular.
- Setzen Sie im Objektinspektor die Eigenschaft FormStyle auf fsMDIChild.
- Geben Sie für die Eigenschaft Name einen aussagekräftigeren Namen ein, z. B. frChild.
- Speichern Sie die Unit-Datei unter dem Namen uChild.pas (Delphi) oder uChild.cpp (C++).
So veranlassen Sie die Erstellung des untergeordneten Fensters durch das Hauptfenster:
- Wählen Sie Projekt > Optionen > Formulare. Das Dialogfeld Projektoptionen wird geöffnet.
- Wählen Sie in der Liste Automatisch erzeugen den Eintrag frChild aus, und klicken Sie auf [>], um ihn in die Liste Verfügbare Formulare zu verschieben. Klicken Sie anschließend auf OK.
- Wählen Sie das Formular frMain aus, um es zu aktivieren, und wechseln Sie in die Quelltextansicht.
- Fügen Sie bei einem Delphi-Projekt der uses-Liste uChild hinzu. Fügen Sie bei einem C++-Projekt #include "Child.h" zu uMain.h hinzu.
- Geben Sie bei einem Delphi-Projekt im Abschnitt mit den private-Deklarationen die folgende Prozedurdeklaration ein:
procedure CreateChildForm(const childName: string);
- Fügen Sie in C++ den private:-Deklarationen von TfrMain die folgende Funktionsdeklaration hinzu:
void __fastcall CreateChildForm( const AnsiString childName );
- Geben Sie bei einem Delphi-Projekt im implementation-Abschnitt den folgenden Quelltext ein:
procedure TfrMain.CreateChildForm (const childName: string);
var Child: TfrChild;
begin
Child := TfrChild.Create(Application);
Child.Caption := childName;
end;
- Fügen Sie in C++ uMain.cpp die folgende Funktionsdefinition hinzu:
void __fastcall TfrMain::CreateChildForm( const AnsiString childName )
{
TfrChild *Child = new TfrChild( Application );
Child->Caption = childName;
}
So verfassen Sie den Quelltext für die Ereignisbehandlungsroutine zum Schließen des untergeordneten Fensters:
- Aktivieren Sie bei Bedarf das Formular frMain. Klicken Sie dann im Objektinspektor auf die Registerkarte Ereignisse.
- Doppelklicken Sie auf das Ereignis OnClose. Der Quelltext-Editor wird angezeigt. Der Cursor befindet sich bereits im Block der Ereignisbehandlungsroutine TfrMain.FormClose (Delphi) bzw. TfrMain::FormClose (C++).
- Geben Sie in Delphi folgenden Quelltext ein:
Action := caFree;
Geben Sie in C++ folgenden Quelltext ein:
Action = caFree;
So erstellen Sie das Hauptmenü mit den zugehörigen Befehlen:
- Ziehen Sie aus der Seite Standard der Tool-Palette eine TMainMenu-Komponente auf das Hauptformular.
- Doppelklicken Sie auf die Komponente TMainMenu. Der Menü-Designer (frMain.MainMenu1) wird geöffnet, und das erste leere Menüelement ist hervorgehoben.
- Geben Sie im Objektinspektor auf der Registerkarte Eigenschaften für die Eigenschaft Name den Wert mnFile und für die Eigenschaft Caption den Wert &Datei ein. Drücken Sie anschließend die EINGABETASTE. Im Menü-Designer wird "Datei" als Name des ersten Menüelements angezeigt.
- Wählen Sie im Menü-Designer "Datei" aus. In der Dateigruppe wird ein leeres Befehlsfeld angezeigt. Wählen Sie den leeren Befehl aus.
- Weisen Sie im Objektinspektor der Eigenschaft Name den Wert mnNewChild und der Eigenschaft Caption den Wert &Neues untergeordnetes Fenster zu. Drücken Sie anschließend die EINGABETASTE. Im Menü-Designer wird "Neues untergeordnetes Fenster" als Name des ersten Dateibefehls angezeigt, und daneben wird ein leeres Befehlsfeld eingeblendet.
- Wählen Sie den leeren Befehl aus.
- Weisen Sie im Objektinspektor der Eigenschaft Name den Wert mnCloseAll und der Eigenschaft Caption den Wert &Alle schließen zu. Drücken Sie anschließend die EINGABETASTE. Im Menü-Designer wird "Alle schließen" als Name des zweiten Dateibefehls angezeigt.
So fügen Sie Ereignisbehandlungsroutinen für die Befehle "Neues untergeordnetes Fenster" und "Alle schließen" hinzu:
- Öffnen Sie bei Bedarf den Menü-Designer, und wählen Sie "Neues untergeordnetes Fenster".
- Doppelklicken Sie im Objektinspektor auf der Registerkarte Ereignisse auf das Ereignis OnClick. Der Quelltext-Editor wird angezeigt. Der Cursor befindet sich bereits im Block der Ereignisbehandlungsroutine TfrMain.mnNewChildClick (Delphi) bzw. TfrMain::mnNewChildClick (C++).
- Geben Sie in Delphi folgenden Quelltext ein:
CreateChildForm('Child '+IntToStr(MDIChildCount+1));
Geben Sie in C++ folgenden Quelltext ein:
CreateChildForm( "Child " + IntToStr( MDIChildCount + 1 ) );
- Wählen Sie im Menü-Designer "Alle schließen" aus.
- Doppelklicken Sie im Objektinspektor auf der Registerkarte Ereignisse auf das Ereignis OnClick. Der Quelltext-Editor wird angezeigt. Der Cursor befindet sich bereits im Block der Ereignisbehandlungsroutine TfrMain.mnCloseAllClick (Delphi) bzw. TfrMain::mnCloseAllClick (C++).
- Geben Sie in Delphi folgenden Quelltext ein:
for i:=0 to MDIChildCount - 1 do
MDIChildren[i].Close;
- Geben Sie in C++ folgenden Quelltext ein:
for( int i = 0; i < MDIChildCount; i++ ) {
MDIChildren[i]->Close();
}
- Deklarieren Sie in Delphi die lokale Variable i. Die ersten beiden Zeilen der Ereignisbehandlungsroutine sollten nun folgendermaßen aussehen:
procedure TfrMain.mnCloseAllClick(Sender: TObject);
var i: integer;
Hinweis: Die Ereignisbehandlungsroutine minimiert das untergeordnete Fenster im Hauptfenster. Zum Schließen des untergeordneten Fensters müssen Sie dem untergeordneten Formular eine OnClose-Prozedur hinzufügen (siehe unten).
So schließen Sie das untergeordnete Fenster:
- Aktivieren Sie das untergeordnete Formular.
- Doppelklicken Sie im Objektinspektor auf der Registerkarte Ereignisse auf das Ereignis OnClose. Der Quelltext-Editor wird angezeigt. Der Cursor befindet sich bereits im Block der Ereignisbehandlungsroutine TfrChild.FormClose (Delphi) oder TfrChild::FormClose (C++).
- Geben Sie in Delphi die folgende Anweisung ein:
Action := caFree;
- Geben Sie in C++ die folgende Anweisung ein:
Action = caFree;
So compilieren Sie die MDI-Anwendung und führen sie aus:
- Wählen Sie Start > Start.
- Die Anwendung wird ausgeführt und der Befehl "Datei" angezeigt.
- Wählen Sie Datei > Neues untergeordnetes Fenster einmal oder mehrere Male aus. Bei jeder Aktivierung des Befehls wird ein neues untergeordnetes Fenster geöffnet.
- Wählen Sie Datei > Alle schließen. Die untergeordneten Fenster werden geschlossen.