Jrme Darmont
jerome.darmont@univ-lyon2.fr
http://eric.univ-lyon2.fr/~jdarmont/
INTRODUCTION......................................................................................................................................... 3
II.
J. Darmont
1/40
RFRENCES .................................................................................................................................................... 40
J. Darmont
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 :
Nous complterons cette approche par la connexion aux bases de donnes avec Delphi.
J. Darmont
3/40
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
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
Multiplication : *
Division entire : div
Ce nest pas parce que le goto existe en Pascal quil faut lutiliser !
J. Darmont
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 { }
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
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
6/40
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;
J. Darmont
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};
Caseof
Case {variable} of
{valeur1}: {Instruction};
{valeur2}: {Instruction};
J. Darmont
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(*);
J. Darmont
9/40
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});
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}
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);
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
10/40
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
11/40
J. Darmont
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.
Lier les donnes et les fonctions qui les manipulent afin dviter des accs aux donnes par des fonctions non autorises.
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
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( )
J. Darmont
14/40
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;
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
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;
J. Darmont
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 peuvent tre plusieurs dans une classe condition de ne pas porter le mme nom.
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
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
18/40
J. Darmont
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
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
20/40
Texte statique
Graphique
StaticText
Chart
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
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
J. Darmont
22/40
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 du milieu donne la liste des fiches. Toute fiche est associe une unit, mais
la rciproque est fausse.
La barre doutils permet daccder rapidement des fonctionnalits galement accessibles par la barre de menus principale.
J. Darmont
Extension
.dpr
Contenu
Code dinitialisation du programme
23/40
Code source
.pas
Fiches
.dfm
Options du projet
.opt
Ressources
.res
Configuration du bureau
.dsk
.dcu
.exe
.dll
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.
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
J. Darmont
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
25/40
Projets
Modles dapplication :
J. Darmont
26/40
P ers is tent
Com ponent
Control
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
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) ;
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 :
J. Darmont
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.
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.
J. Darmont
29/40
J. Darmont
30/40
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
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
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
32/40
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
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 :
J. Darmont
34/40
un composant BatchMove (onglet AccsBD de la palette des composants) pour effectuer le transfert.
Enregistrement
courant
35/40
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
36/40
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;
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
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;
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
38/40
Mthode du DataSet
FreeBookMark
GetBookmark
GotoBookMark
Description
Dtruit un marqueur
Pose un marqueur
Va au marqueur
J. Darmont
39/40
Rfrences
J. Darmont
40/40