VCL-MDI-Anwendungen für Windows ohne Experten erstellen

Aus RAD Studio
Wechseln zu: Navigation, Suche

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:

  1. Erstellen Sie das Hauptfensterformular (übergeordnetes MDI-Fenster).
  2. Erstellen Sie ein Formular für das untergeordnete Fenster.
  3. Lassen Sie das untergeordnete Fenster benutzergesteuert vom Hauptfenster erstellen.
  4. Schreiben Sie den Code für die Ereignisbehandlungsroutine zum Schließen des untergeordneten Fensters.
  5. Erstellen Sie das Hauptmenü mit den zugehörigen Befehlen.
  6. Fügen Sie Ereignisbehandlungsroutinen für die Befehle hinzu.
  7. Compilieren Sie die Anwendung, und führen Sie sie aus.

So erstellen Sie ein Hauptfensterformular:

  1. Wählen Sie Datei > Neu > Windows-VCL-Anwendung - Delphi oder Datei > Neu > Windows-VCL-Anwendung - C++Builder aus.
  2. Legen Sie im Objektinspektor die Eigenschaft FormStyle auf fsMDIForm fest.
  3. Geben Sie für die Eigenschaft Name einen aussagekräftigeren Namen ein, z. B. frMain.
  4. 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:

  1. Wählen Sie Datei > Neu > Formular aus.
  2. Legen Sie im Objektinspektor die Eigenschaft FormStyle auf fsMDIChild fest.
  3. Geben Sie für die Eigenschaft Name einen aussagekräftigeren Namen ein, z. B. frChild.
  4. 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:

  1. Wählen Sie Projekt > Optionen > Formulare aus. Das Dialogfeld Projektoptionen wird geöffnet.
  2. 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.
  3. Wählen Sie das Formular frMain aus, um es zu aktivieren, und wechseln Sie in die Quelltextansicht.
  4. 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.
  5. 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 );
  1. 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:

  1. Aktivieren Sie bei Bedarf das Formular frMain. Klicken Sie dann im Objektinspektor auf die Registerkarte Ereignisse.
  2. 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.
  3. 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:

  1. Ziehen Sie aus der Seite Standard der Tool-Palette eine TMainMenu-Komponente auf das Hauptformular.
  2. Doppelklicken Sie auf die Komponente TMainMenu. Der Menü-Designer (frMain.MainMenu1) wird geöffnet, und das erste leere Menüelement ist hervorgehoben.
  3. 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.
  4. Wählen Sie im Menü-Designer "Datei" aus. In der Dateigruppe wird ein leeres Befehlsfeld angezeigt. Wählen Sie den leeren Befehl aus.
  5. 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.
  6. Wählen Sie den leeren Befehl aus.
  7. 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:

  1. Öffnen Sie bei Bedarf den Menü-Designer, und wählen Sie "Neues untergeordnetes Fenster" aus.
  2. 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.
  3. Geben Sie in Delphi folgenden Quelltext ein:
CreateChildForm('Child '+IntToStr(MDIChildCount+1));

Geben Sie in C++ folgenden Quelltext ein:

CreateChildForm( "Child " + IntToStr( MDIChildCount + 1 ) );
  1. Wählen Sie im Menü-Designer "Alle schließen" aus.
  2. 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.
  3. 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();
}
  1. 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:

  1. Aktivieren Sie das untergeordnete Formular.
  2. 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.
  3. 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:

  1. Wählen Sie Start > Start aus.
  2. Die Anwendung wird ausgeführt und der Befehl "Datei" angezeigt.
  3. Wählen Sie Datei > Neues untergeordnetes Fenster einmal oder mehrere Male aus. Bei jedem Befehl "Neues untergeordnetes Fenster" wird ein untergeordnetes Fenster angezeigt.
  4. Wählen Sie Datei > Alle schließen aus. Die untergeordneten Fenster werden geschlossen.

Siehe auch