Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Création d'applications simples avec Delphi : images et messages, Exercises of Law

Ce document contient des exercices pratiques pour apprendre à créer des applications simples avec Delphi. Les exercices couvrent la création d'une application avec une image et un message affiché sur une zone de texte, l'utilisation de deux fenêtres, et l'insertion d'une image sur une fiche. Il est fourni avec des instructions détaillées et des solutions corrigées.

Typology: Exercises

2012/2013

Uploaded on 01/05/2024

nabila-touisi
nabila-touisi 🇩🇿

3 documents

1 / 30

Toggle sidebar

Related documents


Partial preview of the text

Download Création d'applications simples avec Delphi : images et messages and more Exercises Law in PDF only on Docsity! C H A P I T R E Premier pas avec Delphi A la fin de ce chapitre, vous serez capable de : • Accéder au code source d'une application, • Construire une application très simple. Travaux dirigés : Exercice n° 1 : Création d’une application simple Exercice n° 2 : Application à deux Fenêtres Exercice n° 3 : Insertion d’une image sur la fiche 34 Chapitre 2 : Premier pas avec Delphi 1- Placer un objets sur une fiche Nous allons suivre ces bons conseils et commencer à placer des objets sur notre fiche (que nous appellerons Exemple). 1è r e étape: mise en place d'un bouton Le moyen le plus simple pour placer un objet (ou contrôle, ou encore composant) sur une fiche est de le repérer dans la liste proposée par Delphi (palette des composants) et de double-cliquer sur son icône. Un objet de ce type est alors inséré au centre de la fiche. Un autre moyen pour placer un objet est le suivant: après avoir cliqué sur son icône, il faut cliquer sur la fiche et déplacer la souris; l'objet prend alors les dimensions imposées. Fig. 2.1 Voici comment le code correspondant à la fiche est automatiquement modifié par Delphi: Fig. 2.2 Chapitre 2 : Premier pas avec Delphi 37 Type Création Nécessaire pour compiler Description correspondant ~DP Développement Non Copie de sauvegarde du DPR correspondant ~DF Développement Non Copie de sauvegarde du DFM correspondant. Fig. 2.4 D’autres types de fichiers peuvent être créés, utilisés ou gérés par Delphi: Type Création Nécessaire pour compiler Description BMP ICO Développement Non (mais peuvent être nécessaires à l’exécution) Bitmaps et Icons divers DOF Développement Oui si des options sont spécifiées Contient les valeurs courantes des options du projet. DSK Développement Non Contient des informations concernant l’environnement de développement (position des fenêtres, éditeur, etc.) DSM Compilation Non Contient les informations associées au Browser. Fig. 2.5 2è me étape: utilisation des composants Revenons à notre premier programme et ajoutons-lui quelques fonctionnalités, par exemple: - Le bouton déjà placé va servir à arrêter le programme - Un nouveau bouton Dessin appellera une seconde fiche sur laquelle on placera une image de type BMP. Ce bouton sera rendu invisible. - Un nouveau champ de type Edit dont le contenu pourra rendre le bouton Dessin visible. 38 Chapitre 2 : Premier pas avec Delphi Voici comment se présente la nouvelle fiche principale: Fig. 2.6 Nous allons faire réagir notre programme à 3 événements: - Lorsque le contenu du champ Edit vaut ‘Go’ le bouton Dessin doit devenir visible. - Lorsque l'on clique sur le bouton Fin le programme doit se terminer - Lorsque l'on clique sur le bouton Dessin le programme doit ouvrir une seconde fiche A ce point il est très important, voir même vital, de comprendre le principe du raisonnement qui mène à la construction d'un programme. Il faut toujours se poser la question suivante: Je veux qu'il se passe quoi, lorsque quel événement se produit et sur quel objet? Répondre à ces trois questions est obligatoire. Si un doute subsiste concernant ne serait-ce qu'une de ces trois questions, alors le principe même de la réalisation d'applications Windows avec Delphi est fortement compromis. Pour chacun de nos trois objets nous allons répondre à ces trois questions: - Je veux qu'il se passe "rendre le bouton Dessin visible" quand l'événement "changement du contenu et contenu vaut ‘Go’" se produit sur l'objet "Edit" - Je veux qu'il se passe "arrêt du programme" quand l'événement "cliquer" se produit sur l'objet "bouton Fin" - Je veux qu'il se passe "ouvrir une seconde fiche" quand l'événement "cliquer" se produit sur l'objet "bouton Dessin" En effet, il y a généralement une réponse lorsqu'un événement survient sur un objet donné. Voyons maintenant comment implémenter ces réponses. Nous décrivons ici une des diverses méthodes permettant de placer des instructions de programme (du code) "derrière" un objet en réponse à un événement. Commencez par cliquer sur le champ Edit pour le sélectionner. Chapitre 2 : Premier pas avec Delphi 39 Fig. 2.7 Dans l'inspecteur d'objets, choisissez l'onglet Evénements et double-cliquez dans la case blanche en face de l'événement OnChange. Cela signifie que l'on veut écrire du code qui sera exécuté chaque fois que le contenu de cet objet change: Fig. 2.8 Voici ce qui apparaît alors Fig. 2.9 42 Chapitre 2 : Premier pas avec Delphi Placez encore le code suivant dans l'événement OnClick du bouton Fermer de la seconde fiche: Fig. 2.14. A ce stade vous pouvez déjà exécuter le programme, appeler la seconde fiche, la fermer, etc. Toutefois, la seconde fiche ne contient pas d'image visible. Nous allons voir trois (03) possibilités de placer une image dans cette fiche : Première solution : Dans l’inspecteur d’objet placer une image dans la propriété Picture de l'objet Image1 en cliquant sur les 3 points à côté de ‘(Aucun)’. Fig. 2.15 Chapitre 2 : Premier pas avec Delphi 43 Voici comment se présente la fiche après avoir choisi une image: Fig. 2.16 Deuxième solution: Charger une image depuis le code lorsque la fiche Expo est activée. Par exemple, placez le code suivant dans l'événement OnActivate de la fiche Expo: En effet, la propriété Picture possède une méthode LoadFromFile permettant de charger une image. Fig. 2.17. Troisième solution: Proposer à l'utilisateur de choisir lui-même l'image qu'il veut voir. Pour cela, on utilise une des boites de dialogues standard proposés par Windows. Supprimez le code figurant sur la figure 2.17 Ajouter un bouton dont le nom est Charger sur la seconde fiche. Ajouter sur cette même fiche un dialogue standard que l'on appellera Ouvrir. Voici comment se présente la fiche: 44 Chapitre 2 : Premier pas avec Delphi Fig. 2.18. Placer le code suivant dans l'événement OnClick du bouton Charger: Fig. 2.19. Lors de l'exécution du programme, voici le dialogue qui apparaît quand on clique sur le bouton Charger: Fig. 2.20. Chapitre 2 : Premier pas avec Delphi 47 Comment imprimer ? Il y a plusieurs manière d'imprimer avec Delphi 1. Impression du contenu d'une fiche : Si on place un bouton Print dans une fiche il est possible d'imprimer le contenu de la fiche de la manière suivante: procedure Tform1.PrintClick (Sender: Tobject); begin Print; end; 2. Utilisation du print dialog : Voici un exemple d'utilisation du dialogue standard d'impression: procedure Tform1.PrintClick (Sender: Tobject); var i : integer; begin if PD1.execute then begin Print; if (PD1.Copies > 1) then for i := 1 to PD1.Copies - 1 do Print; end; end; 3. Impression par la méthode "brute" : Lorsqu'il s'agit d'imprimer du texte sans trop de raffinements, avec une seule fonte, on peut utiliser une méthode simple, dont voici un exemple: procedure Tform1.ImprimerClick(Sender: TObject); var PrintFile: system.text; i : integer; begin if PD1.execute then begin assignPrn (PrintFile); Rewrite (PrintFile); Printer.Canvas.Font := Liste.Font; for i := 0 to Liste.Items.count - 1 do Writeln (PrintFile, Liste.Items[i]); System.CloseFile (PrintFile); 48 Chapitre 2 : Premier pas avec Delphi end; end; - Il faut cependant ajouter l'unité Printers dans la clause uses. Comment introduire un délai d'attente ? Dans un environnement comme Windows, et de surcroît Windows 95 ou Windows NT, il n’est pas judicieux d’introduire une temporisation comme en mode "DOS" avec une instruction du genre Delay(nnn). En effet, il faut éviter de monopoliser le processeur dans un environnement multitâches. D’autres moyens permettent d’obtenir le résultat désiré. Dans Delphi 1.0 on peut utiliser un Timer avec la propriété Interval ayant pour valeur le délai désiré. Une fois l’événement OnTimer déclenché, il suffit de désactiver le Timer. Delphi 2.0 (et version ulterieure) permet de faire appel à la fonction Sleep. Pour obtenir un délai de 3 secondes on écrira: Sleep (3000); Comment laisser la main à Windows de temps à autre ? Il est parfois important de laisser Windows répondre à des messages provenant de l'application en cours ou d'autres applications concurrentes. C'est le cas, par exemple, lors de longues boucles de calculs ou lorsque l'on veut laisser réagir l'application en cours. Dans ces cas on peut insérer l'instruction: Application.ProcessMessages; Ceci permet, par exemple dans une boucle sans fin, de pouvoir arrêter normalement l'application. En effet, la demande d'arrêt de l'application se traduit par l'envoi d'un message. Pour qu'il soit pris en compte, il faut laisser Windows prendre la main. Application comportant plusieurs fiches : Généralement, lorsque l'on maîtrise l'appel et l'affichage des fiches, on a tendance à créer des applications comportant beaucoup de fiches. Ce n'est pas toujours une bonne idée. Pour s'en convaincre, il suffit de regarder autour de soi. Beaucoup d'applications (Word, Excel, programme de dessin divers…) sont de type MDI (avec une fiche principale et une ou plusieurs fenêtres filles, toutes du même type). Il est assez rare de voir des applications qui ouvrent de multiples fenêtres. Mais alors, comment faire ? Chapitre 2 : Premier pas avec Delphi 49 Plusieurs techniques sont possibles, permettant de réduire le nombre de fiches. On peut: - utiliser une seule fiche et changer sont contenu selon les besoins; - faire abondamment appel aux boîtes de dialogue depuis une fiche principales - utiliser les fiches multipages à onglets; - changer de métier. Si toutefois, on est contraint à l'utilisation de plusieurs fiches, il faut connaître quelques principes. Supposons que depuis Form1 (dans Unit1) on veuille ouvrir Form2 (dans unit2); il convient de placer la clause uses unit2 dans la partie Implementation de l'unité Unit1. En cas d'oubli, Delphi propose de placer cette clause à votre place par le message suivant: Après avoir accepté voici la clause uses que Delphi ajoute à l'unité de la Form1: unit Unit1; interface … implementation uses Unit2; Voyons maintenant ce que signifie exactement afficher une fenêtre. Quand on commence une nouvelle application (avec une fiche vide) le projet se présente sous la forme suivante: program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. 52 T r a v a u x d i r i g é s Ex e r c ic e n ° 2 : Dans cet exercice : - Création d’une application contenant deux(2) fenêtres. L’exercice qui suit vise à réaliser une application qui effectue les opérations suivantes : Lorsqu’on clique sur un bouton, dans la fenêtre principale le message « bonjour le monde » s’affiche sur une zone de texte appartenant à une fenêtre secondaire. Lorsqu’on clique sur un autre bouton, dans la fenêtre principale, la fenêtre se ferme et l’application se termine. Lorsqu’on clique sur le bouton, de la fenêtre secondaire, la fenêtre se ferme et on retourne à la fenêtre principale. Ce qu’on doit obtenir : A la fin de cet exercice on obtient les formes suivantes : Lorsqu’on clique sur le bouton afficher la fenêtre suivante s’affiche : T r a v a u x d i r i g é s 53 Ex e r c ic e n ° 3 : Dans cet exercice : - Affichage d’une image sur une fenêtre en utilisant un composant Image. - Utilisation du composant OpenPictureDialog. Cet exercice vise à : Afficher une image sur une fenêtre. Lorsqu’on clique sur un bouton, dans la fenêtre principale une boîte de dialogue s’affiche en permettant ainsi de charger une autre image. Lorsqu’on clique sur un autre bouton, dans la fenêtre principale, la fenêtre se ferme et l’application se termine. Ce qu’on doit obtenir : A la fin de cet exercice on obtient les formes suivantes. 54 T r a v a u x d i r i g é s Si on choisit le bouton changer la boite suivante s’affiche pour permettre de choisir une autre image. Corrigé des exercices 57 Ex e r c ic e n ° 2 : Ce qui a été demandé : A la fin de cet exercice on devait obtenir les formes suivantes : Lorsqu’on clique sur le bouton afficher la fenêtre suivante s’affiche : S u r v o t r e m i c r o : Pour réaliser cet exercice on suit les étapes suivantes : Ouvrir Delphi, s’il n’est pas encore ouvert, ou choisir dans le menu Fichier le sous menu Nouvelle application. Le projet est maintenant constitué d’une seule fenêtre appelée Form1. Dans la palette des composants choisir l’onglet Standard, placer un bouton de commande Button sur la fenêtre Form1.ce bouton à pour nom Button1 Dans l’inspecteur d’objet et dans l’onglet Propriétés définir la valeur Caption de ce bouton et lui attribuer la valeur ‘Afficher’. Insérer un deuxième composant Button et attribuer la valeur ‘Quitter’ à sa propriété Caption, ce bouton a pour nom Button2. 58 Corrigé des exercices Dimensionnez la fenêtre pour qu’elle ait une bonne présentation. Ajouter une nouvelle fenêtre, en sélectionnant Nouvelle Fenêtre dans le menu Fichier, elle aura pour nom Form2. Insérer un composant Button sur la fenêtre Form2 et attribuer la valeur ‘Fermer’ à sa propriété caption, ce bouton a pour nom button1. Dans la palette des composants choisir l’onglet Standard, placer une zone de saisie Edit sur la fenêtre Form2. Ce Text a pour nom la valeur text1 Sélectionner le contrôle Text appuyer sur F11 et dans l’inspecteur d’objet et dans l’onglet Propriétés effacer la valeur de la propriété Text. Dimensionnez la fenêtre pour qu’elle ait une bonne présentation. Maintenant la maquette de l’application est prête. il est donc nécessaire de rajouter le code correspondant à chaque composant. Double-cliquer sur le bouton Afficher, de Form1. Delphi crée la déclaration de la procédure correspondant à l’événement OnClick du bouton. Et en rajoutant les instructions adéquates cette procédure sera comme suit : procedure TForm1.Button1Click(Sender: TObject); begin Form2.edit1.text:= 'Bonjour le monde'; {1} Form2.showmodal; {2} end; - L’instruction {1} permet d’affecter la valeur ‘Bonjour le monde’ à la propriété Text du contrôle Edit1 se trouvant dans la fenêtre Form2. - L’instruction {2} permet d’afficher la fenêtre Form2 en mode modal c’est-à- dire aucune instruction n’est accessible dans l’application sauf celle-ci, par contre si on avait mis ‘Form2.show’ les autres fenêtres seraient inaccessibles Double-cliquer sur le bouton Quitter, et dans la procédure correspondante à l’événement OnClick du bouton Button2 rajouter les instructions adéquates. Cette procédure doit être comme suit : Procedure TForm1.Button2Click(Sender: TObject); Begin Close; {1} End; - L’instruction {1} permet de fermer la fenêtre Form1 ainsi que l’application. Corrigé des exercices 59 Sélectionner le bouton Fermer dans Form2 et ajouter le code correspondant à l’événement OnClick. cette procédure doit être comme suit : Procedure Tform2.Button2Click(Sender: TObject); Begin Close; end; - La troisième ligne permet de fermer la fenêtre Forme2 et de revenir à la fenêtre Form1. Enregistrer le Projet, Form1 et Form2 en sélectionnant Enregistrer Tout dans le menu Fichier Ou en utilisant le bouton dans la barre d’outils Enfin Compiler et Exécuter le projet, en choisissant Exécuter dans le menu Exécuter ou appuyer sur F9. Delphi demandera « si vous voulez rajouter une référence de Form2 dans Form1 », répondre par oui. Delphi rajoute le code suivant : Implementation Uses unit2; {1} - L’instruction {1} indique que Form1 fait appelle à la fenêtre Form2
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved