Vous êtes sur la page 1sur 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
simples

Objet = entit
Procdures

Mthodes

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.

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
celle-ci. 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 turbo-boutons...
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 majclic.
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

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

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

Maurice GINDENSPERGER (V 5.1)

page 15/65

Delphi 7 (1/3): Initiation

ActionToolBar
CustomizeDlg

Barre d'outils d'ActionManager


Bote de dialogue permettant l'utilisateur de configurer les 2 composants
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

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.
MediaPlayer
Multimdia. Affiche un contrle de style tlcommande pour lire ou
enregistrer des fichiers multimdias son ou vido.
OleContainer
Conteneur OLE. Cre dans une fiche une zone client OLE (Incorporation
et Liaison d'Objet).
DdeClientConv Conversation client DDE. tablit une connexion client avec une
application serveur DDE (change Dynamique de Donnes).
DdeClientItem lment client DDE. Spcifie les donnes du client DDE (change
Dynamique de Donnes) transfrer lors d'une conversation DDE.
DdeServerConv Conversation serveur DDE. tablit une connexion serveur avec une
application client DDE (change Dynamique de Donnes).
DdeServerItem 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 choix d'une procdure commune plusieurs
dj 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

Explications

unit Unit1;

nom du module source correspondant la fiche "Form1"


ne pas changer ce nom directement, mais au moment de
l'enregistrement

interface

entte pour dsigner la section qui sera "vue" par les


autres modules

uses
Windows, Messages, SysUtils,
Classes, Graphics, Controls,
Forms, Dialogs;

permet d'inclure d'autres modules


nom des modules inclus

type
TForm1 = class(TForm)
private
{ Dclarations prives }
public
{ Dclarations publiques }

dbut de la dclaration du type des objets


dclaration d'un nouveau type d'objet de type fentre

end;

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

var
Form1: TForm1;

"achat" de variables globales


instanciation de l'objet: allocation de mmoire vive

implementation

dans cette section seront crites les mthodes des objets


manipuls

{$R *.DFM}

directive de compilation permettant d'inclure les


dfinitions des fentres (.DFM)

end.

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;

nom du programme

uses
Forms,
Unit1 in 'UNIT1.PAS' {Form1};

modules utiliss

{$R *.RES}

directive de compilation permettant d'inclure


les fichiers ressources (.RES)

begin
Application.Initialize;
Application.CreateForm(TForm1,
Form1);
Application.Run;
end.

dbut du programme principal


initialisation du programme
cration de la fiche "Form1" de type Tform1

c'est le module de la fiche "Form1"

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

chiffres significatifs octets utiliss


78
4
1516
8

3.6 x 10^4951 .. 1.1 x 10^4932


2^63+1 .. 2^63 1
922337203685477.5808..
922337203685477.5807

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

Longueur maximum
255 caractres
~2^31 caractres
~2^30 caractres

Mmoire ncessaire
de 2 256 octets
de 4 octets 2Go
de 4 octets 2Go

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

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.

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
ci-dessous (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 Arithmtiques
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

Maurice GINDENSPERGER (V 5.1)

page 48/65

Delphi 7 (1/3): Initiation

10.2 Date et heure


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

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 Gestion fichiers


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

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 Contrle de flux


Abort
Break
Continue
Exit
Halt
RunError

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 Messages et dialogues


CreateMessageDialog
InputQuery
LoginDialog
MessageDlg
SelectDirectory
ShowMessage

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 Divers
Exclude
FillChar
Hi
Include
Lo
Move
ParamCount
ParamStr
Random
Randomize
SizeOf
Swap
UpCase

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 Ordinaux
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.

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. Doublecliquer 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

Maurice GINDENSPERGER (V 5.1)

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

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

INTRODUCTION ______________________________________________________ 3

Nouveauts ____________________________________________________________ 4

PROGRAMMATION ORIENTEE OBJET __________________________________ 5


4.1

PRESENTATION ________________________________________________________5

4.2

CONCEPTS DE BASE ____________________________________________________5

4.2.1
4.2.2
4.2.3
4.2.4
4.2.5
4.2.6
4.2.7

4.3

Proprits______________________________________________________________________ 5
Mthodes ______________________________________________________________________ 5
Programmation structure _________________________________________________________ 6
L'encapsulation _________________________________________________________________ 6
L'hritage ______________________________________________________________________ 6
Le polymorphisme ______________________________________________________________ 7
Dveloppeur ou utilisateur? _______________________________________________________ 7

LEXIQUE _______________________________________________________________7

4.3.1
4.3.2
4.3.3
4.3.4
4.3.5
4.3.6
4.3.7
4.3.8
4.3.9
4.3.10
4.3.11

4.4

Classe (CLASS) ________________________________________________________________ 7


Objet (OBJECT) ________________________________________________________________ 7
Instanciation ___________________________________________________________________ 7
Constructeur (CONSTRUCTOR)___________________________________________________ 8
Destructeur (DESTRUCTOR) _____________________________________________________ 8
Classe anctre __________________________________________________________________ 8
Classe parent ___________________________________________________________________ 8
Classe enfant ___________________________________________________________________ 8
Classe descendante ______________________________________________________________ 8
Propritaire(OWNER) _________________________________________________________ 8
Hritage ____________________________________________________________________ 8

CONCLUSION __________________________________________________________9

Les objets de Windows (rappel) ___________________________________________ 10

L'cran de Delphi ______________________________________________________ 11


6.1

La barre d'outils (paramtrable): __________________________________________12

6.2

La palette des composants_________________________________________________13

6.2.1
6.2.2
6.2.3
6.2.4
6.2.5
6.2.6

Les composants de la page Standard _______________________________________________ 14


Les composants de la page Supplment _____________________________________________ 15
Les composants de la page Win32 _________________________________________________ 17
Les composants de la page Systme ________________________________________________ 18
Les composants de la page Dialogues ______________________________________________ 19
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

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

Modification du projet __________________________________________________ 30


8.1

Mise en place du composant _______________________________________________30

8.2

Affectation d'une procdure vnementielle __________________________________30

8.3

Amliorations ___________________________________________________________31

Elments de programmation _____________________________________________ 33


9.1

Dclaration de variables __________________________________________________33

9.1.1
9.1.2
9.1.3
9.1.4
9.1.5

9.2

QUELQUES INSTRUCTIONS PASCAL ____________________________________44

9.2.1
9.2.2
9.2.3
9.2.4
9.2.5
9.2.6
9.2.7

10

Choix du nom d'une variable _____________________________________________________ 33


Choix du type d'une variable______________________________________________________ 34
TYPES DE DONNEES _________________________________________________________ 36
Dclaration de constantes ________________________________________________________ 38
Cration de nouveaux types de donnes_____________________________________________ 40
Affectation (:=) ________________________________________________________________ 44
Signes opratoires ______________________________________________________________ 44
Logique boolenne (true-false) ____________________________________________________ 44
Oprateurs relationnels __________________________________________________________ 44
Les tests ______________________________________________________________________ 45
Le slecteur ___________________________________________________________________ 45
Les boucles ___________________________________________________________________ 46

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

Vous aimerez peut-être aussi