You are on page 1of 65

DELPHI 7

Support de formation (1/3)

Initiation Delphi

Delphi 7 (1/3): Initiation

1 AVERTISSEMENT

Ce support est un document d'initiation dont le contenu se limite volontairement aux parties tudies et ne saurait se substituer la notice du concepteur du logiciel. La base utilise est Delphi6, dition Professionnelle: il est vident que ldition "Entreprise" comporte davantage de fonctionnalits qui ne seront pas abordes par ce document.

Ce document est distribu uniquement lors d'un cycle de formation Delphi ne peut tre reproduit partiellement ou intgralement: tous droits rservs. La connaissance pralable d'un langage de programmation structure (de prfrence Pascal) est fortement recommande, mais non indispensable. Conventions: le texte entre crochets reprsente une option facultative, le texte en italique des lignes de programme

Maurice GINDENSPERGER (V 5.1)

page 2/65

Delphi 7 (1/3): Initiation

2 INTRODUCTION
Delphi est un systme de dveloppement visuel rapide sous Windows (Rapid Application Development) qui permet de crer des applications fentres directement excutables (.EXE) et redistribuables librement sous Windows ou DOS. Il est noter qu'i existe une version pour Linux nomme KYLIX (compatible avec les composants CLX, il suffit de recompiler). Sa simplicit d'emploi autorise une utilisation immdiate, car il suffit de cliquer-glisser des composants dans une fiche et de grer quelques vnements pour crer des applications simples. Des assistants, modles et tuteurs interactifs facilitent la prise en main du logiciel. Delphi utilise le langage Pascal Orient Objet (il est toutefois possible d'utiliser d'anciennes sources en Pascal standard grce au compilateur en ligne de commande). Ce langage est facile apprendre et beaucoup plus simple que le C++ traditionnel. Les objets utiliss ont des proprits et des mthodes. Les proprits sont les caractristiques de l'objet (couleur, taille, ...) tandis que les mthodes sont les procdures (classiques ou vnementielles) et fonctions qui y sont rattaches. Des outils puissants sont rattachs Delphi. Le canevas facilite les graphismes et vite l'appel aux API de Windows (cette solution reste videmment possible). Les principales botes de dialogue de Windows existent en tant qu'objets et sont facilement rutilisables. L'utilitaire BDE permet la cration et l'accs ais aux bases de donnes de tous types. La liaison avec ACCESS se fait directement, grce un driver natif intgr. Il est facile d'crire des DLL utilisables par n'importe quel autre programme sous Windows. Ces DLL peuvent contenir des fiches Delphi, des procdures, des donnes ou des ressources graphiques (bitmaps, icnes, curseurs). La cration d'objets (visuels ou non) rutilisables est un gain de temps apprciable pour le dveloppement. L'intgration des objets Active X peut complter la bibliothque existante. Il existe d'autres systmes de dveloppement rapide sous Windows. Delphi est particulirement bien plac: moins de lignes de code et rapidit de compilation possibilit d'utiliser des procdures vnementielles partages notion de modles rutilisables (fiches, menus, objets) orientation objet totale et native richesse des composants fournis: pas d'OCX acheter en complment assembleur intgr, compilateur en ligne de commande dbogage facile au niveau du source et du processeur possibilit d'allocation dynamique de la mmoire en utilisant les pointeurs

Maurice GINDENSPERGER (V 5.1)

page 3/65

Delphi 7 (1/3): Initiation

3 Nouveauts
Consulter l'aide en ligne sous "nouveauts" On note des: la vue arborescente des objets

le dbogueur d'applications WEB, serveur WEB

de nombreux nouveaux composants dont o "TActionManager" qui permet de centraliser les procdures vnementielles de chaque fentre o les composants CLX qui peuvent tre ports sur LINUX o les composants ADO

Maurice GINDENSPERGER (V 5.1)

page 4/65

Delphi 7 (1/3): Initiation

4 PROGRAMMATION ORIENTEE OBJET


4.1 PRESENTATION Sans le savoir, vous utilisez des objets dans votre ordinateur. Par exemple, vous dsirez changer la carte graphique. C'est un objet: vous ne connaissez pas exactement son fonctionnement interne mais vous dsirez des rsultats. Vous pouvez interchanger facilement cet objet puisque l'interface est standard (connecteurs). Vous n'avez donc pas besoin de changer toute l'unit centrale ou de faire des tudes pousses en lectronique pour ce faire. Il suffit d'changer la carte par une autre plus performante. L'avantage de cette notion d'objet est la possibilit de partager les composants avec d'autres utilisateurs. Vous pouvez donner votre ancienne carte vido l'un de vos collaborateurs. D'autre part, il n'est pas ncessaire de connatre le dtail du fonctionnement de l'objet pour l'utiliser. La maintenance est facilite, il suffit d'changer l'objet sans toucher au reste de l'application. 4.2 CONCEPTS DE BASE Proprits Objet = entit Mthodes Procdures vnementielles Fonctions 4.2.1 Proprits Ce sont les composants de l'objet. Sa taille, sa couleur, son nom, ... sont des proprits. Les proprits sont initialises la cration de l'objet et certaines peuvent tre modifies par programmation. Delphi possde un diteur de proprits qui permet de les modifier en phase de conception de projet. 4.2.2 Mthodes Les mthodes relvent du comportement de l'objet: elles recensent ce que l'objet "sait" faire. S'il sait par exemple faire une multiplication, le nom du module de programme concern est appel mthode. simples

Maurice GINDENSPERGER (V 5.1)

page 5/65

Delphi 7 (1/3): Initiation

4.2.2.1 Fonctions Les fonctions sont des modules (ou sous-programmes) qui retournent une seule valeur ou rsultat aprs acceptation d'un certain nombre d'arguments (0 n). 4.2.2.2 Procdures simples Les procdures sont des modules qui effectuent des actions. Elles acceptent galement des arguments. Elles peuvent retourner des arguments modifis (s'ils sont dclars en donnersultat). 4.2.2.3 Procdures vnementielles Elles conditionnent les ractions de l'objet vis--vis des actions extrieures (clavier, souris, ...). Ce sont des procdures appeles par un dclencheur. Windows recense un grand nombre d'vnements dont la nature est prcise par un systme de messages internes. Par exemple, le fait d'appuyer sur une touche du clavier ou de dplacer la souris provoque l'mission d'un message interne Windows qui pourra tre trait par la procdure vnementielle. 4.2.3 Programmation structure Contrairement au premiers langages (basic) qui utilisaient des tiquettes avec des instructions de saut de type "goto" o l'on risquait un enchevtrement dans le droulement du programme, la POO demande une programmation modulaire et le langage Pascal est particulirement adapt. L'criture d'un programme se fait sous forme de blocs hirarchiss, ce qui permet une meilleure comprhension. L'indentation des modules donne une lecture proche du dveloppement algorithmique. 4.2.4 L'encapsulation C'est le concept de base de la POO. L'ide est de rassembler les donnes et les modules de programme dans une seule et mme structure appele objet. Les donnes sont appeles "proprits" et les modules sont les "mthodes". On peut utiliser des mthodes de l'objet sans connatre le dtail de l'implmentation de chacune d'elle. L'encapsulation protge les donnes contre leur utilisation par d'autres modules extrieurs. 4.2.5 L'hritage Les objets sont capables d'tre drivs partir d'objets prexistants. Les objets "fils" hritent les proprits et mthodes de leur parent de faon automatique. Il suffit alors de rajouter des proprits et mthodes spcifiques: ce procd est appel programmation par exception. De plus, tous les changements effectus dans l'objet "parent" sont rpercuts automatiquement sur les objets "descendants" sans manipulation supplmentaire.

Maurice GINDENSPERGER (V 5.1)

page 6/65

Delphi 7 (1/3): Initiation

4.2.6 Le polymorphisme Le nom d'une mthode existante peut tre rutilis dans un objet "fils" en dclarant une implmentation diffrente. Le polymorphisme est la capacit de dsigner des mthodes diffrentes (bien que portant le mme nom) en fonction de l'objet concern. Par exemple le signe "+" peut servir l'addition, la concatnation ou l'incrmentation d'une date. Dans le cas de redfinition(OVERRIDE) d'une mthode, il est possible de rutiliser le code hrit (INHERITED) et d'ajouter simplement quelques lignes (qui pourront par exemple redfinir certaines proprits). 4.2.7 Dveloppeur ou utilisateur? On distingue deux catgories de personnes. Les dveloppeurs qui connaissent bien la POO et qui crent des objets et les utilisateurs qui construisent leurs applications partir de ces objets prfabriqus. 4.3 LEXIQUE La source principale de confusion pour les dbutants en POO est le grand nombre de nouveaux termes techniques 4.3.1 Classe (CLASS) C'est l'ensemble des dfinitions, proprits et mthodes qui serviront crer l'objet. Elle dfinit la structure de l'objet et quelles en seront les proprits. Ses modifications seront rpercutes sur les classes descendantes. 4.3.2 Objet (OBJECT) C'est une instance de la classe. Il a une existence physique et occupe de la place en mmoire. Il est cr partir d'une classe. Toutes les modifications effectues en excution n'affectent en rien les descendants de sa classe. 4.3.3 Instanciation C'est le processus qui cre en mmoire un objet bas sur une classe.

Maurice GINDENSPERGER (V 5.1)

page 7/65

Delphi 7 (1/3): Initiation

4.3.4 Constructeur (CONSTRUCTOR) C'est le module de la classe qui dit au systme comment effectuer l'instanciation de celleci. Il rserve de la place mmoire et initialise certaines proprits. Delphi appelle cette mthode "Create". 4.3.5 Destructeur (DESTRUCTOR) C'est l'inverse du constructeur. Ce module est charg de librer la mmoire occupe par l'objet. ("Destroy" en Delphi). 4.3.6 Classe anctre C'est une classe partir de laquelle sont hrites les proprits et les mthodes. Ce n'est pas obligatoirement la classe parente immdiate, mais elle peut tre plus leve hirarchiquement. 4.3.7 Classe parent C'est la classe immdiatement suprieure au niveau hirarchique 4.3.8 Classe enfant C'est la classe immdiatement infrieure au niveau hirarchique 4.3.9 Classe descendante Son niveau hirarchique est infrieur la classe considre. Ce n'est pas obligatoirement la classe enfant qui est situe directement au niveau infrieur suivant. 4.3.10 Propritaire(OWNER) Une application est propritaire des fentres qu'elle manipule. Une fentre est propritaire des objets quelle contient. Un panneau, comme la barre d'outils, est propritaire de ses turboboutons... 4.3.11 Hritage Une classe hrite automatiquement des proprits et mthodes de ses anctres.

Maurice GINDENSPERGER (V 5.1)

page 8/65

Delphi 7 (1/3): Initiation

4.4 CONCLUSION Le but de la POO est de crer des composants rutilisables pour faciliter la cration de projets par assemblage d'lments prfabriqus. Les avantages sont normes: rutilisation de l'existant sans limite (pas d'critures rptitives), dveloppement RAD visuel possible (une application peut se crer comme un assemblage lors d'un puzzle), cloisonnement de scurit entre les donnes (vite les effets de bord), facilit d'volution (il suffit de placer des objets plus volus), et de maintenance (possibilit de tester individuellement chaque objet). L'hritage et le polymorphisme accroissent de faon sensible la productivit du programmeur.

Maurice GINDENSPERGER (V 5.1)

page 9/65

Delphi 7 (1/3): Initiation

5 Les objets de Windows (rappel)


Sur le bureau de Windows, on peut trouver 4 types d'objets: des programmes des documents des dossiers des raccourcis vers les 3 types d'objets prcits. Les objets visuels peuvent tre manipuls grce la souris:

action
slection dslection ouverture fermeture dplacement duplication interrogation destruction insertion

manipulation souris
clic sur l'objet

rsultat

l'objet change de couleur ou des poignes apparaissent clic en dehors de l'objet l'objet reprend sa couleur initiale ou ses poignes disparaissent double-clic sur l'objet soit on se trouve dans l'application correspondante l'objet, soit on voit ses proprits clic en dehors ou sur bouton X l'objet est ferm cliquer-glisser sur (parfois le bord) de l'objet est dplac l'objet Ctrl + cliquer-glisser sur (parfois le il y a deux objets identiques bord) de l'objet clic-droit sur l'objet apparition d'un menu surgissant appel contextuel slection puis touche "Suppr" l'objet a disparu menu contextuel sur l'objet suivant il y a 1 objet en plus

Maurice GINDENSPERGER (V 5.1)

page 10/65

Delphi 7 (1/3): Initiation

6 L'cran de Delphi

On voit la barre de titre, la barre des menus, la barre d'outils ( gauche), la palette des composants, la fentre principale, l'diteur de code (en dessous) et l'diteur de proprits (et la vue arborescente des objets). Une fiche est cre d'office, c'est la fentre principale de l'application (modifiable). Touches de fonction importantes: F12: bascule entre l'affichage de la fiche et son code F11: fait apparatre l'inspecteur d'objets.

Maurice GINDENSPERGER (V 5.1)

page 11/65

Delphi 7 (1/3): Initiation

6.1 La barre d'outils (paramtrable):

Des infos-bulle donnent la signification des boutons. Le paramtrage peut se faire en appelant le menu contextuel (clic-droit).

Il est intressant de placer les boutons suivants: Nouvelle application, tout enregistrer Dfaire et refaire Couper, copier, coller Vrifier la syntaxe Excuter, pas pas Voir une fiche Voir la palette d'alignement Rubriques d'aide Aide sur les API Windows

Maurice GINDENSPERGER (V 5.1)

page 12/65

Delphi 7 (1/3): Initiation

6.2 La palette des composants

C'est une barre d'outils de type particulier: on y trouve les objets qui existent dj dans Delphi. Les onglets correspondent aux catgories de composants: cliquer sur l'onglet pour changer de palette. Pour placer un composant dans la fiche, on peut cliquer sur un composant puis cliquer dans la fiche (cliquer-glisser pour redimensionner de suite). Il est galement possible de double-cliquer sur un composant: il se mettra automatiquement au centre de la fiche en cours. Pour placer plusieurs composants identiques, slectionner le type avec maj-clic. Il existe divers types de composants: visuels: ils sont visibles l'excution (sauf indication contraire); certains d'entre eux peuvent prendre le "focus", c'est dire tre slectionns par l'utilisateur non-visuels: ne sont visibles qu'en phase de cration; ils disparaissent l'excution. Les composants peuvent se reproduire avec copier-coller. Voici les composants les plus utiliss dans une application standard.

Maurice GINDENSPERGER (V 5.1)

page 13/65

Delphi 7 (1/3): Initiation

6.2.1 Les composants de la page Standard Les composants de la page Standard de la palette des composants permettent d'utiliser dans une application Delphi les contrles standard de Windows :

Composant Cadre MainMenu PopupMenu Label Edit Memo Button CheckBox

RadioButton

ListBox ComboBox ScrollBar GroupBox RadioGroup Panel ActionList

Utilisation Composant cadre (nouveau): sert de conteneur de composants Menu principal Menu surgissant Texte en lecture seule pour l'utilisateur (ex: titre) Texte en lecture-criture modifiable par l'utilisateur (zone de saisie) Mmo: comme le composant prcdent, mais possibilit d'utiliser plusieurs lignes de texte Bouton d'action: c'est le composant le plus utilis Case cocher. Propose une option que l'utilisateur peut faire passer de Oui Non ou de Vrai Faux. Les cases cocher peuvent servir afficher un groupe de choix qui ne sont pas mutuellement exclusifs. Les utilisateurs peuvent slectionner plusieurs cases cocher dans un groupe. Bouton radio. Propose une option que l'utilisateur peut faire passer de Oui Non ou de Vrai Faux. Les boutons radio peuvent servir afficher un groupe de choix qui sont mutuellement exclusifs. Les utilisateurs ne peuvent slectionner qu'un seul bouton radio par groupe. Bote liste. Affiche une liste droulante de choix. Bote options. Affiche une liste de choix en combinant une bote liste et une bote de saisie. Les utilisateurs peuvent saisir des donnes dans la bote de saisie ou slectionner un lment dans la zone bote liste. Barre de dfilement. Propose un moyen de modifier la zone visualise d'une liste ou d'une fiche. Une barre de dfilement peut galement tre utilise pour se dplacer par incrments dans un intervalle de valeurs. Bote groupe. Sert de conteneur des options associes dans une fiche. Groupe de boutons radio. Cre une bote groupe qui contient des boutons radio sur une fiche. Volet. Cre dans une fiche des volets pouvant contenir d'autres composants. Les volets peuvent servir crer des barres d'outils ou des lignes d'tat. Composant permettant la centralisation du code vnementiel

Maurice GINDENSPERGER (V 5.1)

page 14/65

Delphi 7 (1/3): Initiation

6.2.2 Les composants de la page Supplment

Les composants de la page "Supplment" de la palette des composants permettent d'utiliser dans une application Delphi des contrles Windows spcialiss : Composant BitBtn SpeedButton MaskEdit StringGrid DrawGrid Image Shape Bevel ScrollBox CheckListBox Splitter StaticText Utilisation Bouton bitmap. Cre un composant bouton pouvant afficher une image. TurboBouton. Propose un bouton pouvant afficher une image mais pas un libell. Les TurboBoutons sont frquemment regroups dans un volet afin de crer une barre d'outils. Comme le composant "Edit" mais permet une saisie formate Grille de chanes. Cre une grille pouvant tre utilise pour afficher des donnes chanes de caractres en lignes et en colonnes comme dans un tableur. Grille d'affichage. Cre une grille permettant d'afficher des donnes en lignes et en colonnes. Plus difficile utiliser que le composant prcdent. Image, gre maintenant galement les jpeg Forme. Dessine des formes gomtriques : cercle ou ellipse, carr ou rectangle (arrondi ou non). Biseau. Cre des lignes ou des botes avec un aspect tridimensionnel cisel. Bote de dfilement. Cre un conteneur redimensionnable affichant automatiquement des barres de dfilement lorsque c'est ncessaire. Bote liste de cases cocher. Affiche une liste droulante semblable une bote liste, mais avec une case cocher ct de chaque lment. Diviseur. Plac sur une fiche entre deux contrles aligns, il permet aux utilisateurs de redimensionner les contrles, l'excution, en faisant glisser la ligne de division. Texte statique. Un composant texte non modifiable, comme le composant Label, mais contenant un handle de fentre, ce qui est utile quand la touche raccourci du composant doit appartenir un contrle fentr. Utilisez le composant StaticText pour donner l'utilisateur des informations sur l'tat en cours de l'application. Composant utilis pour contenir des barres d'outils Contrle des vnements au niveau application (nouveau) Gre des couples: cl, valeur Zone de saisie avec tiquette Liste de couleurs pour choix Graphique Composant centralisateur de procdures vnementielles Barre de menu d'ActionManager Barre d'outils d'ActionManager Bote de dialogue permettant l'utilisateur de configurer les 2 composants page 15/65

ControlBar Application Events Value List Editor Labeled Edit ColorBox Chart ActionManager ActionMainMenu Bar ActionToolBar CustomizeDlg

Maurice GINDENSPERGER (V 5.1)

Delphi 7 (1/3): Initiation

prcdents

Maurice GINDENSPERGER (V 5.1)

page 16/65

Delphi 7 (1/3): Initiation

6.2.3 Les composants de la page Win32

Les composants de la page Win32 de la palette des composants permettent d'utiliser dans une application Delphi des contrles d'interface utilisateur standard de Windows 32 bits (Windows 95, 98 ou NT). Composant TabControl PageControl ImageList RichEdit TrackBar ProgressBar HotKey Animate DateTimePicker MonthCalendar TreeView ListView HeaderControl StatusBar ToolBar CoolBar PageScroller ComboBoxEx Utilisation Onglets: permet d'accder des pages d'informations Pages: comme le contrle prcdent, mais il y a de la place pour placer des composants Liste d'images: sert souvent stocker les images des boutons des barres d'outils modernes Editeur de texte format: crer un logiciel de traitement de textes devient facile avec ce composant Glissire de rglage: permet l'utilisateur de dfinir une valeur analogique Barre de progression: sert souvent indiquer la proportion d'achvement du travail Raccourci-clavier qui peut tre dfini par l'utilisateur Clip vido muet Bote liste permettant la saisie de dates ou d'heures. Calendrier: l'utilisateur peut slectionner une date ou une plage de dates Vue arborescence Affichage mode liste Entte de colonne Barre d'tat Barre d'outils nouvelle gnration Barres d'outils multiples style "internet explorer' Zone d'affichage pouvant servir aux barres d'outils Liste droulante avec images

Maurice GINDENSPERGER (V 5.1)

page 17/65

Delphi 7 (1/3): Initiation

6.2.4 Les composants de la page Systme

Grce aux composants de la page Systme de la palette des composants, il est possible d'utiliser dans une application Delphi des contrles spcialiss du systme. Composant Timer PaintBox MediaPlayer OleContainer DdeClientConv DdeClientItem DdeServerConv DdeServerItem Utilisation Minuterie: permet de dclencher des vnements intervalles rguliers Bote peindre. Spcifie une zone rectangulaire de la fiche constituant la dlimitation des dessins de l'application. Multimdia. Affiche un contrle de style tlcommande pour lire ou enregistrer des fichiers multimdias son ou vido. Conteneur OLE. Cre dans une fiche une zone client OLE (Incorporation et Liaison d'Objet). Conversation client DDE. tablit une connexion client avec une application serveur DDE (change Dynamique de Donnes). lment client DDE. Spcifie les donnes du client DDE (change Dynamique de Donnes) transfrer lors d'une conversation DDE. Conversation serveur DDE. tablit une connexion serveur avec une application client DDE (change Dynamique de Donnes). lment serveur DDE. Spcifie les donnes du serveur DDE (change Dynamique de Donnes) transfrer lors d'une conversation DDE.

Maurice GINDENSPERGER (V 5.1)

page 18/65

Delphi 7 (1/3): Initiation

6.2.5 Les composants de la page Dialogues

Les composants de la page Dialogues de la palette des composants permettent d'utiliser dans une application Delphi les botes de dialogues communes de Windows. Grce ces botes de dialogue, il est possible de proposer une interface homogne pour des oprations relatives aux fichiers (comme l'enregistrement, l'ouverture ou l'impression). Une bote de dialogue commune est ouverte lors de l'excution de sa mthode "Execute". Celle-ci renvoie l'une des valeurs boolennes suivantes : "True", si l'utilisateur choisit OK et valide la bote de dialogue "False", si l'utilisateur choisit Annuler ou quitte la bote de dialogue sans enregistrer aucune modification. Chaque composant Bote de dialogue commune (sauf le composant "PrinterSetup") a un ensemble de proprits regroupes sous l'intitul Options dans l'inspecteur d'objets. Les proprits Options interviennent sur l'aspect et le comportement des botes de dialogue communes. Pour afficher les proprits Options, double-cliquez sur "Options" dans l'inspecteur d'objets. Pour fermer par programmation une bote de dialogue, utilisez la mthode "CloseDialog". Pour modifier la position d'une bote de dialogue l'excution, utilisez les proprits Handle, Left, Top et Position. Composant OpenDialog SaveDialog OpenPictureDialog SavePictureDialog FontDialog ColorDialog PrintDialog PrinterSetupDialog FindDialog ReplaceDialog Utilisation Bote de dialogue d'ouverture. Bote de dialogue d'enregistrement. Bote de dialogue d'ouverture d'image avec prvisualisation Bote de dialogue d'enregistrement d'image avec prvisualisation Bote de dialogue des polices Bote de dialogue des couleurs Bote de dialogue d'impression Bote de dialogue de configuration d'impression. Bote de dialogue de recherche Bote de dialogue de remplacement

Maurice GINDENSPERGER (V 5.1)

page 19/65

Delphi 7 (1/3): Initiation

6.2.6 Les composants de la page Win3.1

Les composants de la page Win3.1 de la palette des composants permettent d'utiliser dans vos applications Delphi des contrles de Windows 3.1 pour assurer la compatibilit avec les applications construites avec des versions prcdentes de Delphi. La plupart de ces anciens contrles offrent le mme comportement que les derniers contrles 32 bits. Important : Evitez ces contrles lorsque vous crez de nouvelles applications. Le tableau suivant indique les contrles utiliser la place des anciens contrles : Contrle Win 3.1 DBLookupList DBLookupCombo TabSet Outline Header NoteBook TabbedNoteBook Composant DBLookupList DBLookupCombo TabSet Outline TabbedNotebook Notebook Remplacez-le par DBLookupListBox DBLookupComboBox TabControl TreeView HeaderControl PageControl PageControl Page du nouveau contrle ContrleBD ContrleBD Win32 Win32 Win32 Win32 Win32

Utilisation Liste de rfrence de base de donnes. Bote de liste oriente donnes pour afficher l'excution les valeurs trouves dans les colonnes d'une autre table. Bote options de rfrence de base de donnes. Bote options oriente donnes pour afficher l'excution les valeurs trouves dans les colonnes d'une autre table. Onglets. Cre des onglets semblables ceux d'un classeur. Le composant TabSet peut s'utiliser avec le composant Notebook pour permettre aux utilisateurs de changer de page. Arborescence. Affiche des informations sous forme d'arborescences de diffrents formats. Classeur onglets. Cre une zone d'affichage des donnes. Les utilisateurs peuvent redimensionner chaque section de cette zone pour y afficher diffrentes quantits de donnes. Classeur. Cre un composant pouvant contenir plusieurs pages. Le composant TabSet peut s'utiliser avec le composant Notebook pour permettre aux utilisateurs de changer de page.

Maurice GINDENSPERGER (V 5.1)

page 20/65

Delphi 7 (1/3): Initiation

Composant Header FileListBox DirectoryListBox DriveComboBox FilterComboBox

Utilisation En-tte. Cre une zone d'affichage des donnes. Les utilisateurs peuvent redimensionner chaque section de cette zone pour y afficher diffrentes quantits de donnes. Bote liste de fichiers. Affiche une liste droulante des fichiers du rpertoire en cours. Bote liste des rpertoires. Affiche la structure des rpertoires du lecteur actif. Les utilisateurs peuvent changer de rpertoire dans une bote liste des rpertoires. Bote options des lecteurs. Affiche une liste droulante des lecteurs disponibles. Bote options de filtrage. Spcifie un filtre ou un masque afin d'afficher un sous-ensemble des fichiers.

Maurice GINDENSPERGER (V 5.1)

page 21/65

Delphi 7 (1/3): Initiation

6.3 L'inspecteur d'objets

L'inspecteur d'objets de Delphi est la passerelle entre l'aspect visuel de votre application et le code qui lui permet de fonctionner. L'inspecteur d'objets vous permet de : dfinir en mode conception les proprits des composants que vous placez sur une fiche (ou de la fiche elle-mme), crer les gestionnaires d'vnements. Le slecteur d'objet en haut de l'inspecteur affiche est une liste droulante contenant tous les composants de la fiche active, ainsi que leur type. Vous pouvez ainsi slectionner rapidement diffrents composants de la fiche active. Vous pouvez modifier la largeur des colonnes de l'Inspecteur d'objets en faisant glisser la ligne de sparation vers une nouvelle position.

Maurice GINDENSPERGER (V 5.1)

page 22/65

Delphi 7 (1/3): Initiation

L'inspecteur d'objets comporte deux pages : 6.4 Page Proprits La page Proprits de l'Inspecteur d'objets vous permet, en mode conception, de dfinir les proprits des composants de votre fiche, mais aussi celles de la fiche. Vous pouvez dfinir des proprits d'excution en crivant directement du code source dans les gestionnaires d'vnements. La page Proprits n'affiche que les proprits du composant slectionn dans la fiche. Dfinir les proprits d'un composant en mode conception revient dfinir son tat initial. Des proprits peuvent tre imbriques: dans ce cas, elle sont prcdes par une flche. Pour dvelopper l'arborescence, double-cliquez. La prsence de 3 points de suspension (...) indique la prsence d'un diteur de proprits particulier. On trouve galement des listes droulantes. 6.5 Page Evnements La page Evnements de l'Inspecteur d'objets vous permet d'associer des vnements aux objets de votre projet. Trois utilisations sont possibles: UTILISATION double-clic cot de l'vnement EFFET cration automatique d'un entte de procdure par dfaut introduction d'un nom de procdure cration automatique d'un entte de procdure avec le nom choisi ouverture d'une liste droulante (s'il y a dj choix d'une procdure commune plusieurs des procdures compatibles) vnements

Maurice GINDENSPERGER (V 5.1)

page 23/65

Delphi 7 (1/3): Initiation

6.6 L'diteur de code

Dans certains cas, on voit dans la partie de gauche l'explorateur de code. Il facilite la navigation dans vos fichiers. La fentre de l'explorateur de code contient une arborescence qui montre tous les types, classes, proprits, mthodes, variables globales et routines globales dfinis dans votre unit. Il montre galement les autres units listes dans la clause uses L'diteur de code est un diteur complet. Il vous permet d'accder au code (source) des modules de votre projet. De nombreuses commandes sont disponibles dans le menu contextuel de l'diteur de code. Pour personnaliser l'diteur de code, utilisez la bote de dialogue "Outils" "Options d'environnement". Pour obtenir de l'aide sur un lment dans l'diteur de code, placez le pointeur de souris sur le terme qui vous intresse et appuyez sur F1. Lors de la compilation, si vous recevez un message d'erreur, Delphi : affiche l'erreur dans la bote de message de l'diteur de code met en surbrillance la ligne de code qui pose problme.

Maurice GINDENSPERGER (V 5.1)

page 24/65

Delphi 7 (1/3): Initiation

7 Premier projet
7.1 Notions lmentaires Un projet est un l'ensemble des fichiers ncessaires au fonctionnement de l'application. Quand on charge Delphi, un projet de base est cr. Il comporte une fentre prte recevoir diffrents objets.

On remarque la barre de titre, la case systme comportant une icne et des boutons pour agrandir, rduire ou fermer la fentre. L'inspecteur d'objets permet d'agir sur les proprits et mthodes vnementielles de l'objet.

Maurice GINDENSPERGER (V 5.1)

page 25/65

Delphi 7 (1/3): Initiation

Il est vident que cette premire application n'est pas encore excutable. Pour ce faire, il est ncessaire de compiler (traduire en binaire). Nous n'avons pas crit une ligne de programme, le systme s'en est charg. Examinons les lignes de code gnres (.PAS).

Lignes de code
unit Unit1;

Explications
nom du module source correspondant la fiche "Form1" ne pas changer ce nom directement, mais au moment de l'enregistrement entte pour dsigner la section qui sera "vue" par les autres modules permet d'inclure d'autres modules nom des modules inclus

interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Dclarations prives } public { Dclarations publiques } end; var Form1: TForm1; implementation {$R *.DFM} end.

dbut de la dclaration du type des objets dclaration d'un nouveau type d'objet de type fentre proprits et mthodes "prives" du type d'objet proprits et mthodes "publiques" du type d'objet; elles seront visibles par les autres modules fin de dclaration d'objet "achat" de variables globales instanciation de l'objet: allocation de mmoire vive dans cette section seront crites les mthodes des objets manipuls directive de compilation permettant d'inclure les dfinitions des fentres (.DFM) Fin du module

Maurice GINDENSPERGER (V 5.1)

page 26/65

Delphi 7 (1/3): Initiation

Ce module ne peut fonctionner seul. Un module de projet (.DPR) se charge de fdrer l'ensemble des modules, mais il n'est pas visible en ce moment. Pour le visualiser, ouvrez le menu "Projet" et choisissez "voir le source". Un onglet correspondant apparat dans l'diteur de code. program Project1; uses Forms, Unit1 in 'UNIT1.PAS' {Form1}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. nom du programme modules utiliss c'est le module de la fiche "Form1" directive de compilation permettant d'inclure les fichiers ressources (.RES) dbut du programme principal initialisation du programme cration de la fiche "Form1" de type Tform1 excution de l'application Fin du programme principal

On peut galement visualiser le code de la fiche (.DFM), grce l'option "voir comme texte" de son menu contextuel. object Form1: TForm1 Left = 295 Top = 132 Width = 696 Height = 480 Caption = 'Form1' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -13 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False PixelsPerInch = 120 TextHeight = 16 end Revenir la fiche avec "voir comme fiche" du menu contextuel. Pour enregistrer le projet, choisir "enregistrer projet sous" dans le menu fichier. Il faudra donner un nom aux diffrents modules (.PAS) et au projet (DPR).

Maurice GINDENSPERGER (V 5.1)

page 27/65

Delphi 7 (1/3): Initiation

7.2 Excution On peut vrifier la syntaxe du code, compiler ou excuter directement le projet. Pour disposer d'un excutable, il est ncessaire de compiler. En cas d'erreur, la compilation s'arrte et visualise un message d'erreur.

Si l'on dsire des renseignements sur l'erreur, il suffit cliquer sur le message d'erreur ou d'avertissement et d'appuyer sur la touche F1 (aide en ligne) et on obtient la fentre suivante:

Maurice GINDENSPERGER (V 5.1)

page 28/65

Delphi 7 (1/3): Initiation

Il suffit de rectifier le code et de relancer une compilation. Ensuite, on peut directement utiliser l'excutable gnr (.EXE). Quitter Delphi et lancer le programme depuis le l'explorateur Windows. Examen des fichiers gnrs: Suffixe dof dpr exe dcu dfm pas res cfg ddp Signification options de compilation et informations de versions source du projet programme excutable compil unit compile dfinition de la feuille source pascal ressources: icne de l'application configuration du compilateur diagrammes

Pour examiner certains de ces fichiers, il est pratique d'utiliser l'explorateur Windows. Mettre un raccourci vers le bloc-notes (notepad.exe) dans le rpertoire SendTo.

Maurice GINDENSPERGER (V 5.1)

page 29/65

Delphi 7 (1/3): Initiation

8 Modification du projet
Relancer Delphi et ouvrir le projet prcdent. Nous dsirons prsent installer un bouton qui change la couleur du fond de la fentre en rouge. 8.1 Mise en place du composant Choisir un bouton ("Tbutton") par un clic dans la palette standard et cliquer dans la fiche. On peut galement double-cliquer dans la palette et le bouton se mettra automatiquement au milieu de la fiche. Ce bouton se nomme "Button1" et ne fait rien pour l'instant. Si l'on examine le module source, on trouve sa dclaration dans les types. Deux proprits importantes: "caption" qui permet de changer l'affichage du texte sur le bouton et "name" qui est le nom qui servira adresser l'objet. Changer le nom du bouton (c'est indispensable pour les projets importants) avec quelque chose de plus significatif: BtRouge. On constate que la proprit "caption" est galement modifie. Changer cette proprit pour que le bouton affiche "Colorer en rouge". Le composant peut tre redimensionn grce ses poignes (visibles quand slectionn). 8.2 Affectation d'une procdure vnementielle La liste des vnements peut s'observer grce l'inspecteur d'objets. Pour crer une procdure simple "OnClic", il suffit de double-cliquer sur le bouton. Le code suivant est gnr: procedure Tform1.BtRougeClick(Sender: Tobject); begin end; Cette procdure vnementielle est prte accueillir une ou plusieurs lignes d'instructions entre "begin" et "end". Si l'on dsire rajouter des commentaires (et c'est indispensable pour une bonne maintenance), utiliser les mthodes suivantes: { commentaires: plusieurs lignes possibles } (* commentaires: plusieurs lignes possibles *) // commentaires: sur une seule ligne Si je ne connais pas la faon de colorer la fentre, je vais chercher les proprits de l'objet Tform grce l'aide en ligne. Il suffit de slectionner "Form1" et d'appuyer sur le touche F1. Ensuite, cliquer sur "proprits". La liste affiche "color": cliquer sur cette proprit. On trouve que "clRed" correspond au rouge.

Maurice GINDENSPERGER (V 5.1)

page 30/65

Delphi 7 (1/3): Initiation

Je vais donc complter la procdure pour obtenir le listing suivant: procedure Tform1.BtRougeClick(Sender: Tobject); {colore en rouge le fond de la fentre} begin Form1.color:=ClRed; end; Remarques: quand je tape "Form1.", l'diteur de code me propose la liste des proprits, mthodes et variables de l'objet. le sparateur entre objet et mthodes est le point et l'instruction d'affectation est ":=" et non "=" qui est rserv aux tests d'galit ou la dclaration des types. Les lignes d'instruction se terminent par le point-virgule. Enregistrer le projet, et vrifier son excution.

8.3 Amliorations Il est dommage de ne pas avoir de bouton pour remettre la couleur d'origine et un autre pour quitter le programme. On pourrait double-cliquer sur la fiche pour rtablir la couleur d'origine. Slectionner la fentre et double-cliquer ct de l'vnement "OnDblClick" dans l'inspecteur d'objet. Le code suivant est gnr: procedure Tform1.FormDblClick(Sender: Tobject); begin end; L'aide nous dit que "clWindow" pour la couleur de fond courante des fentres. La procdure devient donc: procedure Tform1.FormDblClick(Sender: Tobject); begin Form1.color:=clWindow; end; Excuter et tester. La palette "supplments" nous fournit un composant intressant: TBitBtn. C'est un bouton comportant une image (glyphe) et ayant des fonctions prprogrammes (Kind). Mettre cette proprit "Kind" "bkClose".

Maurice GINDENSPERGER (V 5.1)

page 31/65

Delphi 7 (1/3): Initiation

Aligner les deux boutons gauche grce la palette d'alignement (menu "Voir").

On peut slectionner plusieurs objets en cliquant-glissant pour tracer un rectangle qui les touche ou les englobe. Un menu contextuel sur les objets permet galement de les rendre de mme taille ou de les changer d'chelle: Prsenter les deux boutons de mme taille et aligns droite et gauche. Enregistrer et excuter.

Exercice:
Enlever le bouton "rouge" et placer trois curseurs dans des panneaux de couleur pour rgler l'intensit des 3 couleurs de base: rouge, vert et bleu. Les intensits varient de 0 255. La fonction RGB (voir l'aide en ligne) est utile. Un seul gestionnaire d'vnement suffira.

Maurice GINDENSPERGER (V 5.1)

page 32/65

Delphi 7 (1/3): Initiation

9 Elments de programmation
9.1 Dclaration de variables Une variable est un nom qui, dans du code, reprsente une adresse mmoire dont le contenu peut changer lorsque le code est excut. Vous devez dclarer une variable avant de l'utiliser. Les tapes requises sont les suivantes : Choix du nom d'une variable Choix du type d'une variable 9.1.1 Choix du nom d'une variable Lorsque vous dclarez une variable, vous devez choisir un nom. Pour faciliter la lecture de votre code, il est prfrable de choisir un nom parlant, qui vous rappelle la signification de la variable. Par exemple, Jour, Nom ou Total sont des noms plus vocateurs que X, Y ou Z. En dehors du choix de noms vocateurs, il convient de garder l'esprit un certain nombre de rgles qui s'appliquent aux variables et tous les autres identificateurs: Les identificateurs peuvent avoir une longueur de 63 caractres. Sils dpassent cette longueur, le compilateur ne tient pas compte des caractres supplmentaires. Les identificateurs doivent commencer par une lettre ou par un trait de soulignement (_). Les caractres suivants peuvent tre des lettres, des traits de soulignement ou les chiffres de 0 9. Ils ne peuvent contenir de caractres gnriques comme $, %, *, etc. Par exemple, si vous utilisez des identificateurs appels Faire@Midi ou Retour_en_ %, vous aurez une erreur de syntaxe. Vous ne devez pas utiliser un mot rserv de Pascal objet pour dsigner un identificateur: and, as, asm, array, begin, case, class, const, constructor, destructor, div, do, downto, else, end, except, exports, file, finally, for, function, goto, if, implementation, in, , inherited, inline, initialization, interface, is, label, library, mod, nil, not, object, of, or, packed, procedure, program, property, raise, record, repeat, set, shl, shr, string, then, to, try, type, unit, until, uses, var, while, with, xor Evitez dutiliser des identificateurs dj dfinis dans le langage Pascal objet pour dsigner vos identificateurs. Par exemple, les mots Boolean et Integer sont des types de donnes prdfinis. Conventions d'criture: nous allons adopter une sparation des significations par majuscules comme par exemple: TMonObjetPersonnelSecret. Interdiction formelle de mettre des espaces ou des accents.

Maurice GINDENSPERGER (V 5.1)

page 33/65

Delphi 7 (1/3): Initiation

9.1.2 Choix du type d'une variable Lorsque vous dclarez une variable, vous devez dclarer son type. Le type d'une variable dfinit l'ensemble des valeurs qu'elle peut contenir. En rgle gnrale, vous dclarerez une variable l o vous en aurez besoin. Par exemple, si vous voulez utiliser une variable dans un gestionnaire d'vnements, vous la dclarerez l'intrieur de celui-ci. Il s'agit dans ce cas d'une variable locale. Si la variable doit tre visible par plusieurs procdures ou fonctions, elle doit tre dclare avant la section implmentation: elle sera globale. Les dclarations de variables doivent toujours tre prcdes du nom rserv var. La dclaration elle-mme contient deux parties : celle de gauche est le nom de la nouvelle variable, celle de droite, son type. Ces deux parties sont spares par le signe deux points ( : ). Cet exemple contient trois dclarations de variables : Valeur, Somme et Ligne : var Valeur: Integer; Somme: Integer; Ligne: string; Comme Valeur et Somme sont toutes deux du type Integer (entier), la dclaration de variables peut tre prsente comme ci-dessous, avec une virgule pour sparer les deux variables du mme type : var Valeur, Somme: Integer; Ligne: string; Dans l'exemple suivant, nous supposons qu'il existe une bote de saisie appele Edit1 et un bouton appel BoutonAjouter dans la fiche. Trois variables (X, Y et Somme) sont dclares comme tant de type Integer. Lorsque l'utilisateur clique sur BoutonAjouter, des valeurs Integer sont affectes deux variables, X et Y, et ajoutes l'une l'autre. Le rsultat, Somme, apparat dans la bote de saisie : procedure Tform1.BoutonAjouterClick(Sender: Tobject); var X, Y, Somme: Integer; begin X := 100; Y := 10; Somme := X + Y; Edit1.Text := IntToStr(Somme); end;

Maurice GINDENSPERGER (V 5.1)

page 34/65

Delphi 7 (1/3): Initiation

La ligne ci-dessous affecte la valeur d'une expression une variable : Somme := X + Y; Une expression consiste gnralement en deux identificateurs lis l'un l'autre par un oprateur. Pour plus d'informations sur les expressions, reportez-vous l'entre "expression" dans l'index de l'aide de la VCL. Comme la proprit Text d'une bote de saisie est du type string et la variable Somme du type Integer, une ligne comme celle-ci ne peut pas tre autorise, car elle provoque une erreur d'incompatibilit de types l'excution ou la compilation : Edit1.Text := Somme; Au lieu de cela, la dernire ligne du gestionnaire de l'vnement utilise la fonction IntToStr de la bibliothque d'excution de Delphi pour convertir la valeur Somme en chane de caractres, puis elle affecte la valeur de la variable Somme la proprit Edit1.Text. Cette variante vite le risque d'affecter une valeur Somme : procedure Tform1.BoutonAjouterClick(Sender: Tobject); var X, Y: Integer; begin X := 100; Y := 10; Edit1.Text := IntToStr(X + Y); end;

Maurice GINDENSPERGER (V 5.1)

page 35/65

Delphi 7 (1/3): Initiation

9.1.3 TYPES DE DONNEES Plusieurs types de donnes sont intgrs au langage Pascal Objet. Vous pouvez crer des variables appartenant n'importe lequel de ces types prdfinis. Le tableau ci-dessous donne la liste (non exhaustive) des types de donnes prdfinis :

ENTIERS
type Integer Shortint Smallint Longint Int64 (nouveau) Byte Word Longword ou cardinal tendue 2147483648..2147483647 128..127 32768..32767 2147483648..2147483647 2^63..2^631 0..255 0..65535 0..4294967295 forme 32 bits sign 8 bits sign 16 bits sign 32 bits sign 64 bits sign 8 bits non sign 16 bits non sign 32 bits non sign

Il est facile d'utiliser des entiers en base hexadcimale: faire prcder le nombre par le signe $.

DECIMAUX
type Single Double (ancien real) Extended Comp Currency tendue 1.5 x 10^45 .. 3.4 x 10^38 5.0 x 10^324 .. 1.7 x 10^308 3.6 x 10^4951 .. 1.1 x 10^4932 2^63+1 .. 2^63 1 922337203685477.5808.. 922337203685477.5807 chiffres significatifs octets utiliss 78 4 1516 8 1920 1920 1920 10 8 8

BOOLEENS
Boolean Peut contenir les valeurs True ou False. Ncessite un octet de mmoire.

Maurice GINDENSPERGER (V 5.1)

page 36/65

Delphi 7 (1/3): Initiation

CARACTERES
AnsiChar WideChar Char Un caractre ANSI. Un caractre Unicode. Varie en fonction de l'implmentation. Dans cette version du Pascal Objet, Char est semblable AnsiChar.

On peut utiliser le code ANSI du caractre en le faisant prcder par le signe # (ex: #10). CHAINES Type ShortString AnsiString WideString String POINTEURS Un pointeur est une variable qui contient l'adresse mmoire de l'objet manipul. La dclaration se fait sous la forme: var NomPointeur: ^TypeObjet; ou par le mot-cl "pointer" qui reprsente un pointeur non typ ( transtyper lors avant le dfrencement). Utilisation: new(NomPointeur) rserve la mmoire correspondant l'objet NomPointeur^ permet de rcuprer l'objet dispose (NomPointeur) dtruit l'objet (pointeur nil) L'adresse d'un objet peut tre rcupre par la fonction Addr ou @. VARIANTS Variant Type de donnes pouvant contenir des valeurs de diffrents types, et pouvant convertir sa valeur en d'autres types de donnes. Longueur maximum 255 caractres ~2^31 caractres ~2^30 caractres Utilisation Compatibilit ascendante Caractre sur 8 bits (ANSI) Caractres Unicode; serveurs COM et interfaces Varie en fonction de la directive de compilation $H. Par dfaut, string est semblable AnsiString Mmoire ncessaire de 2 256 octets de 4 octets 2Go de 4 octets 2Go

Si vous ne voulez pas utiliser les types de donnes prdfinis, vous pouvez dfinir vos propres types de donnes. Les types prdfinis sont gnralement suffisants pour la plupart des applications Delphi.

Maurice GINDENSPERGER (V 5.1)

page 37/65

Delphi 7 (1/3): Initiation

9.1.4 Dclaration de constantes Alors que les variables contiennent des valeurs qui peuvent changer pendant lexcution de votre application, les constantes contiennent une valeur immuable que vous leur attribuez au moment o vous les dclarez. De la mme manire que vous dclarez les variables dans une dclaration de variable, les constantes sont dclarer dans une dclaration de constante. Une dclaration de constante doit commencer par le mot rserv const. Dans lexemple ci-dessous, nous avons trois dclarations de constantes : const Pi = 3.14159; Rponse = 342; Produit = 'Delphi'; Pi, Rponse, et Produit sont des noms de constantes qui dcrivent la valeur de celles-ci. Les valeurs relles des constantes, qui ne peuvent tre modifies au cours de lexcution de lapplication, sont 3.14159, 142 et Delphi. Il existe diffrents types de constantes, comme cest le cas pour les variables. Par contre, la diffrence de ces dernires, les constantes gardent le type de valeur dclar dans la dclaration de constante. Par exemple, la constante Pi est de type Real parce que la valeur 3.14159 est un nombre rel, Rponse est de type Integer parce que 342 est un entier et Produit est de type string, parce que Delphi est une chane. Il convient de noter que le signe gal (=), dans une dclaration de constante, diffre de loprateur daffectation (:=) des instructions daffectation. Dans une dclaration de constante, le signe gal indique que la partie gauche et la partie droite de la dclaration sont des valeurs gales. La mauvaise utilisation de loprateur gal dans le code Pascal objet est une erreur assez courante. Lorsque le compilateur rencontre un signe gal au lieu dun oprateur daffectation, il suppose que la partie gauche de linstruction est une constante ou quil y a comparaison de deux valeurs. Si ce nest pas ce que vous vouliez, Delphi affiche un message derreur de syntaxe. Si, inversement, vous avez fait lerreur dutiliser un oprateur daffectation dans une dclaration de constante, il se produit une erreur de syntaxe et un message apparat, vous informant que le compilateur attendait le signe gal.

Maurice GINDENSPERGER (V 5.1)

page 38/65

Delphi 7 (1/3): Initiation

Voici quelques exemples d'utilisation d'expressions constantes dans des dclarations de constantes : const Min = 0; Max = 100; Centre = (Max - Min) div 2; Beta = Chr(225); NombreCar = Ord('Z') - Ord('A') + 1; Message = 'Pas assez de mmoire'; ChaineErreur = ' Erreur : ' + Message + '. '; PosErreur = 80 - Length(ChaineErreur) div 2; Ln10 = 2.302585092994045684; Ln10R = 1 / Ln10; Numerique = ['0'..'9']; Alpha = ['A'..'Z', 'a'..'z']; AlphaNum = Alpha + Numerique;

Maurice GINDENSPERGER (V 5.1)

page 39/65

Delphi 7 (1/3): Initiation

9.1.5 Cration de nouveaux types de donnes Pascal objet est livr avec un certain nombre de types de donnes prdfinis, mais vous pouvez en crer d'autres: numr, intervalle, tableau, ensemble, enregistrement, objet. 9.1.5.1 Type numr Une dclaration de type numr donne la liste de toutes les valeurs que le type peut avoir. En voici quelques exemples : type TJours = (Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche); TCouleurPrimaire = (Rouge, Jaune, Bleu); TService = (Finances, Personnel, Ingenirie, Marketing, Informatique); TChien = (Caniche, PittBull, Chihuahua, BergerAllemnad, Teckel); Voici quelques variables de type numr : var JourSemaine : TJours; Teinte : TCouleurPrimaire; Service : TService; Race : TChien; Chaque valeur entre parenthses dans une dclaration de type numr a une valeur de type entier dtermine par sa position dans la liste. Par exemple, Lundi, dans la dclaration de type TJours a la valeur 0, Mardi a la valeur 1, et ainsi de suite. Vous pourriez obtenir le mme rsultat en dclarant la variable JourSemaine comme tant de type Integer et en affectant ensuite une valeur Integer pour reprsenter chaque jour de la semaine. Si ce systme donne de bons rsultats pour des sries ordonnes et prvisibles, comme les jours de la semaine ou les mois de lanne, mais est beaucoup moins utile si lordre des valeurs reprsentes est arbitraire. Il nest pas toujours facile de se souvenir de ce que reprsente un numro. Par exemple, laffectation: Race := Chihuahua; est beaucoup plus vocatrice que Race := 2; Quand vous listez une valeur dans un type numr, vous la dclarez comme identificateur. Si les dclarations de type numr et de variables prcdentes taient dans votre application, vous ne pourriez pas, de ce fait, dclarer une variable Finances, car cet identificateur existe dj.

Maurice GINDENSPERGER (V 5.1)

page 40/65

Delphi 7 (1/3): Initiation

9.1.5.2 Type intervalle Un type intervalle est un intervalle de valeur de type entier, boolen, caractre ou numr. Les intervalles sont utiles pour limiter le nombre de valeurs quune variable peut avoir. Pour crer un intervalle, spcifiez les valeurs minimale et maximale en les sparant par deux points (..), par exemple : 1..100 Exemples: type TFourchetteBoussole = 0..360; TLettresAdmises = 'A'..'F'; TSalaireMensuel = 10000..30000; THeures = 0..23; Ttemps = (Bruine, Giboules, Pluie, Averse, Orage) {type numr} TPluie = Bruine..Averse {intervalle de Ttemps} 9.1.5.3 Type tableau Un tableau est un ensemble ordonn dun type de donnes o chaque lment est spcifi par sa position par ordre numrique dans lensemble. Lors de la cration du tableau, les lments ne contiennent aucune valeur, mais vous pouvez les remplir avec des donnes et manipuler celles-ci votre guise. Voici un exemple de dclaration de variable pour un tableau de type Double : var Verif : array[1..10] of Double; Cette dclaration indique que la variable Verif dsigne une liste de dix variables de type rel, chacune ayant un numro (appel numro dindice) compris entre 1 et 10. Il est fait rfrence chaque lment dun tableau par le nom du tableau, suivi de son indice entre crochets ([ ]). Le tableau Verif contient donc les dix variables Verif[1], Verif[2], Verif[3], Verif[4] et ainsi de suite, jusqu Verif[10]. Vous pouvez utiliser nimporte laquelle de ces variables l o vous utiliseriez une variable Real ordinaire. En outre, la valeur dindice ne doit pas ncessairement tre une constante. Ce peut tre nimporte quelle expression donnant un entier compris entre 1 et 10. Par exemple, J := 5; Verif[J] := 0,0; Ces instructions affectent la valeur 0,0 la variable Verif[5]. Comme Verif est un tableau de type Double, la valeur que vous lui affectez doit tre de type Real et contenir une virgule dcimale. De plus, les valeurs Double devant commencer par un chiffre, vous ne pouvez pas crire 0,0 sous la forme ,0.

Maurice GINDENSPERGER (V 5.1)

page 41/65

Delphi 7 (1/3): Initiation

Si vous voulez attribuer la valeur zro toutes les variables Verif du tableau, vous pouvez le faire laide dune boucle for. Comme un indice peut tre une variable, il est plus facile dutiliser une boucle for que daffecter une valeur chaque lment du tableau avec des instructions daffectation distinctes. Cette boucle for affecte la valeur 0,0 aux dix variables : for J := 1 to 10 do Verif(J) := 0,0; Vous pouvez dfinir des tableaux en tant que types. Par exemple : type TVerif = array[1..100] of Double; Vous pouvez ensuite dclarer des variables du type tableau. Lexemple ci-dessous dclare que Compte est une variable de type TVerif, soit un tableau de 100 nombres rels. var Compte : TVerif; 9.1.5.4 Tableaux multidimensionnels Exemple: type TTable = array[1..20, 1..20] of Double;

9.1.5.5 Types de chanes Par dfaut, le compilateur utilise une chane longue pour la dclaration "string". La longueur de cette chane est limite uniquement par la mmoire disponible qui est alloue de faon dynamique. Il n'y a donc plus lieu de dclarer la taille de la chane. Exemple: var MaChaine: string; Si l'on dsire utiliser les anciennes chanes courtes, on peut utiliser "shortstring". Dans ce cas, la longueur est limite 255 caractres.

Maurice GINDENSPERGER (V 5.1)

page 42/65

Delphi 7 (1/3): Initiation

9.1.5.6 Type ensemble Un ensemble est un groupe dlments du mme type : entier, boolen, caractre, numr ou intervalle. Les ensembles servent vrifier si une valeur appartient un ensemble particulier. Exemple: procedure TForm1.Button1Click(Sender : TObject); type TVoyelles = set of Char; var Voyelles : TVoyelles begin Voyelles := ['A','E','I','O','U','Y' ]; if Edit1.Text[1] in Voyelles then Label2.Caption := 'Bravo !'; else Label2.Caption := 'Veuillez ressayer...'; end; 9.1.5.7 Type enregistrement Les enregistrements (ou structures) sont des ensembles de donnes auxquels votre application peut se rfrer globalement. Exemple: le type enregistrement TEmploy dclar comme suit : type TEmploy = record Nom : string[20]; Pren : string[15]; Embauch : 1990..2050; Salaire : Double; Poste : string[20]; end; Les enregistrements contiennent des champs contenant des valeurs de donnes. Chaque champ a un type de donnes. Les champs du type TEmploy sont Nom, Pren, Embauch, Salaire et Poste. Vous pouvez accder ces champs individuellement ou bien vous rfrer lenregistrement dans son ensemble. Il est galement possible de dclarer des structures comportant des types variables en fonction de la valeur d'un champ. Voici un exemple de dclaration de deux variables denregistrement : var NouvelEmploy, EmployPromu : TEmploy; Le code peut se rfrer au champ Salaire dun enregistrement NouvelEmploy, comme cidessous (le point spare le nom du champ de celui de l'enregistrement): NouvelEmploy.Salaire := 200000,00; Mais votre code peut aussi manipuler lenregistrement comme une entit part entire : EmployPromu := NouvelEmploy;
Maurice GINDENSPERGER (V 5.1)

page 43/65

Delphi 7 (1/3): Initiation

9.2 QUELQUES INSTRUCTIONS PASCAL

9.2.1 Affectation (:=) Le signe utilis est := en Pascal. Si l'on crit A:=B, le contenu de la variable A est dtruit et remplac par le contenu de la variable B. La variable B est donc inchange. Une erreur frquente est la confusion avec le signe = seul. Si j'cris A=B, ce n'est pas une affectation, mais une comparaison. Le rsultat sera vrai ("true") ou faux ("false"). Note: Le signe ; termine chaque instruction. S'il est omis, l'instruction se poursuit sur la ligne suivante. Les commentaires peuvent se mettre entre accolades, ou aprs un double-slash dans une mme ligne. 9.2.2 Signes opratoires + Addition ou concatnation (ex: catena:=#66+'on'+'jour') Soustraction ou inversion (unaire) * multiplication / division (rsultat de type rel) DIV division entire MOD modulo (reste de la division entire) 9.2.3 Logique boolenne (true-false) NOT Inversion logique AND Et logique OR Ou logique XOR Ou exclusif 9.2.4 Oprateurs relationnels = Egal Ne pas confondre avec l'instruction d'affectation (:=) > Infrieur <= Infrieur ou gal > Suprieur >= Suprieur ou gal <> Diffrend in A l'intrieur (d'un ensemble)

Maurice GINDENSPERGER (V 5.1)

page 44/65

Delphi 7 (1/3): Initiation

9.2.5 Les tests Ils permettent de prendre une dcision en fonction de la valeur d'une variable. Syntaxe: if condition then instruction [else instruction] Exemple: if age>65 then showmessage('retrait) // pas de ; car l'instruction n'est pas termine else begin // dbut de bloc showmessage('actif'); MessageBeep(MB_ICONEXCLAMATION); // ou beep() end; // fin de bloc et fin d'instruction Les instructions if peuvent tre imbriques. 9.2.6 Le slecteur Un slecteur se comporte comme un rotacteur en lectronique: il permet de faire un choix unique parmi un ensemble d'options. Attention, le slecteur doit faire partie d'un ensemble ordonn (le systme doit connatre le prcdent et le suivant). Syntaxe: case slecteur of cas1: instruction 1; cas2: instruction 2; (...) casn: instruction n [else instruction] end; Exemple: case Carac of '+': Op:='addition'; '-': Op:='soustraction'; '*': Op:='multiplication'; '/': Op:='division'; else Op:='erreur'; end;

Maurice GINDENSPERGER (V 5.1)

page 45/65

Delphi 7 (1/3): Initiation

9.2.7 Les boucles L'instruction if permet de faire des boucles, mais il en existe des "prtes l'emploi" La procdure Continue provoque le passage du contrle de l'excution l'itration suivante dans une instruction for, while ou repeat. La procdure Break provoque l'interruption d'une boucle for, while ou repeat. 9.2.7.1 La boucle "pour" (for) Elle est utilise quand on connat la valeur de dpart, d'arrive et de progression de l'indice de boucle. Syntaxe: for variable=valeur_initiale [down] to valeur_finale do instruction; Exemple: mise zro d'un tableau deux dimensions de 100 cases: for i:=0 to 9 do for j:=0 to 9 do Tableau[i,j]:=0; Exercice: afficher une suite de 1 10 dans un mmo ( faire avec les 3 types de boucles). 9.2.7.2 La boucle "tant que" (while) Cette boucle est maintenue par une condition. La sortie se fait ds que celle-ci cesse d'tre vraie (true). Il n'est pas ncessaire de connatre par avance le nombre d'itrations Syntaxe: while condition do [begin] instruction[s] [end] ; Exemple: while not fini do begin travail1; travail2; ... travailn; end; Il est vident que la variable boolenne "fini" doit tre rvalue (il doit ^y avoir un moyen de savoir si le travail est termin) au cours de la boucle, sinon elle ne prendra pas de fin. Exercice: le mme que prcdemment.

Maurice GINDENSPERGER (V 5.1)

page 46/65

Delphi 7 (1/3): Initiation

9.2.7.3 La boucle "rpter" (repeat) La boucle "rpter" est employe quand on souhaite faire d'emble un parcours dans celle-ci. On ne connat pas priori le nombre de parcours de la boucle, mais il sera suprieur ou gal 1. L'utilisation de begin...end est ici facultative. Syntaxe: repeat instruction[s] until condition; Exemple: repeat prendre une pice; la mettre dans le distributeur automatique; until montant_introduit >= prix_article_choisi;

Maurice GINDENSPERGER (V 5.1)

page 47/65

Delphi 7 (1/3): Initiation

10 Quelques instructions
Voici quelques instructions utiles; il y en a d'autres dcouvrir dans l'aide 10.1 Abs Ceil Exp Flor Frac Frexp Int IntPower Ln Log10 Log2 LogN Max Min Pi Power Round Sqr Sqrt Trunc Renvoie la valeur absolue de l'argument Arrondit l'entier suprieur Fonction exponentielle Arrondit l'entier infrieur Renvoie la partie fractionnelle de l'argument Renvoie la mantisse et l'exposant Renvoie la partie entire de l'argument Calcule la puissance entire d'une valeur de base Renvoie le logarithme naturel de l'argument Calcule le logarithme en base 10 Calcule le logarithme en base 2 Calcule le logarithme en base N Maximum de 2 valeurs Minimum de 2 valeurs Renvoie 3.1415926535897932385 Renvoie une lvation la puissance Arrondi entier Renvoie le carr de l'argument Renvoie la racine carre de l'argument Partie entire Arithmtiques

Maurice GINDENSPERGER (V 5.1)

page 48/65

Delphi 7 (1/3): Initiation

10.2 Date DateTimeToStr DateTimeToString DateToStr DayOfWeek DecodeDate DecodeTime EncodeDate EncodeTime FormatDateTime Now StrToDate StrToDateTime StrToTime Time TimeToStr

Date et heure Renvoie la date en cours. Convertit une valeur heure en chane. Convertit une valeur de format heure en chane. Convertit une valeur du format date en chane. Renvoie le jour de la semaine. Dcode la date spcifie. Dcode l'heure spcifie. Renvoie les valeurs spcifies au format date. Renvoie les valeurs spcifies au format heure. Formate une date et une heure en utilisant le format spcifi. Renvoie l'heure et la date en cours. Convertit une chane en date. Convertit une chane au format date/heure. Convertit une chane au format heure. Renvoie l'heure en cours. Convertit un format heure en chane.

Toutes les routines de date et d'heure utilisent les variables de formatage Date/Heure.

Maurice GINDENSPERGER (V 5.1)

page 49/65

Delphi 7 (1/3): Initiation

10.3 AssignFile ChDir CloseFile CreateDir DeleteFile DiskFree DiskSize FileClose FileDateToDateTime FileExists FileGetAttr FileGetDate FileOpen FileRead FileSearch FileSeek FileSetAttr FileSetDate FileWrite FindClose FindFirst FindNext GetCurrentDir GetDir RemoveDir RenameFile SetCurrentDir

Gestion fichiers Fait correspondre un nom de fichier logique un nom physique Change de dossier Ferme le fichier (remplace "Close") Cre un dossier Detruit un fichier Renvoie l'espace disque disponible. Renvoie la taille du disque spcifi. Ferme le fichier Convertit la date du fichier Teste l'existence du fichier Lit les proprits du fichier Lit la date du fichier Ouvre un fichier Lecture dans un fichier Recherche un fichier Change la position en cours dans le fichier. Dfinit les attributs du fichier. Dfinit l'indicateur DOS de date et heure du fichier. Ecrit dans un fichier spcifique. Termine une squence FindFirst/FindNext. Recherche un nom de fichier et un ensemble d'attributs spcifis dans un rpertoire. Renvoie la prochaine entre correspondant au nom et aux attributs. Renvoie le dossier courant Renvoie le dossier courant sur le lecteur spcifi Supprime un dossier Renomme un fichier Dfinit un dossier courant

Maurice GINDENSPERGER (V 5.1)

page 50/65

Delphi 7 (1/3): Initiation

10.4 Abort Break Continue Exit Halt RunError

Contrle de flux Permet de sortir d'un chemin d'excution sans signaler d'erreur Sortie de boucle for, while ou repeat Rebouclage dans une boucle for, while ou repeat Sort immdiatement du bloc en cours. Arrte l'excution du programme et retourne au systme d'exploitation: viter Arrte l'excution du programme.

10.5 CreateMessageDialog InputQuery LoginDialog MessageDlg SelectDirectory ShowMessage

Messages et dialogues Cre un message de dialogue Saisie de chane Saisie d'un nom et d'un mot de passe pour se connecter une BDD Boite de dialogue Choix d'un dossier Affiche une bote de dialogue de message avec un bouton OK

10.6 Exclude FillChar Hi Include Lo Move ParamCount ParamStr Random Randomize SizeOf Swap UpCase

Divers Exclut un lment d'un ensemble. Remplit un nombre spcifi d'octets contigus avec une valeur spcifi (de type Byte ou Char). Renvoie l'octet de poids fort de l'argument. Inclut un lment dans un ensemble. Renvoie l'octet de poids faible de l'argument Copie les octets d'une source dans une destination. Renvoie le nombre de paramtres transmis au programme dans la ligne de commande. Renvoie le paramtre spcifi de la ligne de commande. Renvoie un nombre alatoire. Initialise le gnrateur intgr de nombres alatoires avec une valeur alatoire obtenue partir de l'horloge systme. Renvoie le nombre d'octets occups par l'argument. Permute les octets de poids fort et de poids faible de l'argument. Convertit un caractre en majuscule.

Maurice GINDENSPERGER (V 5.1)

page 51/65

Delphi 7 (1/3): Initiation

10.7 Dec Inc Odd Pred Succ Dcrmente une variable. Incrmente une variable. Teste si l'argument est un nombre impair. Renvoie le prdcesseur de l'argument. Renvoie le successeur de l'argument.

Ordinaux

Maurice GINDENSPERGER (V 5.1)

page 52/65

Delphi 7 (1/3): Initiation

11 Mthodes: fonctions et procdures


Les mthodes sont des blocs de code dbutant par une ligne de prototypage (dclaration de la mthode). Ensuite il faut dclarer les variables locales utilises et implmenter le code entre les mots cls begin et end. On distingue deux types de mthodes: les fonctions et les procdures. Elles peuvent faire partie de la classe d'un objet ou tre indpendantes dans le module en cours ou un autre module. On peut naturellement crer des modules "bibliothques": c'est souvent le cas des DLL. 11.1 Fonctions

Une fonction renvoie une donne dont le type est dclar. Elle accepte gnralement des paramtres. La structure est la suivante: function NomFonction(para1:type;):type; begin instructions; end; Il est ncessaire de dclarer le type des paramtres ainsi que celui de la valeur retourne par la fonction. Dans le corps de la fonction, cette valeur retourne doit tre dfinie soit en affectant une valeur au nom de la fonction ou en utilisant le mot-cl "result". Nous allons crer un programme qui lve au cube la valeur saisie. Utilisons, pour changer, la fonction "InputBox" (voir dans l'aide en ligne) pour saisir une valeur et la fonction "ShowMessage" pour afficher le rsultat. La fonction crite dans la partie implmentation peut avoir le code suivant: function Cube(valeur:extended):extended; begin Cube :=valeur*valeur*valeur; end; Le compilateur travaillant du haut vers le bas, il est ncessaire que le code prcdent se situe avant l'utilisation de la fonction. Il est possible de ne pas le faire, soit en dclarant la fonction (1 ligne du code: prototype) en fin de section "interface" (visibilit par les autres modules) ou en mettant ce prototype suivi de la directive "forward" au dbut de la section "implmentation"

Maurice GINDENSPERGER (V 5.1)

page 53/65

Delphi 7 (1/3): Initiation

Le listing complet est le suivant: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Dclarations prives} public { Dclarations publiques} end; var Form1: TForm1; implementation {$R *.DFM} function Cube(valeur:extended):extended;forward; procedure TForm1.Button1Click(Sender: TObject); var nombre,resultat: extended; begin nombre:=StrToFloat(InputBox('Bote de saisie', 'Taper un nombre','')); resultat:=Cube(nombre); ShowMessage('Le cube du nombre saisi est '+FloatToStr(resultat)); end; function Cube(valeur:extended):extended; begin Result :=valeur*valeur*valeur; end; end. Essayer d'crire la mme fonction dans un nouveau module et de l'utiliser dans le module prsent: attention la clause uses.
Maurice GINDENSPERGER (V 5.1)

page 54/65

Delphi 7 (1/3): Initiation

1.1

Procdures

Les procdures sont utilises pour effectuer des actions, mais peuvent galement servir renvoyer des valeurs. Comme les fonctions, elles peuvent accepter des paramtres transmis par valeur (option par dfaut), par variables en lecture-criture (prcdes par le mot-cl "var") ou des constantes (prcds par le mot-cl "const"). La syntaxe en est la suivante: procedure NomProcedure(arg1:type; arg2:type; .argn:type); begin intructions; end; Ecrire une procdure qui gnre deux bips une seconde d'intervalle: procedure DeuxBips(); begin beep(); sleep(1000); beep(); end; L'appel cette procdure peut tre dclenche par l'appui d'un bouton: procedure TForm1.Button1Click(Sender: TObject); begin DeuxBips; end;

Maurice GINDENSPERGER (V 5.1)

page 55/65

Delphi 7 (1/3): Initiation

12 Les menus
12.1 Menu principal La mise en place d'une barre de menus est simplifie par le concepteur de menus. Placer sur la fiche un composant de type "TMainMenu". Double-cliquer sur lui pour accder au concepteur de menus. Il suffit alors de taper les noms en validant avec la touche "entre". Pour se dplacer, on peut utiliser la souris ou les flches de direction. Particularits: Accs rapide Sparation Touches de raccourci Sous-menu Dplacement d'lments il suffit de placer le signe "&" dans le nom pour que la lettre suivante apparaisse en soulign taper le signe "-" la place du nom Attribuer la proprit "shortcut" (attention aux doublons!) Taper Ctrl + flche droite par cliquer-glisser

On peut utiliser des modles existants de menu ou crer des modles personnels (voir menu contextuel). Si l'on utilise des gestionnaires d'vnements partags, on peut les attribuer dans la page vnements de l'inspecteur de proprits. Ensuite, fermer le concepteur de menus. Il est indispensable d'attribuer une procdure vnementielle chaque lment: ouvrir le menu et cliquer sur l'option. L'diteur de code crit tout seul l'entte de la procdure: il ne reste qu' complter. Exercice: crer un projet de type bloc-notes (dans un nouveau rpertoire "Notes"). Y mettre des menus (fichier, dition, ...). Utiliser les botes de dialogue prfabriques (enregistrer, ouvrir). 12.2 Menus surgissants

Placer un composant de type TPopupMenu sur votre fiche. Appeler l'diteur de menus par un double-clic sur lui. Complter comme prcdemment. Il faut ici affecter les vnements avant de refermer le concepteur. Utilisation: Affecter la proprit PopupMenu de l'un des composants de votre fiche avec le nom de ce menu.

Maurice GINDENSPERGER (V 5.1)

page 56/65

Delphi 7 (1/3): Initiation

13 Barres d'outils classiques


13.1 Mise en place de la barre Placer un composant Tpanel sur la fiche. Effacer le contenu de la proprit "Caption". Choisir "alTop" pour la proprit "Align". Donner un nom significatif. 13.2 Mise en place des boutons

Il suffit de placer un composant Tspeedbutton sur la barre cre prcdemment. La proprit "Glyph" permet de choisir une image au bouton. Des images existent dans le rpertoire \Programme\Images\Buttons. Il est facile de crer de nouvelles images grce l'diteur d'images (menu outils). Choisir une taille 16X16 pour un bouton simple. 13.3 Info-bulles

Les info-bulles sont faciles mettre en uvre pour les boutons (ou autres composants). Mettre le texte afficher dans la proprit "Hint" et positionner "ShowHint" "true". 13.4 Affectation d'actions aux boutons

Gnralement les gestionnaires d'vnements existent dj pour les menus (les boutons ne sont qu'un moyen pour procder plus vite). Dans ce cas, il suffit d'affecter la procdure "OnClick" grce l'inspecteur de proprits. Pour crire un gestionnaire, il suffit de double-cliquer sur le bouton. Il est possible de grouper les boutons et de les rendre mutuellement exclusifs. Les boutons peuvent rester enfoncs et prsenter une image diffrente dans ce cas. Exercice: ajouter une barre d'outils au bloc-notes.

Maurice GINDENSPERGER (V 5.1)

page 57/65

Delphi 7 (1/3): Initiation

14 Barres d'outils "new look"


Placer un composant "ToolBar" et un composant "ImageList" sur la fiche. Double-cliquer sur ce dernier pour entrer dans l'diteur d'images:

En utilisant ajouter, vous pouvez charger votre liste. Des bitmaps se trouvent dans le rpertoire "C:\Program Files\Fichiers communs\Borland Shared\Buttons\". Ensuite il suffit de choisir "nouveau bouton" (ou sparateur) dans le menu contextuel du composant "Toolbar". La proprit "ImageIndex" du bouton dfinit l'image utilise. La proprit "Flat" de Toolbar permet d'avoir un effet de bouton surgissant comme dans certains logiciels rcents bien connus. On peut aussi utiliser le composant "Coolbar" et placer des "Toolbar" garnis dans ses bandes redimensionnables (style internet).

Maurice GINDENSPERGER (V 5.1)

page 58/65

Delphi 7 (1/3): Initiation

15 Barre d'tat
Le composant correspondant existe sur cette version de Delphi, il s'agit de TStatusBar. C'est une ligne de volets, gnralement place en bas d'une fiche, qui affiche des informations sur l'application en cours d'excution. Chaque volet est reprsent par un objet TStatusPanel numr dans la proprit Panels. La proprit SimplePanel peut tre utilise pour faire basculer, l'excution, la barre d'tat entre l'affichage d'un seul volet et celui de plusieurs volets. 15.1 Mise en place

Placer un composant "TStatusBar" sur la fiche. Si l'on dsire plusieurs volets, il faut attribuer la proprit "panels". L'diteur de proprit se prsente sous la forme suivante:

Choisir "Ajouter" pour augmenter le nombre de subdivisions. On peut accder au contenu de chaque panneau en utilisant la proprit "text" de StatusBar1.Panels1[indice]. Les indices partent de la gauche avec la valeur zro.

15.2

Exercice

Crer un nouveau projet. Mettre l'heure dans la seconde partie d'une barre d'tat 3 volets. Utiliser pour cela un timer systme (voir l'aide en ligne pour l'utilisation). La fonction TIME donne l'heure ( convertir en texte). Option: afficher "MAJ" dans la partie de gauche quand le verrouillage des majuscules est actif. Il faut intercepter la frappe des touches en mettant la proprit "KeyPrev" de la fiche "true" (vrai). Le code de la touche est "VK_CAPITAL". Voir la fonction "GetKeyState".

Maurice GINDENSPERGER (V 5.1)

page 59/65

Delphi 7 (1/3): Initiation

Liste des codes virtuels


CODE VK_LBUTTON VK_RBUTTON VK_MBUTTON VK_BACK VK_TAB VK_RETURN VK_PAUSE VK_CAPITAL VK_ESCAPE VK_SPACE VK_PRIOR VK_NEXT VK_END VK_HOME VK_LEFT VK_UP VK_RIGHT VK_DOWN VK_SNAPSHOT VK_INSERT VK_DELETE VK_0 ... VK_9 VK_A ... VK_Z VK_NUMPAD0 ... VK_NUMPAD9 VK_MULTIPLY VK_ADD VK_SUBTRACT VK_DECIMAL VK_DIVIDE VK_F1 ... VK_F12 VK_NUMLOCK VK_SCROLL TOUCHE bouton gauche de souris bouton droit de souris bouton mdian de souris (s'il existe!) retour arrire (backspace) tabulation entre pause verrouillage majuscules Echap. espace page prcdente page suivante fin dbut () impression cran insertion suppression zro 9 A Z zro du pav numrique 9 du pav numrique multiplication addition soustraction point dcimal division F1 F12 verrouillage numrique arrt dfilement

Maurice GINDENSPERGER (V 5.1)

page 60/65

Delphi 7 (1/3): Initiation

16 Exercices proposs:
crer un bloc notes amlior, multi documents raliser une calculatrice simple, puis bande, enfin scientifique (puissance, factorielle, sinus, cosinus, tangente, binaire, hexadcimal, )

Maurice GINDENSPERGER (V 5.1)

page 61/65

Delphi 7 (1/3): Initiation

17 O trouver de l'aide?
Aide en ligne Apprentissage en ligne de Delphi3 (S&SM): sur le CD de Delphi3 Les manuels papier de Delphi4 PASCAL (Philippe SPOLJAR chez Sybex poche) DELPHI Professionnel - Programmation systme 32 bits (Dick LANTIM chez Eyrolles) DELPHI2 - Secrets d'Experts (Charles CALVERT chez S&SM) Outils de dveloppement Delphi 1&2 (Gilles BETZ chez Sybex Mgapoche) DELPHI 3 (Dick LANTIM chez Eyrolles) Internet: www.inprise.com et les groupes de News

Maurice GINDENSPERGER (V 5.1)

page 62/65

Delphi 7 (1/3): Initiation

TABLE DES MATIERES


1 AVERTISSEMENT....................................................................................................................2 2 INTRODUCTION.......................................................................................................................3 3 Nouveauts .................................................................................................................................4 4 PROGRAMMATION ORIENTEE OBJET.............................................................................5
4.1 PRESENTATION......................................................................................................................5 4.2 CONCEPTS DE BASE..............................................................................................................5
4.2.1 Proprits................................................................................................................................................5 4.2.2 Mthodes.................................................................................................................................................5 4.2.3 Programmation structure.......................................................................................................................6 4.2.4 L'encapsulation.......................................................................................................................................6 4.2.5 L'hritage................................................................................................................................................6 4.2.6 Le polymorphisme..................................................................................................................................7 4.2.7 Dveloppeur ou utilisateur?....................................................................................................................7

4.3 LEXIQUE...................................................................................................................................7
4.3.1 Classe (CLASS)......................................................................................................................................7 4.3.2 Objet (OBJECT).....................................................................................................................................7 4.3.3 Instanciation............................................................................................................................................7 4.3.4 Constructeur (CONSTRUCTOR)...........................................................................................................8 4.3.5 Destructeur (DESTRUCTOR)................................................................................................................8 4.3.6 Classe anctre.........................................................................................................................................8 4.3.7 Classe parent...........................................................................................................................................8 4.3.8 Classe enfant...........................................................................................................................................8 4.3.9 Classe descendante.................................................................................................................................8 4.3.10 Propritaire(OWNER)..........................................................................................................................8 4.3.11 Hritage.................................................................................................................................................8

4.4 CONCLUSION...........................................................................................................................9

5 Les objets de Windows (rappel)...............................................................................................10 6 L'cran de Delphi.....................................................................................................................11


6.1 La barre d'outils (paramtrable):...........................................................................................12 6.2 La palette des composants.......................................................................................................13
6.2.1 Les composants de la page Standard....................................................................................................14 6.2.2 Les composants de la page Supplment...............................................................................................15 6.2.3 Les composants de la page Win32........................................................................................................17 6.2.4 Les composants de la page Systme.....................................................................................................18 6.2.5 Les composants de la page Dialogues..................................................................................................19 6.2.6 Les composants de la page Win3.1.......................................................................................................20

6.3 L'inspecteur d'objets................................................................................................................22 6.4 Page Proprits.........................................................................................................................23 6.5 Page Evnements......................................................................................................................23 6.6 L'diteur de code......................................................................................................................24

7 Premier projet............................................................................................................................25
7.1 Notions lmentaires................................................................................................................25
Maurice GINDENSPERGER (V 5.1)

page 63/65

Delphi 7 (1/3): Initiation

7.2 Excution...................................................................................................................................28

8 Modification du projet .............................................................................................................30


8.1 Mise en place du composant....................................................................................................30 8.2 Affectation d'une procdure vnementielle..........................................................................30 8.3 Amliorations............................................................................................................................31

9 Elments de programmation ...................................................................................................33


9.1 Dclaration de variables...........................................................................................................33
9.1.1 Choix du nom d'une variable................................................................................................................33 9.1.2 Choix du type d'une variable................................................................................................................34 9.1.3 TYPES DE DONNEES........................................................................................................................36 9.1.4 Dclaration de constantes.....................................................................................................................38 9.1.5 Cration de nouveaux types de donnes...............................................................................................40

9.2 QUELQUES INSTRUCTIONS PASCAL..............................................................................44


9.2.1 Affectation (:=).....................................................................................................................................44 9.2.2 Signes opratoires.................................................................................................................................44 9.2.3 Logique boolenne (true-false).............................................................................................................44 9.2.4 Oprateurs relationnels.........................................................................................................................44 9.2.5 Les tests................................................................................................................................................45 9.2.6 Le slecteur...........................................................................................................................................45 9.2.7 Les boucles...........................................................................................................................................46

10 Quelques instructions ............................................................................................................48


10.1 Arithmtiques.........................................................................................................................48 10.2 Date et heure...........................................................................................................................49 10.3 Gestion fichiers.......................................................................................................................50 10.4 Contrle de flux......................................................................................................................51 10.5 Messages et dialogues.............................................................................................................51 10.6 Divers.......................................................................................................................................51 10.7 Ordinaux.................................................................................................................................52

11 Mthodes: fonctions et procdures ......................................................................................53


11.1 Fonctions.................................................................................................................................53 1.1 Procdures................................................................................................................................55

12 Les menus................................................................................................................................56
12.1 Menu principal.......................................................................................................................56 12.2 Menus surgissants...................................................................................................................56

13 Barres d'outils classiques.......................................................................................................57


13.1 Mise en place de la barre.......................................................................................................57 13.2 Mise en place des boutons......................................................................................................57 13.3 Info-bulles...............................................................................................................................57 13.4 Affectation d'actions aux boutons.........................................................................................57

14 Barres d'outils "new look"....................................................................................................58 15 Barre d'tat..............................................................................................................................59


Maurice GINDENSPERGER (V 5.1)

page 64/65

Delphi 7 (1/3): Initiation

15.1 Mise en place...........................................................................................................................59 15.2 Exercice...................................................................................................................................59

16 Exercices proposs:................................................................................................................61 17 O trouver de l'aide?..............................................................................................................62

Maurice GINDENSPERGER (V 5.1)

page 65/65

You might also like