Retour à la page d'accueil

Développement :
Développement sous Delphi

Auteur : Jean HENRI - Dernière mise à jour : 21 novembre 2001

Pour m'écrire

Utiliser une 2ème fenêtre

Une application Windows possèdera toujours une seule fenêtre principale avec un menu (celle que nous appelons frm_principale associée à l'unité un_main.pas). Les autres fenêtres seront appelées, dans un premier temps, des "boîtes de dialogue" (même si elles peuvent être plus riches ou plus complexes que la fenêtre principale).

La particularité des boîtes de dialogues (par exemple, ouvrir... ou Imprimer... dans WordPad par exemple) est la nécessité de la refermer pour pouvoir continuer à travailler "dans" l'application. Ce mode de fonctionnement va nous faciliter le travail de développement.

1ère étape : ouverture d'une boîte de dialogue à partir de la fenêtre principale.

Partons d'une application minimale. Nous allons aller vers le projet suivant :

Il faut d'abord créer les 2 fenêtres de manières indépendantes :

Fenêtre Unité Commentaire
frm_principale un_main.pas Cette fenêtre contient un menu Fichiers avec une commande Quitter pour fermer l'application.
frm_dialogue un_dialogue.pas Cette fenêtre sera notre boîte de dialogue.

Sur la fenêtre frm_principale, nous ajouterons un bouton (bt_ouvrir) qui permettra d'ouvrir la boîte de dialogue.

Sur la fenêtre frm_dialogue, nous ajouterons un bouton (bt_quitter) qui permet de fermer la boîte de dialogue (par la commande close).

Il faut ensuite pouvoir ouvrir la boîte de dialogue à partir de la fenêtre principale :

Dans l'unité un_main.pas il faut utiliser l'unité un_dialogue.pas (menu Fichier de Delphi). Ensuite, sur l'événement OnClick du bouton bt_ouvrir (faites un double-clic directement sur le bouton bt_ouvrir), écrivez le code suivant :

frm_dialogue.showmodal;

Vous pouvez tester l'ouverture et la fermeture de la boîte de dialogue !

Exercice : Réaliser le même travail en ajoutant une option "ouvrir la boîte de dialogue" dans le menu Fichiers de votre application.

2ème étape : échange d'informations entre les deux fenêtres.

Partons de l'application obtenue à l'étape 1.

Pour échanger des informations, nous allons mettre en place une unité qui contiendra les informations qui devront être accessibles à partir des deux fenêtres. Nous allons donc maintenant aller vers le projet suivant :

Il faut ajouter une unité à notre projet (menu Fichier/Nouveau.../Unité) que nous appellerons un_globale.pas.

Dans la partie Interface de cette unité, nous déclarerons une chaine de caractères msg_Information qui représentera l'information à partager entre les deux fenêtres. Le bloc principal de l'unité nous permettra d'initialiser le contenu de cette donnée avec la chaîne "Ce contenu est créé au démarrage de l'application".

Sur la fenêtre frm_principale, nous ajoutons deux zones d'édition pour mettre en évidence les échanges d'informations :

Une première zone d'édition (nommée ed_Message), placée au dessus du bouton bt_ouvrir (voir étape 1), contiendra le texte "Tapez ici le texte à transmettre à la boîte de dialogue.".

Une deuxième zone d'édition (nommée ed_Retour), placée cette fois en dessous du bouton bt_ouvrir, contiendra le texte "Ce texte sera mis à jour à la fermeture de la boîte de dialogue".

Toujours sur cette fenêtre frm_principale, il faut utiliser l'unité un_globale.pas (menu Fichier de Delphi). Ensuite, sur l'événement OnClick du bouton bt_ouvrir (faites un double-clic directement sur le bouton bt_ouvrir), compléter le code suivant :

msg_Information := ed_Message.text;
frm_dialogue.showmodal;
msg_Retour.text := msg_Information;

Sur la fenêtre frm_dialogue, nous ajoutons une zone d'édition pour recevoir l'information :

La zone d'édition (nommée ed_Texte) est placée au dessus du bouton bt_quitter (voir étape 1) et contient le texte "Ce texte sera remplacé dès l'ouverture de cette fenêtre !".

Il faut ensuite utiliser l'événement OnActivate de la fenêtre frm_dialogue pour mettre en place les informations "en provenance" de la fenêtre principale :

Ed_texte.Text := Msg_information;

Toujours sur cette fenêtre frm_dialogue, il faut également utiliser l'unité un_globale.pas. Il faut enfin compléter le code lié à l'événement OnClick du bouton bt_quitter pour mettre à jour les informations qui auront été modifiées dans cette boîte de dialogue :

Msg_information := Ed_Texte.text;
close;

Vous pouvez tester les modification du texte dans les différentes zones d'édition des 2 fenêtres !

Exercice : Si, à l'étape 1, vous avez ajouté l'option "ouvrir la boîte de dialogue" dans le menu Fichiers de votre application, mettez à jour votre code pour que l'information circule correctement..