Construction d'une application MDI VCL Windows sans utiliser d'expert
(Redirigé depuis Construction d'une application MDI Fiches VCL sans utiliser d'expert)
Remonter à Comment construire des applications VCL Windows
Les étapes de base pour créer une nouvelle application MDI avec une fenêtre enfant sans utiliser d'expert sont les suivantes :
- Création d'une fiche de fenêtre principale (fenêtre parent MDI).
- Création d'une fiche de fenêtre enfant.
- Permettre à la fenêtre principale de créer la fenêtre enfant à la demande de l'utilisateur.
- Écriture du code du gestionnaire d'événement de façon à fermer la fenêtre enfant.
- Création du menu principal et des commandes.
- Ajout des gestionnaires d'événement pour les commandes.
- Compilation et exécution de 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 > Application VCL Windows - Delphi ou Fichier > Nouveau > Application VCL Windows - C++Builder.
- 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 d'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 la 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 suivant :
procedure TfrMain.CreateChildForm (const childName: string);
var Child: TfrChild;
begin
Child := TfrChild.Create(Application);
Child.Caption := childName;
end;
- Pour C++, ajoutez la déclaration 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 dans 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 de l'é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;
- Sur 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 de l'onglet Evénements. L'éditeur de code s'affiche, avec le curseur placé dans le bloc du gestionnaire de l'é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 de l'onglet Evénements. L'éditeur de code s'affiche, avec le curseur placé dans le bloc du gestionnaire de l'é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 de l'onglet Evénements. L'éditeur de code s'affiche, avec le curseur placé dans le bloc du gestionnaire de l'é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.