You are on page 1of 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. II. INTRODUCTION......................................................................................................................................... 3 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 ! Programmation sous Delphi 4/40

J. Darmont

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

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

Types rels
Single Real Double Extended

J. Darmont

Programmation sous Delphi

5/40

Type boolen
Boolean

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

Types caractres
Char String[n] String

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}); Type {Dclaration de types locaux} Const {Dclaration de constantes locales} Var {Dclaration de variables locales} {procdures | fonctions locales} Begin {Corps de la procdure} End; Function NomF({paramtres}): {type}; Type {Dclaration de types locaux} Const {Dclaration de constantes locales} Var {Dclaration de variables locales} {procdures | fonctions locales} Begin {Corps de la fonction} NomF:={valeur de retour}; End;

b) Exemples de sous-programmes
Procedure PN_P(nombre: real); Const N=25; Var i: integer; res: real; Begin res:=1; For i:=1 to N do res:=res*nombre; Writeln(res); End; Function PN_F(nombre: real):real; Const N=25; Var i: integer; res: real; 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 Nom Prnom Date_naissance Etat_civil( ) Calcul_age( ) EMPLOYE Employeur Date_embauche Salaire 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

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

J. Darmont

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 Mmo Bouton Case cocher Bouton radio Bote de liste simple Bote de liste combine Barre de dfilement Bote de groupe Groupe de boutons radio Volet

Nom Pascal
MainMenu PopupMenu Label Edit Memo Button CheckBox RadioButton ListBox ComboBox 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 Grille de chanes Grille daffichage Image Forme Biseau Bote de dfilement Bote de liste cocher Sparateur

Nom Pascal
BitBtn SpeedButton MaskEdit StringGrid DrawGrid Image Shape Bevel ScrollBox CheckListBox Splitter

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

J. Darmont

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 b) Linspecteur dobjets

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

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 Extension


.dpr

Contenu Code dinitialisation du programme

J. Darmont

Programmation sous Delphi

23/40

Code source Fiches Options du projet Ressources Configuration du bureau Code objet compil Programme excutable DLL b) Le fichier de projet

.pas

.dfm .opt .res .dsk .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

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

A pplication

Com m onDialog

M enu

Gra phicCon trol

W inControl

B evel

I m age

L abel

S hape

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 b) Formulaires simples Pour construire un formulaire simple, il suffit de suivre les tapes suivantes. 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

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 ;
Programmation sous Delphi 34/40

J. Darmont

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

You might also like