Vous êtes sur la page 1sur 41

Facult de Sciences conomiques et de Gestion

Programmation sous Delphi


Matrise dconomtrie
Anne 1999-2000

Jrme Darmont
jerome.darmont@univ-lyon2.fr
http://eric.univ-lyon2.fr/~jdarmont/

Table des matires


I.

INTRODUCTION......................................................................................................................................... 3

II.

LE LANGAGE PASCAL ............................................................................................................................. 4

1. LMENTS DU LANGAGE .................................................................................................................................. 4


a) Identificateurs et instructions ................................................................................................................. 4
b) Oprateurs.............................................................................................................................................. 4
c) Commentaires......................................................................................................................................... 5
2. TYPES DE DONNES ......................................................................................................................................... 5
a) Types prdfinis...................................................................................................................................... 5
b) Types personnaliss................................................................................................................................ 6
3. SQUELETTE DUN PROGRAMME PASCAL .......................................................................................................... 7
a) Squelette ................................................................................................................................................. 7
b) Notion de bloc ........................................................................................................................................ 7
c) Dclaration des constantes..................................................................................................................... 7
d) Dclaration des variables....................................................................................................................... 7
4. ENTRES/SORTIES ............................................................................................................................................ 8
a) Lecture au clavier................................................................................................................................... 8
b) criture lcran ................................................................................................................................... 8
5. STRUCTURES DE CONTRLE ............................................................................................................................. 8
a) Branchements conditionnels................................................................................................................... 8
b) Boucles ................................................................................................................................................... 9
6. PROCDURES ET FONCTIONS .......................................................................................................................... 10
a) Squelette de dclaration ....................................................................................................................... 10
b) Exemples de sous-programmes ............................................................................................................ 10
c) Mode de passage des paramtres ......................................................................................................... 11
d) Visibilit des variables et des sous-programmes.................................................................................. 11
7. LES UNITS .................................................................................................................................................... 11
a) Squelette dune unit ............................................................................................................................ 12
b) Visibilit dune unit............................................................................................................................. 12
c) Exemple dunit .................................................................................................................................... 12
8. LA PROGRAMMATION ORIENTE OBJET .......................................................................................................... 13
a) Objectifs................................................................................................................................................ 13
b) Concepts ............................................................................................................................................... 13
c) Dclaration dobjets en Pascal ............................................................................................................ 14
d) Protection des donnes......................................................................................................................... 15
e) Lhritage ............................................................................................................................................. 16
f)
Le polymorphisme ................................................................................................................................ 16
g) Constructeurs et destructeurs ............................................................................................................... 17
III. LEDI DE DELPHI..................................................................................................................................... 19
1. LINTERFACE DE DELPHI ............................................................................................................................... 19
a) Conception de fiches : la palette des composants ................................................................................ 19
b) Linspecteur dobjets ............................................................................................................................ 21
c) Lditeur de code.................................................................................................................................. 22
d) Les menus ............................................................................................................................................. 22
2. PROJETS ET PROGRAMMES ............................................................................................................................. 23
a) Le gestionnaire de projets .................................................................................................................... 23
b) Le fichier de projet ............................................................................................................................... 24
c) Les options de projet ............................................................................................................................ 24
3. EXPERTS ET MODLES.................................................................................................................................... 25

J. Darmont

Programmation sous Delphi

1/40

IV. LA BIBLIOTHQUE DOBJETS DE DELPHI...................................................................................... 27


1. HIRARCHIE DES OBJETS DELPHI ................................................................................................................... 27
a) Objets Delphi........................................................................................................................................ 27
b) Composants et contrles....................................................................................................................... 27
2. LE SCRUTEUR................................................................................................................................................. 28
3. HIRARCHIES DES CLASSES ET DES CONTENEURS .......................................................................................... 29
a) Proprits Parent / Control.................................................................................................................. 29
b) Proprits Owner / Components .......................................................................................................... 29
V.

CONNEXION AUX BASES DE DONNES............................................................................................ 31


1. LES COMPOSANTS SOURCES ........................................................................................................................... 31
a) Table..................................................................................................................................................... 31
b) Query .................................................................................................................................................... 31
c) DataSource........................................................................................................................................... 32
2. FORMULAIRES BASS SUR DES TABLES .......................................................................................................... 32
a) Composants BD visuels ........................................................................................................................ 32
b) Formulaires simples ............................................................................................................................. 32
c) Naviguer dans les donnes ................................................................................................................... 33
d) Utilisation dune grille ......................................................................................................................... 33
e) Formulaires composs.......................................................................................................................... 33
f)
Lexpert fiche base de donnes............................................................................................................. 34
3. REQUTES SQL ............................................................................................................................................. 34
a) Formulaire bas sur une requte.......................................................................................................... 34
b) Requte paramtre.............................................................................................................................. 34
4. TRANSFERT DE DONNES ............................................................................................................................... 34
5. MANIPULATION DE DONNES PAR PROGRAMME ............................................................................................ 35
a) Oprations de base ............................................................................................................................... 35
b) Navigation dans la base de donnes..................................................................................................... 37
c) Requtes SQL ....................................................................................................................................... 37
d) Recherche denregistrements ............................................................................................................... 38

RFRENCES .................................................................................................................................................... 40

J. Darmont

Programmation sous Delphi

2/40

I. Introduction
Delphi est un environnement de dveloppement de type RAD (Rapid Application Development) bas sur le langage Pascal. Il permet de raliser rapidement et simplement des applications Windows.
Cette rapidit et cette simplicit de dveloppement sont dues une conception visuelle de
lapplication. Delphi propose un ensemble trs complet de composants visuels prts
lemploi incluant la quasi-totalit des composants Windows (boutons, botes de dialogue, menus, barres doutils) ainsi que des experts permettant de crer facilement divers types
dapplications et de librairies.
Pour matriser le dveloppement dune application sous Delphi, il est indispensable daborder
les trois sujets suivants :

le langage Pascal et la programmation oriente objet ;


lEnvironnement de Dveloppement Intgr (EDI) de Delphi ;
les objets de Delphi et la hirarchie de classe de sa bibliothque.

Nous complterons cette approche par la connexion aux bases de donnes avec Delphi.

NB : Ce support de cours ne se veut nullement exhaustif. Ce nest quune rfrence de base.


Le lecteur est encourag complter sa lecture avec les rfrences cites la fin du document et sentraner programmer sous Delphi ! Dautre part, ce support ne traite que de la
version 3 de Delphi.

J. Darmont

Programmation sous Delphi

3/40

II. Le langage Pascal


Squence
souvenir
Le langage de programmation Pascal a t conu en 1968 par Niklaus Wirth.

1. lments du langage
a) Identificateurs et instructions
Un identificateur est un nom permettant au compilateur didentifier un objet donn. Les noms
de variables, par exemple, sont des identificateurs. Un identificateur doit commencer par une
lettre. Les caractres suivants peuvent tre des lettres, des chiffres ou le caractre _. Majuscules et minuscules ne sont pas diffrencies. Seuls les 63 premiers caractres dun identificateur sont pris en considration par le compilateur.
Identificateur valide : Ma_variable01

Identificateur invalide : 9variable

Outre les variables, constantes, etc., un programme Pascal contient des mots rservs que
lutilisateur ne peut pas employer. Ce groupe didentificateurs particuliers correspond aux
composants du langage Pascal.
And
Asm
Array
Begin
Case
Const
Constructor
Destructor
Div
Do
Downto

Else
End
Except
Exports
File
Finally
For
Function
Goto*
If
Implementation

In
Inherited
Inline
Interface
Label
Library
Mod
Nil
Not
Object
Of

Or
Packed
Procedure
Program
Record
Repeat
Set
Shl
Shr
String
Then

To
Try
Type
Unit
Until
Uses
Var
While
With
Xor

Liste des mots rservs de Pascal


b) Oprateurs
Affectation
Ex. resultat:=100;
Oprateurs arithmtiques

Multiplication : *
Division entire : div

Ce nest pas parce que le goto existe en Pascal quil faut lutiliser !

J. Darmont

Programmation sous Delphi

4/40

Division : /
Modulo : mod
Addition : +
Soustraction : -

Oprateurs logiques

Et logique : and
Ou logique : or
Ou exclusif : xor
Ngation : not

Oprateurs de relation

gal : =
Diffrent : <>
Suprieur/Suprieur ou gal : > >=
Infrieur/Infrieur ou gal : < <=
Appartenance un ensemble : in

c) Commentaires
(* *)

ou { }

NB : Il est possible dimbriquer ces deux types de commentaires.

2. Types de donnes
a) Types prdfinis
Types entiers
Byte
Shortint
Integer
Word
Longint

Types rels
Single
Real
Double
Extended

J. Darmont

Domaine
0..255
-128..127
-32768..32767
0..65535
-2147483648..2147483647
Domaine
1,5.10-45..3,4.1038
2,9.10-39..1,7.1038
5,0.10-324..1,7.10308
3,4.10-4951..1,1.104932

Programmation sous Delphi

5/40

Type boolen

Domaine
True | False

Boolean

Types caractres
Char
String[n]
String

Domaine
Caractre alphanumrique
Chane de n caractres
(n = 255 au maximum)
Chane de 255 caractres

Types tableaux
Array[imin..imax, ] of <type>

b) Types personnaliss
La dclaration dun type utilisateur seffectue dans une clause type.
numrations
Ex. Type jour = (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche);
Intervalles
Ex. Type chiffre = 0..9;
jour_ouvrable = lundi..vendredi;

Ensembles
Ex. Type des_entiers = set of integer;
{dclaration de la variable ens de type des_entiers}
ens:=[1,2,3];
ens:=[]; {ensemble vide}

Oprations ensemblistes :

+
*
-

union
intersection
diffrence

Tableaux
Ex. Type tab_reels = array[1..100] of real; {tableau de 100 rels}
matrice = array[1..4,1..4] of integer; {matrice 4x4}
{Dclaration des variables t de type tab_reels et de m de type matrice}
t[1]:=1.5;
m[1,3]:=10;

Enregistrements
Ex. Type personne = record
nom: string;
prenom: string;
age: byte;
end;

J. Darmont

Programmation sous Delphi

6/40

{Dclaration de la variable p de type Personne}


p.nom:=Darmont;
with p do
begin
prenom:=Jrme;
age=:27;
end;

3. Squelette dun programme Pascal


a) Squelette
Program Nom_du_programme;
Uses {units}
Const
{Dclaration de constantes}
Type
{Dclaration de types personnaliss}
Var
{Dclaration de variables}
{Procdures et fonctions}
Begin
{Bloc principal du programme}
End.

b) Notion de bloc
Un bloc est une portion de code dlimite par le couple dinstructions begin..end.
c) Dclaration des constantes
Ex. Const PI=3.1416;
NOM=Universit Lyon 2;

d) Dclaration des variables


Ex. numero, i: integer; {deux variables de mme type}
tab: array[1..10] of real;
phrase: string;
{idem avec des types personnaliss}
jour: jour_ouvrable;
ens: des_entiers;
m: matrice;

J. Darmont

Programmation sous Delphi

7/40

4. Entres/sorties
a) Lecture au clavier
Ex. Readln (une_variable);
b) criture lcran
Ex. Write (Coucou ! );
Writeln (La valeur de la variable est : , une_variable);

NB : Ces instructions sont dfinies dans lunit Crt de Pascal, quil faut appeler en dbut de
programme par la commande Uses Crt ;.

5. Structures de contrle
a) Branchements conditionnels
Ifthenelse
If {condition} then {Instruction si condition vrifie}
Else {Instruction si condition non vrifie};

NB : La partie else est optionnelle.


Ex. If a>=0 then writeln(A est positif);
If ville=Lyon then bool_lyon:=true
Else bool_lyon:=false;
If a>b then
If a<c then writeln(B < A < C)
Else writeln(A > B);

Caseof
Case {variable} of
{valeur1}: {Instruction};
{valeur2}: {Instruction};

else {Instruction par dfaut};


end ;

NB : La partie else est optionnelle.


Ex. Case a of
0: writeln(zro);
6: writeln(six);
9: writeln(neuf);

J. Darmont

Programmation sous Delphi

8/40

end ;
Case ch of
A..Z: writeln(Majuscule);
a..z: writeln(Minuscule);
0..9: writeln(Chiffre);
else writeln(Autre caractre);
end;

b) Boucles
Whiledo
Excute des instructions tant quune condition est vrifie.
While {condition} do {instructions}

Ex. i:=1;
While i<=10 do
Begin
Write(i, );
i:=i+1;
End;
Writeln(*);

Repeatuntil
Excute des instructions jusqu ce quune condition soit vrifie.
Repeat {instructions} until {condition};

Ex. i:=1;
Repeat
Write(i, );
i:=i+1;
Until i=10;
Writeln(*);

NB : La boucle Repeatuntil ne ncessite pas de bloc beginend pour excuter plusieurs


instructions.
Forto|downtodo
Excute des instructions un nombre fini de fois suivant un ordre croissant ou dcroissant.
For {variable}:={valeur min} to {valeur max} do {instructions}
For {variable}:={valeur max} downto {valeur min} do {instructions}

Ex. For i:=1 to 10 do Write(i, );


Writeln(*);

J. Darmont

Programmation sous Delphi

9/40

Choix dune boucle


Nombre ditrations connu
For

Au moins une excution


Repeat

Test avant excution


While

6. Procdures et fonctions
Les procdures et les fonctions permettent de diviser un programme en units plus petites (des
sous-programmes) pour mieux le structurer. La seule diffrence entre procdure et fonction
est que cette dernire renvoie une valeur au programme ou au sous-programme appelant.
a) Squelette de dclaration
Procedure NomP({paramtres});

Function NomF({paramtres}): {type};

Type
{Dclaration de types locaux}

Type
{Dclaration de types locaux}

Const
{Dclaration de constantes locales}

Const
{Dclaration de constantes locales}

Var
{Dclaration de variables locales}

Var
{Dclaration de variables locales}

{procdures | fonctions locales}

{procdures | fonctions locales}

Begin
{Corps de la procdure}
End;

Begin
{Corps de la fonction}
NomF:={valeur de retour};
End;

b) Exemples de sous-programmes
Procedure PN_P(nombre: real);

Function PN_F(nombre: real):real;

Const N=25;

Const N=25;

Var i: integer;
res: real;

Var i: integer;
res: real;

Begin
res:=1;
For i:=1 to N do res:=res*nombre;
Writeln(res);
End;

Begin
res:=1;
For i:=1 to N do res:=res*nombre;
PN_F:=res;
End;

J. Darmont

Programmation sous Delphi

10/40

c) Mode de passage des paramtres


Le passage de paramtres fournit des valeurs un sous-programme lors de son appel (cf.
exemples ci-dessus). Ce passage de paramtres peut seffectuer :

en faisant une copie des valeurs passer (passage par valeur), ce qui permet de modifier les copies locales sans influencer la valeur initiale (paramtres en entre) ;

en fournissant ladresse des valeurs (passage par adresse ou par rfrence), ce qui
permet de modifier la valeur initiale (paramtres en sortie ou en entre/sortie).

Dans les exemples ci-dessus, les paramtres sont passs par valeur.
Exemple de passage par adresse
Procedure PN_P2(var nombre: real);
Const N=25;
Var i: integer;
res: real;
Begin
res:=1;
For i:=1 to N do res:=res*nombre;
nombre:=res;
End;

NB : Un appel de procdure du type PN_P2(n); aura le mme effet quun appel de fonction
du type n:=PN_F(n);.
d) Visibilit des variables et des sous-programmes
Une variable globale est utilisable par tous les sous-programmes du programme. Une variable locale nest utilisable que dans le sous-programme o elle est dclare.
Les procdures et les fonctions sont soumises aux mmes rgles que les variables.

7. Les units
Une unit est un fichier spar pouvant contenir des constantes, des types, des variables et des
sous-programmes disponibles pour la construction dautres applications. Lutilisation des units permet de partager des donnes et des sous-programmes entre plusieurs applications.

J. Darmont

Programmation sous Delphi

11/40

a) Squelette dune unit


Unit Nom_unite;
Interface
{Dclarations publiques}
Implementation
{Dclarations prives}
{Corps des procdures et des fonctions}
Initialization
{Code dinitialisation}
End.

b) Visibilit dune unit


En-tte
Cest le nom de lunit (8 caractres maxi). Il figure dans la partie uses dun programme ou
dune unit qui utilise lunit.
NB : viter les rfrences croises entre units (ex. lunit A inclut lunit B et vice-versa).
Interface
Tout ce qui est plac ici est visible pour toute entit utilisant lunit.
Implmentation
Cette partie dfinit les procdures et les fonctions dclares dans la partie interface. On peut
galement y dfinir des types, constantes, variables et sous programmes locaux.
Initialisation
Cette partie permet dinitialiser les variables de lunit si besoin est et deffectuer des traitements avant de redonner la main au programme principal.
c) Exemple dunit
Unit stats;
Interface
Const N=100000;
Type echantillon = array[1..N] of real;
Function moyenne(ech: echantillon): real;
Implementation
Function moyenne; {Pas besoin de rpter les paramtres}
Var i: integer;
s: real;

J. Darmont

Programmation sous Delphi

12/40

Begin
s:=0;
for i:=1 to N do s:=s+ech[i];
moyenne:=s/N;
End ;
End.

Programme appelant :
Program Calcul_Moyenne;
Uses stats;
Var ech: echantillon;
i: integer;
moy: real;
Begin
For i:=1 to N do readln(ech[i]);
{Je ne voudrais pas tre loprateur de saisie !}
moy:=moyenne(ech);
Writeln(moy);
End.

8. La programmation oriente objet


a) Objectifs

Lier les donnes et les fonctions qui les manipulent afin dviter des accs aux donnes par des fonctions non autorises.

Obtenir une meilleure abstraction en cachant limplmentation des techniques utilises


et en ne rendant visible que des points dentre. Ainsi, si limplmentation change, le
code utilisateur nest pas affect.

Rutiliser lexistant dans un souci de productivit.

Traiter les erreurs localement au niveau des objets sans que cela ne perturbe les autres
parties du programme.

Faciliter la maintenance.

b) Concepts
Objet
En langage objet, tout est objet ! Un objet contient des donnes dites donnes membres ou
attributs de lobjet et des procdures ou fonctions dites mthodes de lobjet.

J. Darmont

Programmation sous Delphi

13/40

Ex.
PERSONNE
Nom
Prnom
Date_naissance
Etat_civil( )
Calcul_age( )

Encapsulation
Cest le mcanisme consistant lier les attributs et les mthodes au sein dune mme structure.
Hritage
Lhritage permet un objet de rcuprer les caractristiques dun autre objet (attributs et
mthodes) et de lui ajouter de nouvelles caractristiques.
Ex. Un employ est une personne.
PERSONNE
Nom
Prnom
Date_naissance
Etat_civil( )
Calcul_age( )

EMPLOYE
Employeur
Date_embauche
Salaire
Augmentation_salaire( )

Polymorphisme
Le polymorphisme permet dattribuer diffrents objets une mthode portant le mme nom
afin dexprimer la mme action, mme si limplmentation de la mthode diffre compltement.
Ex. Surcharge de la mthode Etat_civil().
PERSONNE

EMPLOYE

Nom
Prnom
Date_naissance

Employeur
Date_embauche
Salaire

Etat_civil( )
Calcul_age( )

Augmentation_salaire( )
Etat_civil( )

c) Dclaration dobjets en Pascal


Classe
Un objet est une instance dune classe (ex. Jrme Darmont n le est une instance de la
classe Personne). La classe est un type de donnes reprsentant un objet.

J. Darmont

Programmation sous Delphi

14/40

Ex. Type Personne = class


End;

Attributs
Ex. Type Personne = class
nom: string;
prenom: string;
date_naissance: string;
End;

Mthodes
Les mthodes sont des procdures et des fonctions dfinies pour une classe. Elles ont un accs
complet tous les attributs de la classe. Il est recommand de ne pas laisser un utilisateur de
la classe manipuler directement ses attributs, mais dutiliser une mthode pour cela.
Ex. Type Personne = class
nom: string;
prenom: string;
date_naissance: string;
procedure etat_civil();
function calcul_age():byte;
End;

Le corps des mthodes est dfini lextrieur de la classe. Le nom de chaque mthode doit
donc tre prfix du nom de la classe laquelle il appartient.
Ex. Procedure Personne.etat_civil();
Begin
Writeln(nom+ +prenom);
End;
Function Personne.calcul_age():byte;
Var res: byte;
Begin
{Calcul de lge, rsultat dans la variable res}
calcul_age:=res;
End;

d) Protection des donnes


Si une classe est utilise par quelquun dautre que son auteur, rien nempche ce dernier
daccder directement un attribut de la classe, ce qui la fragilise. En effet, si la mthode associe lattribut en question effectue des tests avant de modifier sa valeur (ex. vrification
quune date de naissance est infrieure la date du jour), ne pas lutiliser peut provoquer des
erreurs ultrieurement.
Pour se prmunir contre des accs non dsirs, il est possible dassocier un niveau de visibilit
aux attributs et aux mthodes dune classe.
Protection
Private
Protected

J. Darmont

Description
Attributs ou mthodes accessibles uniquement par les mthodes de la classe
Attributs ou mthodes accessibles uniquement par les mthodes de la classe
Programmation sous Delphi

15/40

Public

et de ses sous-classes
Attributs ou mthodes accessibles par toute procdure, mme externe

Ex. Type Personne = class


private
nom: string;
prenom: string;
date_naissance: string;
public
procedure etat_civil();
function calcul_age():byte;
End;

e) Lhritage
Dclaration de la classe Employ, sous-classe de Personne
Type Employe = class(Personne)
private
employeur: string;
date_embauche: string;
salaire: real;
public
procedure augmentation_salaire();
procedure etat_civil();
End;

Dclaration dinstances des classes Personne et Employ


Var p: Personne;
e: Employe;
Begin
p.etat_civil();
e.etat_civil();
p:=e; {NB : laffectation inverse nest pas possible}
End.

NB : La classe Employ est dite compatible avec la classe Personne.


f) Le polymorphisme
Le polymorphisme permet de manipuler les sous-classes via la classe de base.
Ex. Program Polymorphisme;
Uses Upers; {Unit contenant les classes Personne et Employ}
Var p: Personne;
e: Employe;
Begin
p:=e;
p.etat_civil();
End.

J. Darmont

Programmation sous Delphi

16/40

Problme : Quelle est la mthode etat_civil appele ? Celle de la classe Personne ou celle
de la classe Employ ?
Pour rsoudre ce problme, il faut faire appel au polymorphisme en dclarant cette mthode
comme tant virtuelle (mot cl virtual). Le compilateur rajoute alors du code au programme
excutable afin de pouvoir appeler dynamiquement la mthode approprie lobjet manipul
(ici, un employ). De plus, il faut indiquer que la mthode etat_civil de la classe Employ
surcharge celle de la classe Personne (mot cl override).
Ex. Type Personne = class
private
nom: string;
prenom: string;
date_naissance: string;
public
procedure etat_civil(); virtual;
function calcul_age():byte;
End;
Type Employe = class(Personne)
private
employeur: string;
date_embauche: string;
salaire: real;
public
procedure augmentation_salaire();
procedure etat_civil(); override;
End;

g) Constructeurs et destructeurs
Constructeurs et destructeurs permettent respectivement dallouer et dinitialiser les attributs
dun objet ou de librer la mmoire alloue cet objet.

Ils doivent tre dfinis dans une section public.

Ils peuvent tre plusieurs dans une classe condition de ne pas porter le mme nom.

Ils peuvent tre virtuels.

NB : Par convention, les constructeurs sont nomms Create et les destructeurs Destroy dans
les classes Delphi.
Ex. Type Personne = class
private
nom: string;
prenom: string;
date_naissance: string;
public
constructor Create(); virtual;
constructor Init(n, p, d: string);
destructor Destroy; virtual;
procedure etat_civil(); virtual;
function calcul_age():byte;
End;

J. Darmont

Programmation sous Delphi

17/40

Procedure Personne.Init;
Begin
nom:=n;
prenom:=p;
date:=d;
End;
{Utilisation}
p.Init(Darmont,Jrme,15/01/1972);
p.Destroy;

J. Darmont

Programmation sous Delphi

18/40

III. LEDI de Delphi


1. Linterface de Delphi
La figure ci-dessous reprsente linterface typique de Delphi. Elle est compose de :

la barre de menus (en haut),

la barre dicnes ( gauche sous la barre de menus),

la palette de composants ( droite sous la barre de menus),

le concepteur de fiche (au centre),

lditeur de code (au centre sous le concepteur de fiche),

linspecteur dobjets ( gauche).

a) Conception de fiches : la palette des composants


Une fiche constitue linterface (ou une partie de linterface) dune application. Pour concevoir
une fiche, il suffit dy insrer des contrles (ressources Windows prtes lemploi : boutons
de commande, listes, menus) lists dans la palette des composants. Un clic sur le contrle,

J. Darmont

Programmation sous Delphi

19/40

puis un autre sur la fiche cible suffisent (un double clic insre le composant au milieu de la
fiche active). La palette des composants runit plusieurs volets. Les principaux sont lists cidessous.
Composants standards

Contrle
Menu principal
Menu surgissant
tiquette
dition

MainMenu
PopupMenu
Label
Edit

Nom Pascal

Mmo

Memo

Bouton
Case cocher
Bouton radio
Bote de liste simple
Bote de liste combine

Button
CheckBox
RadioButton
ListBox
ComboBox

Barre de dfilement
Bote de groupe
Groupe de boutons radio
Volet

ScrollBar
GroupBox
RadioGroup
Panel

Description
Barre de menus
Menu contextuel
Zone daffichage de texte non modifiable
Bote ddition permettant la saisie ou la modification dune ligne de texte
Bote ddition permettant la saisie ou la modification dun texte de plusieurs lignes
Bouton de commande simple
Slection de choix entre plusieurs
Slection dun choix entre plusieurs
Liste [droulante] dlments
Liste droulante dlments avec possibilit
ddition sans une bote ddition
Ascenseur vertical ou horizontal
Cadre conteneur de contrles
Cadre conteneur de boutons radio
Volet conteneur de contrles

Composants supplmentaires

Contrle
Bouton bitmap
Turbo bouton
Masque de saisie

BitBtn
SpeedButton
MaskEdit

Grille de chanes
Grille daffichage
Image

StringGrid
DrawGrid
Image

Forme
Biseau
Bote de dfilement

Shape
Bevel
ScrollBox

Bote de liste cocher


Sparateur

CheckListBox
Splitter

J. Darmont

Nom Pascal

Description
Bouton de commande avec image bitmap
Icne dans une barre doutils
Bote ddition permettant des saisies formates
Tableau daffichage de chanes
Tableau daffichage de donnes
Zone daffichage dune image bitmap, dune
icne ou dun mtafichier Windows
Forme gomtrique (ellipse ou rectangle)
Ligne ou rectangle 3D
Conteneur de composant possdant des barres
de dfilement
Liste [droulante] dlments cocher
Sparateur mobile

Programmation sous Delphi

20/40

Texte statique
Graphique

StaticText
Chart

tiquette contenant un descripteur de fentre


Graphique type Excel

Composants botes de dialogue

Bote de dialogue
Ouvrir
Enregistrer sous
Ouvrir image
Enregistrer image
Fontes
Couleurs
Imprimer
Configuration impression
Recherche
Remplacer

Nom Pascal
OpenDialog
SaveDialog
OpenPicture
SavePicture
FontDialog
ColorDialog
PrintDialog
PrinterSetupDialog
FindDialog
ReplaceDialog

Description
Ouverture dun fichier
Sauvegarde dun fichier
Ouverture dun fichier image
Sauvegarde dun fichier image
Slection dune police de caractre
Slection dune couleur dans la palette
Impression dun document
Paramtrage de limprimante
Recherche dune donne
Recherche et remplacement dune donne

b) Linspecteur dobjets
Cet outil est ddi la gestion des composants. La fentre de linspecteur contient deux volets :
la liste des proprits (attributs) du composant courant,
la liste des vnements associs au composant courant.
Proprits
Les noms des proprits sont placs dans la colonne de gauche (dans
lordre alphabtique) et les valeurs sur la ligne correspondante droite.
Les proprits dont le nom est prcd dun + ont plusieurs niveaux
imbriqus (ex. Font). Lorsquune proprit de ce type est droule ,
le signe apparat la place du signe +.
Pour donner une valeur une proprit, le plus simple est de remplacer
sa valeur par dfaut par une nouvelle valeur dans la bote ddition prvue cet effet.
La proprit Name est particulirement importante car elle permet
daccder au composant depuis les programmes. Par dfaut, Delphi lui
confre une valeur peu explicite (ex. Form1, Button1). Il est prfrable dutiliser des noms plus parlants .
Les proprits visibles dans linspecteur sont modifiables lors de la
phase de conception. Dautres proprits sont uniquement accessibles
lors de lexcution, grce du code source.

J. Darmont

Programmation sous Delphi

21/40

vnements
La colonne de gauche contient lensemble des vnements associs un
composant donn. Ex. OnClick, commun un grand nombre de composants, qui est activ lorsque lutilisateur clique sur le composant.
La colonne de droite consiste en une srie de botes de listes combines
permettant dassocier un gestionnaire dvnements lvnement
correspondant (i.e., un ensemble dinstructions Pascal excutes lorsque
lvnement survient).
Sur un double clic sur une de ces botes, lditeur de code souvre et le
curseur se positionne lintrieur du gestionnaire dvnements (une
procdure).
c) Lditeur de code
Les fichiers de code source composant un projet sont rassembls dans lditeur de code.
chaque fiche est associe une unit identifie par un onglet situ en haut de la fentre de
lditeur. Lditeur permet de modifier le code Pascal de ces units.

d) Les menus

Menu Fichier : cration, ouverture, enregistrement

Menu dition : annulation, copier, coller

Menu Chercher : chercher, remplacer

Menu Voir : gestionnaire de projets, inspecteur dobjets, dboguage

Menu Projet : compilation de code source, options de compilation

Menu Excuter : excution de programmes, dboguage

J. Darmont

Programmation sous Delphi

22/40

Menu Composant : cration de nouveau composant, configuration de la palette de composants

Menu Bases de donne

Menu Outils : options, utilitaires

Menu Aide : indispensable ! utiliser sans modration

2. Projets et programmes
Lensemble des lments dun programme excutable ou dune librairie DLL (Dynamic Link
Library) se contrle partir dun projet. Concrtement, un projet est un fichier binaire
dextension .dpr contenant des liens vers tous les lments du projet (fiches, units, etc.), euxmmes stocks dans des fichiers spars. Pour grer ces fichiers, Delphi met la disposition
des utilisateurs un outil : le gestionnaire de projets.
a) Le gestionnaire de projets
Le gestionnaire de projets se prsente comme une fentre compose de trois colonnes et dune
barre doutils.

La colonne de gauche liste les units du projet.

La colonne du milieu donne la liste des fiches. Toute fiche est associe une unit, mais
la rciproque est fausse.

La colonne de droite indique le chemin daccs au fichier de lunit quand celle-ci ne se


trouve pas dans le mme rpertoire que le projet lui-mme.

La barre doutils permet daccder rapidement des fonctionnalits galement accessibles par la barre de menus principale.

Fichiers dun projet


Fichier
Projet

J. Darmont

Extension
.dpr

Contenu
Code dinitialisation du programme

Programmation sous Delphi

23/40

Code source

.pas

Fiches

.dfm

Options du projet

.opt

Ressources

.res

Configuration du bureau

.dsk

Code objet compil


Programme excutable
DLL

.dcu
.exe
.dll

Code source des procdures, fonctions, fiches, DLL


ou composants (explicitement implment par
lutilisateur ou automatiquement gnr par Delphi)
Caractristiques et proprits des composants sous
forme binaire
Fichier texte contenant les paramtres de configuration du projet
Fichier binaire contenant les ressources Windows
utilises par lapplication (ex. licne du programme)
Configuration du bureau dclare dans la bote de
dialogue Options denvironnement

b) Le fichier de projet
Il nexiste quun seul fichier .dpr par application. Par dfaut, il contient le code suivant.
Program Project1;
Uses Forms,
Unit1 in UNIT1.PAS; {Form1}
{$R *.RES}
Begin
Application.CreateForm(TForm1, Form1);
Application.Run(Form1);
End.

Delphi gnre automatiquement le code correspondant de nouvelles fiches ou de nouvelles


units. Il est dconseill dintervenir manuellement sur le fichier de projet.
c) Les options de projet
Delphi permet le paramtrage dun projet grce la bote de dialogue Options de projet
(menu Projet/Options).

Fiches : slection de la fiche principale de lapplication (celle qui est ouverte au dmarrage du programme)

Application : choix dun titre pour le programme, association avec une icne

Compilateur : options de compilation (tonnant, non ?)

Lieur : options ddition des liens

Rpertoires/Conditions : chemins sur le disque, alias

InfoVersion : gestion des versions du projet

Paquets : inclusion de composants externes

J. Darmont

Programmation sous Delphi

24/40

3. Experts et modles
Delphi propose un ensemble de modles et dexperts qui assistent le dveloppeur dans la
conception dun programme en fournissant des lments prfabriqus mais totalement remodelables. Les nombreux modles et experts de Delphi sont accessibles par le menu Fichier/Nouveau. Quelques-uns sont dtaills ci-dessous.
Nouveau
Modles dlments standards : application, fiche, unit, DLL

Fiches
Modles de fiches prfabriques

Dialogues
Modles de botes de dialogue (fiches)
prfabriques

J. Darmont

Programmation sous Delphi

25/40

Projets
Modles dapplication :

Application Logo Win95 : modle le


plus simple avec uniquement une bote
propos
Application MDI (Multiple Document
Interface)
Application SDI (Single Document
Interface), application standard

+ Expert de cration dapplications

J. Darmont

Programmation sous Delphi

26/40

IV. La bibliothque dobjets de Delphi


1. Hirarchie des objets Delphi
La bibliothque dobjets de Delphi est constitue dune hirarchie de classes Pascal dont le
sommet est Object. Tous les composants et contrles sont des objets drivs de cette classe.
Une (petite) partie de cette hirarchie est prsente ci-dessous.
Obj ect

P ers is tent

Com ponent

Control

Gra phicCon trol

B evel

I m age

L abel

S hape

A pplication

Com m onDialog

M enu

W inControl

B utton

Check B ox

E dit

Lis t B ox

M em o

RadioB utton

a) Objets Delphi
Le terme dobjet prend, dans le contexte de la bibliothque de Delphi, un sens particulier : ce
sont les objets de base du systme, par opposition aux composants visuels prsents dans la
partie II. Ces objets, qui constituent la partie suprieure de la hirarchie de la bibliothque, ne
sont accessibles que par programme.
b) Composants et contrles
Composants
Ce sont des objets descendant de la classe Component, lments fondamentaux partir desquels sont construites les applications.
Ex. Application, botes de dialogue, barres de menu, groupe de boutons radio

J. Darmont

Programmation sous Delphi

27/40

Contrles
Les contrles reprsentent lensemble des composants visuels manipulables grce la palette
des composants. La cohsion des contrles est base sur la drivation de la classe Control.
Les contrles se subdivisent en deux groupes :

les contrles fentrs, hritiers de la classe WinControl, qui sont capable de recevoir le
focus de lapplication, disposent dun descripteur de fentre ou handle Windows et
peuvent contenir dautres contrles (ex. boutons de commande, cases cocher, botes
de liste, botes ddition) ;

les contrles graphiques, hritiers de la classe GraphicControl, qui ne possdent pas


de descripteur de fentre, ne peuvent pas recevoir le focus de lapplication et ne peuvent pas contenir dautre contrle (ex. cadres biseauts, images, tiquettes, formes
gomtriques).

2. Le scruteur
Le scruteur est un outil visuel servant examiner la hirarchie des objets dune application (y
compris ceux de la bibliothque). Il souvre par le menu Voir/Scruteur une fois le programme
compil.

La partie gauche de la fentre (volet Inspecteur) prsente larborescence des objets. La partie
droite (volet Dtails) est un classeur possdant trois onglets :

porte des symboles : dclarations et lments accessibles au niveau hirarchique de


lobjet slectionn dans linspecteur (mthodes, fonctions, procdures, types) ;

hritage : situation de lobjet dans larbre hirarchique ;

rfrences : localisation des occurrences des symboles dans lapplication (chemin


complet de lunit + numro de ligne).

J. Darmont

Programmation sous Delphi

28/40

Les informations fournies dans le volet Dtails peuvent tre filtres laide des icnes de
couleur places en haut de la fentre. Dans lordre, ces filtres sont :

constantes,
fonctions/procdures,
types,
variables,
proprits,
attributs hrits,
attributs virtuels,
attributs privs,
attributs protgs,
attributs publics,
attributs publis.

3. Hirarchies des classes et des conteneurs


Les objets Delphi sont organiss en deux hirarchies :

celle des classes dobjets, suivant le processus dhritage (hirarchie purement langagire que nous avons dj voque) ;

celle des conteneurs, qui concerne linclusion de composants les uns dans les autres.
Cette hirarchie est galement double. Elle correspond la prsentation visuelle de
linterface o les contrles peuvent graphiquement simbriquer les uns dans les autres
et dsigne la prsence dun objet comme attribut dun autre objet.

a) Proprits Parent / Control


La proprit Parent appartient tous les contrles fentrs (WinControl) et contient la rfrence du contrle parent (celui qui le contient). Symtriquement, tous les contrles contenus
dans un objet fentr sont ses enfants. Le cas le plus simple et le plus frquent dinclusion de
ce type est celui dune bote de groupe (contrle parent) contenant des boutons radio (contrles enfants).
La proprit Controls est un tableau dobjets Control reprsentant les enfants dun objet. La
proprit ControlCount indique le nombre denfants. Controls est index de 0 ControlCount1.
b) Proprits Owner / Components
Le propritaire dun objet possde cet objet dans sa liste dattributs, que cet objet soit un
contrle ou non. Des boutons radios groups dans une bote ont cette bote comme parent,
mais appartiennent la fiche sur laquelle ils sont dessins. La relation de proprit concerne
la structure des objets et non leur imbrication au niveau de linterface.

J. Darmont

Programmation sous Delphi

29/40

La proprit Owner permet de connatre le propritaire dun objet. Inversement, la proprit


Components contient la liste des composants dclars comme attributs. Cest un tableau
dobjets Component. La proprit ComponentCount indique le nombre de composants. Components est index de 0 ComponentCount1.

J. Darmont

Programmation sous Delphi

30/40

V. Connexion aux bases de donnes


Delphi propose en standard des composants pour manipuler des bases de donnes et des tables
relationnelles. Tous ces composants ont une base commune : le Borland Database Engine
(BDE), un noyau stable, complet et puissant.

1. Les composants sources


Les composants sources permettent daccder des bases de donnes. Ils sont accessibles
dans longlet AccsBD de la palette des composants.

NB : Ces composants sont invisibles , i.e., non visuels. Ils apparaissent sur une fiche en
mode cration mais pas lexcution du programme.
a) Table
Le composant Table permet daccder aux donnes contenues dans une table relationnelle.
Proprits principales
Proprit
Active
DataBaseName
Exclusive
MasterFields
MasterSource
ReadOnly
TableName

Description
Ouvre ou ferme la table
Nom de la base de donnes contenant la table
Empche dautres utilisateurs douvrir la table si positionne true
Attributs de la table (dtail) lis une table matre
Source de donnes dune table matre
Autorise ou non lutilisateur modifier la table
Nom de la table

b) Query
Le composant Query (requte) permet deffectuer une slection sur une base de donnes. Il est
identique au composant Table, mis part la provenance des donnes.

J. Darmont

Programmation sous Delphi

31/40

Proprits principales
Proprit
Active
DataBaseName
DataSource
Params
SQL

Description
Excute ou non la requte
Nom de la base de donnes interroge
Origine des valeurs fournir aux paramtres de la requte
Paramtres de la requte
Libell de la requte SQL

c) DataSource
Le composant DataSource sert visualiser les enregistrements dune table ou dune requte
dans des composants visuels de Delphi. Tous ces composants BD visuels utilisent un composant DataSource comme source de donnes.
Proprit principale
Proprit
DataSet

Description
Indique le composant (Table ou Query) source des donnes

2. Formulaires bass sur des tables


a) Composants BD visuels
Une fiche Delphi sur laquelle apparaissent des donnes issues dune base de donnes est
conue partir de composants similaires aux composants classiques, les composants BD visuels, runis dans longlet ContrleBD de la palette des composants.

Composants BD principaux
Contrle
Texte BD
dition BD
Mmo BD
Image BD
Navigateur BD

Nom Pascal
DBText
DBEdit
DBMemo
DBImage
DBNavigateur

Description
Texte non modifiable
Bote ddition dune ligne
Bote ddition multi-lignes
Image
Barre dicnes pour la navigation dans la BD

b) Formulaires simples
Pour construire un formulaire simple, il suffit de suivre les tapes suivantes.

J. Darmont

Programmation sous Delphi

32/40

1. Placer un composant Table sur la fiche.


Donner une valeur la proprit DatabaseName.
Donner une valeur la proprit TableName.
Ouvrir la table en positionnant la proprit Active true.
2. Placer un composant DataSource sur la fiche.
Slectionner la table cre ltape 1 dans la proprit DataSet.
3. Ajouter sur la fiche autant de composants BD visuels que ncessaire pour afficher les
donnes.
Slectionner le composant DataSource cr ltape 2 dans la proprit DataSource
de chaque composant.
Slectionner un champ de la table dans la proprit DataField de chaque composant.
c) Naviguer dans les donnes
La faon la plus simple de naviguer dans les donnes est dutiliser le composant navigateur
BD (DBNavigator). Cest un composant graphique reprsentant des boutons type magntocassette qui permettent de passer dun enregistrement lautre, de sauter en fin de table, etc.

Pour utiliser un navigateur BD, il suffit de lajouter la fiche contenant les donnes et de donner une valeur sa proprit DataSource.
d) Utilisation dune grille
Il est possible de visualiser plus dun enregistrement la fois laide du composant universel
grille BD (DBGrid), qui permet dobtenir une vue des donnes sous forme tabulaire. Ce composant sadapte la structure de la table rfrence afin den montrer tous les champs.
Pour construire un formulaire bas sur une grille, il suffit de reprendre les tapes 1 et 2 du b),
puis dajouter un composant grille et de donner une valeur sa proprit DataSource.
e) Formulaires composs
Les formulaires composs permettent de visualiser des associations 1, N entre deux tables. La
dmarche de construction dun tel formulaire est la suivante.
1. Placer deux composants Table et deux composants DataSource sur la fiche (cf. tapes
1 et 2 du b)). Lune des tables sera la table matre (ct 1 de la relation 1, N) et
lautre la table dtail (ct N de la relation 1, N).
2. Slectionner la table dtail.
Indiquer dans sa proprit MasterSource le composant DataSource associ la table
matre.
diter la proprit MasterFields pour effectuer le lien entre les tables (apparition
dune bote de dialogue). Cliquer dans les parties champ dtail et champ matre sur-le-

J. Darmont

Programmation sous Delphi

33/40

champ permettant de faire la jointure entre les deux tables, ajouter les champs joints
(bouton ajouter) et valider.
3. Afficher les informations des deux tables laide des composants BD visuels.
f) Lexpert fiche base de donnes
Lexpert fiche BD est accessible par le menu Base de donnes/Expert fiche Il permet de
dessiner facilement, grce une srie de botes de dialogues, des formulaires simples ou composs.

3. Requtes SQL
Le propos de cette section nest pas de prsenter le langage SQL, mais dindiquer comment
formuler et excuter une requte SQL avec Delphi.
a) Formulaire bas sur une requte
La dmarche est la mme que pour crer un formulaire simple bas sur une table. Il suffit de
remplacer le composant Table par un composant Query et de renseigner la proprit SQL.
b) Requte paramtre
Soit la requte SQL suivante : SELECT * FROM CLIENT WHERE VILLE = Paris.
Pour accder aux habitants de Lyon, une autre requte similaire est ncessaire. Et ainsi de
suite pour toutes les autres villes. Pour remdier ce problme, Delphi permet linsertion de
paramtres dans le texte de la requte.
Version paramtre de la requte initiale : SELECT * FROM CLIENT WHERE VILLE = :ville.
Il suffit dinstancier le paramtre ville avant lactivation de la requte (proprit Params).

4. Transfert de donnes
Lorsque Delphi effectue une requte, il utilise une table virtuelle (en mmoire) pour stocker le
rsultat. Pour conserver ce rsultat sur disque, il faut crer une table rponse et y recopier les
donnes de la table virtuelle. Pour ce faire, il faut disposer sur une fiche les composants suivants :

un composant Query pour effectuer une requte ;

J. Darmont

Programmation sous Delphi

34/40

un composant Table pour dsigner la table physique (sur disque) crer ;

un composant BatchMove (onglet AccsBD de la palette des composants) pour effectuer le transfert.

Attribuer la proprit Source du composant BatchMove le composant requte, la proprit


Destination le composant table et la proprit Mode la valeur batCopy (ce qui permet de
crer la table si elle nexiste pas).
Il suffit ensuite de programmer un bouton de commande pour appeler la mthode Execute du
composant BatchMove.
Pour transfrer des enregistrements dune table une autre, il suffit de calquer lopration
prcdente en remplaant le composant requte par un composant table.

5. Manipulation de donnes par programme


a) Oprations de base
Classe DataSet
Les composants Table et Query hritent indirectement de la classe DataSet, qui permet de
reprsenter un ensemble de donnes.
Enregistrement courant
Lorsquun DataSet est ouvert, un certain nombre denregistrements sont lus sur disque et placs dans un tampon mmoire. Cependant, un seul enregistrement est considr comme
lenregistrement courant. La lecture dun champ ou la suppression dun enregistrement se font
toujours par rapport lenregistrement courant
Tampon mmoire

Enregistrement
courant

Lecture dun champ


Laccs au contenu dun champ se fait par la proprit Fields du DataSet, qui est un tableau
de champs. Laccs la valeur dun champ peut se faire par sa position dans le tableau ou par
le nom de ce champ, grce la mthode FieldByName. Puisquun champ peut tre de nature
trs varie, son contenu est stock en mmoire sous forme physique. Lorsque cette donne est
manipule, elle doit ltre sous forme logique. Par consquent, il faut indiquer dans quel format logique on dsire accder la donne.
J. Darmont

Programmation sous Delphi

35/40

Ex. var a: integer;


Begin
a:=Table1.Fields[0].asInteger;
a:=Table1.FieldByName(Numero).asInteger;
{ Conversion physique-logique :
asBoolean
asFloat
asInteger
asString
}

dition dune table


Par dfaut, le DataSet est en mode dition, cest--dire que ses donnes peuvent tre modifies via des contrles. Pour empcher cela, il faut passer la proprit AutoEdit du composant
DataSource false. Pour passer le DataSet en mode dition, il faut appeler sa mthode Edit.
Ex. Table1.Edit;
Ajout/insertion denregistrements

Ajout : mthode Append ; un enregistrement vierge est ajout la fin de la table.


Insertion : mthode Insert ; lenregistrement insr se place avant lenregistrement
courant

Il faut ensuite remplir chaque champ.


Ex. Table1.Insert;
Table1.FieldByName(Numero).asInteger:=100;
Table1.Append;
Table1.FieldByName(Numero).asInteger:=500;

Il est galement possible dajouter ou dinsrer un enregistrement tout en remplissant mes


champs grce aux mthodes AppendRecord et InsertRecord.
Ex. Table1.InsertRecord(900,Champ 2,Champ3,3.1416);
Validation/annulation des mises jour
Mthode du DataSet
Post
Refresh
Cancel

Description
Valide la saisie et quitte le mode dition
Valide la saisie, quitte le mode dition et rafrachit les donnes visibles lcran
Annule les modifications apportes un enregistrement tant quelles
nont pas t valides

Ex. Table1.Refresh;

J. Darmont

Programmation sous Delphi

36/40

b) Navigation dans la base de donnes


Enregistrement prcdent, suivant, premier et dernier
Mthode du DataSet
Prior
Next
First
Last

Description
Lenregistrement courant devient lenregistrement prcdent
Lenregistrement courant devient lenregistrement suivant
Lenregistrement courant devient le premier enregistrement
Lenregistrement courant devient le dernier enregistrement

Ex. Table1.First;
Table1.Next;
Table1.Next;

Dbut et fin de table


Mthode du DataSet
BOF
EOF

Description
Dbut de table (avant le premier enregistrement)
Fin de table (aprs le dernier enregistrement)

Ex. Table1.First;
While not Table1.EOF do
Begin
Writeln(Table1.FieldByName(Numero).asInteger);
Table1.Next;
End;

c) Requtes SQL
Requte simple
La proprit SQL dun composants Query est de type Strings, cest--dire un tableau de chanes de caractres. Il est donc possible de modifier cette proprit en utilisant les mthodes du
type Strings et ainsi de crer dynamiquement une requte.
Ex. Query1.Database:=DBDEMOS;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(select * from clients);
Query1.SQL.Open;

Requte paramtre
Il est galement possible daccder la proprit Params de faon dynamique.
Ex. Query1.Close;
Query1.Params[0].asString:=Lyon;
Query1.Open;

J. Darmont

Programmation sous Delphi

37/40

d) Recherche denregistrements
Recherche exacte : SetKey/GotoKey, FindKey
SetKey positionne le DataSet en mode recherche. La proprit Fields permet alors de fournir
les critres de recherche pour chaque champ index. Puis, il suffit dappeler la mthode GotoKey pour activer la recherche. Si aucune correspondance nest trouve, GotoKey renvoie
false.
Ex. Procedure TForm1:RchNomPrenom(n, p: string);
Begin
Table1.SetKey;
Table1.FieldByName(Nom).asString:=n;
Table1.FieldByName(Prenom).asString:=p;
Table1.GotoKey;
End;

FindKey permet la mme opration en une instruction, en prcisant le ou les critres de slection dans un tableau ouvert.
Ex. Procedure TForm1:RchNomPrenom2(n, p: string);
Begin
If Table1.FindKey([n, p]) then ShowMessage(Trouv !);
End;

Recherche approchante : FindNearest


Ex. Procedure TForm1:RchNom(n: string);
Begin
If Table1.FindNearest([n]) then ShowMessage(Trouv !);
End;

Filtres : SetRangeStart/SetRangeEnd/ApplyRange, SetRange


Les filtres permettent de limiter la vue de la table certains enregistrements seulement. Ils
sont plus particulirement adapts aux champs numriques, mais peuvent galement tre employs sur des champs alphanumriques.
Ex. Table1.SetRangeStart;
Table1.FieldByName(Numero).asInteger:=50;
Table1.SetRangeEnd;
Table1.FieldByName(Numero).asInteger:=100;
Table1.ApplyRange;

ou Table1.SetRange([100],[300]);
Marqueurs
Les marqueurs sont des objets de type TBookMark. Ils permettent de conserver un pointeur
sur un enregistrement pour pouvoir y revenir rapidement par la suite.

J. Darmont

Programmation sous Delphi

38/40

Mthode du DataSet
FreeBookMark
GetBookmark
GotoBookMark

Description
Dtruit un marqueur
Pose un marqueur
Va au marqueur

Ex. Var marqueur: TbookMark;


Begin
{ }
Marqueur:=Table1.GetBookMark;
{ }
Table1.GotoBookMark(marqueur);
{ }
Table1.FreeBookMark(marqueur);
End;

J. Darmont

Programmation sous Delphi

39/40

Rfrences

Guide de lutilisateur Delphi 3, Borland, 1997.

Guide du dveloppeur Delphi 3, Borland, 1997.

P. Spoljar, Mode demploi Delphi, Sybex, 1995.

D. Lantim, Delphi programmation avance, Eyrolles, 1996.

J.-C. Armici, Cours dintroduction Delphi,


http://www.ellipse.ch/cours/DelphiHome.htm, 1999.

M. Bardou, Delphi, http://perso.wanadoo.fr/bardou/michel/delphi.htm, 1999.

J. Darmont

Programmation sous Delphi

40/40

Vous aimerez peut-être aussi