MDI-Anwendungen mit VCL-Formularen ohne Experten erstellen

Aus RAD Studio
Wechseln zu: Navigation, Suche

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:

  1. Erstellen Sie das Hauptfensterformular bzw. das übergeordnete MDI-Fenster.
  2. Erstellen Sie ein Formular für das untergeordnete Fenster.
  3. Legen Sie fest, dass das untergeordnete Fenster benutzergesteuert vom Hauptfenster erstellt wird.
  4. Verfassen 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 > Weitere > Delphi-Projekte oder C++Builder-Projekte, und doppelklicken Sie auf das Symbol VCL-Formularanwendung. Der VCL-Formular-Designer wird angezeigt.
  2. Setzen Sie im Objektinspektor die Eigenschaft FormStyle auf fsMDIForm.
  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.
  2. Setzen Sie im Objektinspektor die Eigenschaft FormStyle auf fsMDIChild.
  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. Das Dialogfeld Projektoptionen wird geöffnet.
  2. 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.
  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 der uses-Liste uChild hinzu. Fügen Sie bei einem C++-Projekt #include "Child.h" zu uMain.h hinzu.
  5. 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 );
  1. 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:

  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 angezeigt. Der Cursor befindet sich bereits im Block der Ereignisbehandlungsroutine TfrMain.FormClose (Delphi) bzw. TfrMain::FormClose (C++).
  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. 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.
  6. Wählen Sie den leeren Befehl aus.
  7. 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:

  1. Öffnen Sie bei Bedarf den Menü-Designer, und wählen Sie "Neues untergeordnetes Fenster".
  2. 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++).
  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 angezeigt. Der Cursor befindet sich bereits im Block der Ereignisbehandlungsroutine TfrMain.mnCloseAllClick (Delphi) bzw. TfrMain::mnCloseAllClick (C++).
  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 angezeigt. Der Cursor befindet sich bereits im Block der Ereignisbehandlungsroutine TfrChild.FormClose (Delphi) oder TfrChild::FormClose (C++).
  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.
  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 jeder Aktivierung des Befehls wird ein neues untergeordnetes Fenster geöffnet.
  4. Wählen Sie Datei > Alle schließen. Die untergeordneten Fenster werden geschlossen.

Siehe auch