VCL-MDI-Anwendungen für Windows ohne Experten erstellen
(Weitergeleitet von MDI-Anwendungen mit VCL-Formularen ohne Experten erstellen)
Nach oben zu So erstellen Sie Windows-VCL-Anwendungen
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 (übergeordnetes MDI-Fenster).
- Erstellen Sie ein Formular für das untergeordnete Fenster.
- Lassen Sie das untergeordnete Fenster benutzergesteuert vom Hauptfenster erstellen.
- Schreiben 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 schreiben 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 > Windows-VCL-Anwendung - Delphi oder Datei > Neu > Windows-VCL-Anwendung - C++Builder aus.
- Legen Sie im Objektinspektor die Eigenschaft FormStyle auf fsMDIForm fest.
- 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 aus.
- Legen Sie im Objektinspektor die Eigenschaft FormStyle auf fsMDIChild fest.
- 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 aus. Das Dialogfeld Projektoptionen wird geöffnet.
- Wählen Sie in der Liste Formulare 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 dem uses-Abschnitt uChild hinzu. Fügen Sie bei einem C++Projekt #include "Child.h" zu uMain.h hinzu.
- Scrollen Sie bei einem Delphi-Projekt zum Abschnitt mit den private-Deklarationen, und geben Sie die folgende Prozedurdeklaration ein:
procedure CreateChildForm(const childName: string);
- Fügen Sie bei einem C++-Projekt den private:-Deklarationen von TfrMain die folgende Funktionsdeklaration hinzu:
void __fastcall CreateChildForm( const AnsiString childName );
- Scrollen Sie bei einem Delphi-Projekt zum implementation-Abschnitt, und geben Sie folgenden Quelltext ein:
procedure TfrMain.CreateChildForm (const childName: string);
var Child: TfrChild;
begin
Child := TfrChild.Create(Application);
Child.Caption := childName;
end;
- Fügen Sie bei einem C++-Projekt die folgende Funktionsdefinition zu uMain.cpp hinzu:
void __fastcall TfrMain::CreateChildForm( const AnsiString childName )
{
TfrChild *Child = new TfrChild( Application );
Child->Caption = childName;
}
So schreiben 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 mit dem Cursor im Block der Ereignisbehandlungsroutine TfrMain.FormClose (Delphi) oder TfrMain::FormClose (C++) angezeigt.
- 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.
- Geben Sie im Objektinspektor für die Eigenschaft Name den Wert mnNewChild und für die Eigenschaft Caption den Wert "&Neues untergeordnetes Fenster" ein. Drücken Sie anschließend die EINGABETASTE. Im Menü-Designer wird "Neues untergeordnetes Fenster" als Name des ersten Dateibefehls angezeigt, und darunter wird ein leeres Befehlsfeld angezeigt.
- Wählen Sie den leeren Befehl aus.
- Geben Sie im Objektinspektor für die Eigenschaft Name den Wert mnCloseAll und für die Eigenschaft Caption den Wert "&Alle schließen" ein. 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" aus.
- Doppelklicken Sie im Objektinspektor auf der Registerkarte Ereignisse auf das Ereignis OnClick. Der Quelltext-Editor wird mit dem Cursor im Block der Ereignisbehandlungsroutine TfrMain.mnNewChildClick (Delphi) oder TfrMain::mnNewChildClick (C++) angezeigt.
- 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 mit dem Cursor im Block der Ereignisbehandlungsroutine TfrMain.mnCloseAllClick (Delphi) oder TfrMain::mnCloseAllClick (C++) angezeigt.
- 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 mit dem Cursor im Block der Ereignisbehandlungsroutine TfrChild.FormClose (Delphi) oder TfrChild::FormClose (C++) angezeigt.
- 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 aus.
- Die Anwendung wird ausgeführt und der Befehl "Datei" angezeigt.
- Wählen Sie Datei > Neues untergeordnetes Fenster einmal oder mehrere Male aus. Bei jedem Befehl "Neues untergeordnetes Fenster" wird ein untergeordnetes Fenster angezeigt.
- Wählen Sie Datei > Alle schließen aus. Die untergeordneten Fenster werden geschlossen.