Construction d'une application MDI Fiches VCL sans utiliser d'expert
Remonter à Comment construire des applications Fiches VCL
Les étapes de base pour créer une nouvelle application MDI avec une fenêtre enfant sans utiliser un expert sont les suivantes :
- Créer une fiche de fenêtre principale (fenêtre parent MDI).
- Créer une fiche de fenêtre enfant.
- La fenêtre principale crée la fenêtre enfant sous le contrôle de l'utilisateur.
- Ecrire le code du gestionnaire d'événement pour fermer la fenêtre enfant.
- Créer le menu principal et les commandes.
- Ajouter les gestionnaires d'événement pour les commandes.
- Compiler et exécuter l'application.
Sommaire
- 1 Pour créer la fiche de fenêtre principale
- 2 Pour créer une fenêtre enfant
- 3 Pour que la fenêtre principale crée la fenêtre enfant
- 4 Pour écrire le code du gestionnaire d'événement pour fermer la fenêtre enfant
- 5 Pour créer le menu principal et les commandes
- 6 Pour ajouter des gestionnaires d'événement pour les commandes Nouvel enfant et Tout fermer
- 7 Pour fermer la fenêtre enfant
- 8 Pour compiler et exécuter l'application MDI
- 9 Voir aussi
Pour créer la fiche de fenêtre principale
- Choisissez Fichier > Nouveau > Autre > Projets Delphi ou Projets C++Builder et double-cliquez sur l'icône Application Fiches VCL. Le Concepteur de fiches VCL s'affiche.
- Dans l'inspecteur d'objets, définissez la propriété FormStyle sur fsMDIForm.
- Entrez un nom plus descriptif, tel que frMain, pour la propriété Name.
- Enregistrez le fichier unité avec un nom plus descriptif, tel que uMain.pas (Delphi) ou uMain.cpp (C++).
Pour créer une fenêtre enfant
- Choisissez Fichier > Nouveau > Fiche .
- Dans l'inspecteur d'objets, définissez la propriété FormStyle sur fsMDIChild.
- Entrez un nom plus descriptif, tels que frChild, pour la propriété Name.
- Enregistrez le fichier unité sous le nom uChild.pas (Delphi) ou uChild.cpp (C++).
Pour que la fenêtre principale crée la fenêtre enfant
- Choisissez Projet > Options > Fiches . La boîte de dialogue Options de projet apparaît.
- Sélectionnez frChild dans la liste Fiches créées automatiquement et cliquez sur [>] pour le déplacer dans la liste Fiches disponibles, puis cliquez sur OK.
- Sélectionnez la fiche frMain pour l'activer ; accédez ensuite à la vue Code.
- Pour Delphi, faites défiler jusqu'à la section uses et ajoutez uChild à la liste. Pour C++, ajoutez #include "Child.h" à uMain.h.
- Pour Delphi, faites défiler jusqu'à la section des déclarations private et entrez la déclaration de procédure suivante :
procedure CreateChildForm(const childName: string);
- Pour C++, ajoutez la déclaration de fonction suivante aux déclarations private: de TfrMain :
void __fastcall CreateChildForm( const AnsiString childName );
- Pour Delphi, faites défiler jusqu'à la section implementation et entrez le code ci-dessous :
procedure TfrMain.CreateChildForm (const childName: string);
var Child: TfrChild;
begin
Child := TfrChild.Create(Application);
Child.Caption := childName;
end;
- Pour C++, ajoutez la définition de fonction suivante à uMain.cpp :
void __fastcall TfrMain::CreateChildForm( const AnsiString childName )
{
TfrChild *Child = new TfrChild( Application );
Child->Caption = childName;
}
Pour écrire le code du gestionnaire d'événement pour fermer la fenêtre enfant
- Si nécessaire, activez la fiche frMain, puis sélectionnez l'onglet Evénements de l'inspecteur d'objets.
- Double-cliquez sur l'événement OnClose. L'éditeur de code s'affiche, avec le curseur placé dans le bloc du gestionnaire d'événement TfrMain.FormClose (Delphi) ou TfrMain::FormClose (C++).
- Pour Delphi, entrez le code suivant :
Action := caFree;
Pour C++, entrez le code suivant :
Action = caFree;
- A partir de la page Standard de la palette d'outils, placez un composant TMainMenu sur la fiche principale.
- Double-cliquez sur le composant TMainMenu. Le Concepteur de menus (frMain.MainMenu1) s'affiche avec le premier élément de menu vide en surbrillance.
- Dans l'inspecteur d'objets sur l'onglet Propriétés, entrez mnFile pour la propriété Name et &Fichier pour la propriété Caption. Appuyez ensuite sur ENTREE. Dans le Concepteur de menus, le nom affiché pour le premier élément du menu est Fichier.
- Dans le Concepteur de menus, sélectionnez Fichier. Un champ de commande vide s'affiche dans le groupe Fichier. Sélectionnez la commande vide.
- Dans l'inspecteur d'objets, entrez mnNewChild pour la propriété Name et &Nouvel enfant pour la propriété Caption ; appuyez ensuite sur ENTREE. Dans le Concepteur de menus, le nom de la première commande de fichier affiché est Nouvel enfant et un champ de commande vide s'affiche juste au-dessous de Nouvel enfant.
- Sélectionnez la commande vide.
- Dans l'inspecteur d'objets, entrez mnCloseAll pour la propriété Name et &Tout fermer pour la propriété Caption ; appuyez ensuite sur ENTREE. Dans le Concepteur de menus, le nom affiché pour la deuxième commande de fichier est Tout fermer.
Pour ajouter des gestionnaires d'événement pour les commandes Nouvel enfant et Tout fermer
- Si nécessaire, ouvrez le Concepteur de menus et sélectionnez Nouvel enfant.
- Dans l'inspecteur d'objets, double-cliquez sur l'événement OnClick dans l'onglet Evénements. L'éditeur de code s'affiche avec le curseur dans le bloc du gestionnaire d'événement TfrMain.mnNewChildClick (Delphi) ou TfrMain::mnNewChildClick (C++).
- Pour Delphi, entrez le code suivant :
CreateChildForm('Child '+IntToStr(MDIChildCount+1));
Pour C++, entrez le code suivant :
CreateChildForm( "Child " + IntToStr( MDIChildCount + 1 ) );
- Dans le Concepteur de menus, sélectionnez Tout fermer.
- Dans l'inspecteur d'objets, double-cliquez sur l'événement OnClick dans l'onglet Evénements. L'éditeur de code s'affiche avec le curseur dans le bloc du gestionnaire d'événement TfrMain.mnCloseAllClick (Delphi) ou TfrMain::mnCloseAllClick (C++).
- Pour Delphi, entrez le code suivant :
for i:=0 to MDIChildCount - 1 do
MDIChildren[i].Close;
- Pour C++, entrez le code suivant :
for( int i = 0; i < MDIChildCount; i++ ) {
MDIChildren[i]->Close();
}
- Pour Delphi, déclarez la variable locale i. Les deux premières lignes du code du gestionnaire d'événement doivent apparaître comme affiché ici lorsque vous avez terminé :
procedure TfrMain.mnCloseAllClick(Sender: TObject);
var i: integer;
Remarque : Le gestionnaire d'événement minimise la fenêtre enfant dans la fenêtre principale. Pour fermer la fenêtre enfant, vous devez ajouter une procédure OnClose à la fiche enfant (ci-dessous).
Pour fermer la fenêtre enfant
- Activez la fiche enfant.
- Dans l'inspecteur d'objets, double-cliquez sur l'événement OnClose dans l'onglet Evénements. L'éditeur de code s'affiche avec le curseur dans le bloc du gestionnaire d'événement TfrChild.FormClose (Delphi) ou TfrChild::FormClose (C++).
- Pour Delphi, entrez l'instruction suivante :
Action := caFree;
- Pour C++, entrez l'instruction suivante :
Action = caFree;
Pour compiler et exécuter l'application MDI
- Choisissez Exécuter > Exécuter .
- L'application s'exécute, en affichant la commande Fichier.
- Choisissez Fichier > Nouvel enfant une ou plusieurs fois. Une fenêtre enfant apparaît avec chaque commande Nouvel enfant.
- Choisissez Fichier > Tout fermer . Les fenêtres enfant se ferment.