Vous êtes sur la page 1sur 10

Option info Terminale

page 1/100

DELPHi : une Base de Donnes

Cration dune base de donne avec DELPHI (pascal de BORLAND) Cration du rpertoire de TRAVAIL ; Commencer par crer un rpertoire dans le rpertoire DELPHI. Lancer lExplorateur, Activer le rpertoire DELPHI puis dans le menu Fichiers de lexplorateur demander Nouveau Dossier. Lexplorateur cr immdiatement un sous dossier de DELPHI que lon nomme FIC2ND (il suffit en fait de remplacer Nouveau dossier par FIC2ND). Ce rpertoire contiendra le fichier excutable que nous allons crer ainsi que la base de donnes. 1- Cration dune Fiche au Format DBASE. DBase est un format officiel de base de donnes. Il est donc facile dexporter ou dimporter un fichier DBase. Nous allons dvelopper le logiciel que nous avons utilis en seconde : un fichier de classe : une fiche contiendra les champs suivants : - Nom (20 lettres) - Prnom (20) - Classe (2) - Commune (30 ) - Sexe (1) Lancer Delphi32.exe. Drouler le menu Outils et demander Module Base de donnes. Faire Fichiers-Nouveau-Table et demander comme type de Table : Dbase pour Windows. Remplir alors les champs, leur Type (Caractres) et les tailles. La colonne nombre de dcimales nest utilise que pour un format numrique et ne nous concerne donc pas. 1 2 3 4 5 Nom de champ NOM PRENOM CLASSE COMMUNE SEXE Type C C C C C Taille Dec 20 20 2 30 1

Cliquer sur dfinir les index (les index permettent de trier une base de donne). Nous allons dfinir un index pour chacun des champs de faon pouvoir trier sur nimporte lequel des critres. Cliquer sur le champ NOM puis sur expression dindex puis sur NOM, appuyer sur ENTREE et taper NOM1. La module contiendra un champ cach NOM1 permettant denregistrer la base sous un ordre dfini (croissant par dfaut). Recommencer avec le champ PRENOM (et taper PRENOM1), puis ainsi de suite avec tous les champs. Cliquer sur Enregistrer sous et aller dans le rpertoire \DELPHI\FIC2ND, taper le nom de la base (ex : JEAN01 ). Votre base de donnes au format DBASE est cre et enregistre. Elle peut tre utilise pour programmer une interface utilisateur laide de Delphi. 2- Interface utilisateur Refermer le module Base de donnes. Description rapide de linterface Delphi. On se trouve en permanence en prsence de trois modules :

Option info Terminale -

page 2/100

DELPHi : une Base de Donnes

Le module principal Delphi 3 (en haut) contenant le menu droulant et toutes les barrettes doutils. Cest lui qui permet de dcider des composants placer sur la fiche et de compiler ou excuter lapplication. - La fiche de travail (fiche vierge au dpart nomme Form1) qui est double : - Partie visuelle telle quelle apparat au yeux de lutilisateur - Partie texte dans lequel Delphi crit lui-mme le code pascal et nous laisse la possibilit de travailler sur ce code. - Linspecteur dobjet, propre a chaque objet cr sur la fiche (bouton par exemple) et contient deux onglets : - Les proprits de lobjet, appeles aussi mthodes, nous permettent de modifier sa taille, se couleur, ses actions etc. - Les vnements qui permettent dcrire les procdures qui doivent sexcuter lors de tel ou tel vnement (clic, touche, fermeture de fentre etc.) Nous allons apprendre travailler avec ces trois modules et voir avec quelle facilit il devient possible de dvelopper une vritable application windows. La programmation avec Delphi est oriente objets cest dire que le programme na pas de dbut (ni de fin) mais est constitu dun ensemble dobjets qui ragissent aux vnements (clic de souris, appui sur une touche, dplacement de souris etc. ) a- Nom de la fiche de travail Pour crer une interface utilisateur nous partons dune fiche vierge nomme Form1. Nous allons commencer par personnaliser le nom de cette fiche : - Dans les proprits de linspecteur dobjets remplacer dans le champ caption Form1 par Base seconde. La fiche vierge se nomme dsormais Base seconde. Utiliser le menu Fichiers-Enregistrer le projet sous et enregistrer le projet dans le rpertoire \DELPHI\FIC2ND sous le nom de FIC2ND1 par exemple. Le fait denregistrer le projet immdiatement permet de dfinir le rpertoire \DELPHI\FIC2ND comme rpertoire par dfaut. b- Cadre de travail Dans la barrette Standard cliquer sur le dernier composant Panel. Cliquer alors sur la fiche vierge pour placer un fond de travail sur la fiche. Dans les proprits de linspecteur dobjets rgler le champ Align sur AlClient. Le cadre de travail occupe alors toute la fiche (la zone client de la fiche). Dans les proprits de linspecteur dobjets effacer le champ Caption (qui doit contenir Panel1) sinon le mot Panel1 reste affich au centre de la fiche. Il nous reste maintenant placer sur notre fiche vierge des objets lis la base de donnes que nous venons de construire. c- Accs la base de donnes Il faut maintenant ouvrir notre base de donne pour pouvoir en utiliser les champs sur notre fiche. - Dans la barrette AccsBD cliquer sur le composant Table et dposer une table sur la fiche de travail. Nous pouvons la poser nimporte o, elle ne sera pas visible. Elle sert uniquement ouvrir les champs de la base que nous venons de construire. Dans les proprits de linspecteur dobjets de la table (nomme Table1) rgler le champ TableName sur le Nom de votre base de Donnes : JEAN01.DBF (par exemple). Ouvrir la base de donnes en rglant le champ Active TRUE.

Option info Terminale

page 3/100

DELPHi : une Base de Donnes

- Dans la barrette AccsBD cliquer sur le composant DataSource et dposer le sur la fiche (lui non plus napparat pas lexcution). Dans les proprits de linspecteur dobjets du composant DataSource (nomme DataSource1) rgler le champ DataSet sur Table1. Notre fiche est lie la base de donne que nous venons de construire et nous allons pouvoir en manipuler les champs notre guise. d- Contrles de la base de donnes - Dans la barrette ControlBD cliquer sur le composant DBGrid et dposer lobjet tableau sur la fiche de travail. Attention ce tableau sera visible ! Vous pouvez le placer gauche comme sur la copie dcran de la dernire page. Ce tableau est vide pour linstant et il faut le lier la table que nous venons de dfinir. Dans les proprits de linspecteur dobjets du composant DBGrid (nomm DBgrid1) rgler le champ DataSource sur DataSource1 (qui est li lobjet Table1, lui-mme li notre base DB). Le tableau ne contient que les noms de champs. Nous pourrons le remplir et le complter loisir lors de lexcution du programme. Dans les proprits de linspecteur dobjets du composant DBGrid (nomm DBgrid1) rgler le champ Columns en cliquant sur les . Ceci ouvre une fentre de dialogue permettant de nafficher que les colonnes dsires. Cliquer alors sur Tous les Champs et supprimer les champs CLASSE, COMMUNE et SEXE. Refermer la fentre de dialogue. Seuls les champs NOM et PRENOM sont affichs. En fait le tableau va nous servir naviguer dans la base. Rgler les dimensions du tableau comme sur la copie dcran jointe. Dans les proprits de linspecteur dobjets du composant DBGrid drouler le menu +Options en double-cliquant. Rgler alors le dgEditing FALSE. De cette faon le tableau ne pourra plus accepter de saisie ni de modifications. Nous allons dfinir une grille ddition pour nous permettre dajouter ou de modifier les fiches. e- Grille ddition Nous allons dfinir cinq fentre permettant de saisir les cinq champs de nos fiches. - Dans la barrette ControlBD cliquer sur le composant DBEdit et dposer le cadre ddition sur la fiche de travail (voir la copie dcran). Ce premier cadre servira saisir le NOM. Dans les proprits de linspecteur dobjets du composant DBEdit (nomm DBEdit1) rgler le champ DataSource sur DataSource1 et le champ DataField sur NOM. - Dans la barrette Standard utiliser le bouton Label et placer un objet Label devant la fentre ddition du NOM. Taper NOM dans la proprit caption de ce Label. Alignement : slectionner les deux objets (NOM et EDIT1) en cliquant tout en maintenant la touche SHIFT enfonce. Drouler alors le menu contextuel (bouton droit de la souris) et demander Aligner puis choisir un alignement vertical des centres. Recommencer les mmes oprations pour les autres champs de la fiche. La dernire proprit Width de chacune des fentres EDIT peut tre rgle en fonction de la longueur des chanes de caractres demande. Penser enregistrer votre projet votre projet.

Option info Terminale

page 4/100

DELPHi : une Base de Donnes

f- Ajouter et modifier des fiches Le tableau Dbgrid1 permet de naviguer facilement dans la base donnes. Il nous manque seulement deux boutons : un pour ajouter une fiche et un pour dtruire une fiche. Nous allons crer ces boutons et cette fois il va falloir crire un peu de code Pascal ! ! Dans la barrette Supplment utiliser un bouton BitBtn et le placer sous les cadres de saisies. Renommer la commande Caption en &Ajouter et le Champ Name en Ajouter ( la place de BitBtn1). Cliquer sur les de la commande Glyph pour charger limage \DELPHI\IMAGES\BUTTONS\INSERT.BMP. Il faut maintenant crire la procdure qui va permettre dentrer dans la fentre ddition et dajouter une fiche. Double-cliquer sur le bouton &Ajouter. Delphi fabrique aussitt le squelette de la procdure Pascal AjouterClick1 qui s'excutera lorsque lon cliquera sur ce bouton. Il nous faut alors crire le code pascal permettant lajout dune fiche entre le Begin et le End ; de la procdure. Nous allons en fait crire seulement deux instructions : - Table1.Insert ; cette instruction insre un enregistrement dans notre base Table1. - DBEdit1.SetFocus ; pour obliger le curseur se placer dans la fentre ddition du NOM : Edit1. La procdure pascal sera donc la suivante (vous navez crire que les deux lignes en italique) : procedure TForm1.AjouterClick(Sender: TObject); begin Table1.Insert ; DBEdit1.SetFocus ; end; end. {dernier end et fin (.) du programme } De la mme faon fabriquons un bouton Supprimer auquel nous allons coller limage DELETE.BMP. Dans la procdure pascal SupprimerClick(Sender : Tobject) il nous suffira de rajouter la seule ligne Table1.Delete entre le Begin et le End ; Rgler alors la taille et lemplacement des boutons. g- Premier essai. Nous allons maintenant enregistrer nos premires fiches. Excuter le programme (menu excuter). Ajouter quelques fiches pour commencer remplir la base et pouvoir faire des tris. Une fois les premires fiches saisies vous pouvez refermer la fentre pour revenir au dveloppement sous Delphi. h- Un fentre de TRI Nous allons dfinir deux boutons permettant de trier suivant le NOM ou suivant la CLASSE. Ces deux boutons seront placs sur une fentre de groupe intitule TRI.

Option info Terminale

page 5/100

DELPHi : une Base de Donnes

A laide de la barrette Standard dfinir une fentre GroupBox et la nommer TRI SUIVANT Sur cette fentre placer deux boutons nomms NOM et CLASSE. Associer ces boutons limage \DELPHI\IMAGES\BUTTONS\Sort.BMP. La commande Pascal associe au Bouton NOM sera : Table1.IndexFieldNames := 'NOM'; La commande Pascal associe au Bouton NOM sera : Table1.IndexFieldNames := 'CLASSE'; Relancer le programme (F9) et essayer. Enregistrer votre travail i- Des slections Pour quune base de donnes soit utilisable il faut pouvoir slectionner une partie de la base : un classe ou toutes les filles etc. A laide de la barrette Standard dfinir une fentre GroupBox et la nommer SELECTIONS Nous allons dabord dfinir une fentre de slection permettant lutilisateur de rentrer une chane de caractres reprsentant la slection quil veut effectuer. Par exemple CLASSE = 2B ou COMMUNE = Beauprau ou encore CLASSE < 2E. Dans la barrette Standard utiliser une fentre Edit et la placer sur la bote de groupe SELECTIONS Vider le Champ Text (il est Edit1 par dfaut). Il faut pouvoir rcuprer la phrase tape dans une Variable Globale de Type STRING. Nous allons appeler cette variable SELECT. Allons dans la fiche Pascal Fic2nd. En parcourant le code on trouve dans la partie VAR une seule variable qui est Form1 (cest la variable associe la fiche principale). Ajoutons alors notre variable globale en tapant une nouvelle ligne SELECT : STRING ; La partie VAR de lapplication doit donc tre maintenant : VAR Form1 : Tform1 ; Select : STRING ; Revenons maintenant la fiche et par un double clic tapons la procdure associe la fentre Edit1 : procedure TForm1.Edit1Change(Sender: TObject); begin Select:=Edit1.Text; end; Ajouter le mot Filtre devant la fentre Edit1. Ajouter alors un bouton GO qui va nous permettre de lancer la slection utilisant le filtre tap dans la fentre Edit1. Associons ce bouton la procdure :

Option info Terminale

page 6/100

DELPHi : une Base de Donnes

procedure TForm1.BitBtn3Click(Sender: TObject); begin Table1.Filtered :=TRUE; {prpare la base lopration de filtrage} Table1.Filter:=Select; {lance le filtrage avec la chane Select} end; Relanons le programme et essayons une slection : tapons dans la case ddition rserve au filtre CLASSE = 2A et cliquons sur le bouton GO : seuls les lves de la classe 2A saffichent dans le tableau. Attention au filtre (Risque de plantage !) le premier mot CLASSE est un nom de champ alors que 2A est un texte et doit tre entre guillemets. Un instruction trs puissante sous Delphi permet de grer les exceptions (plantages) . Il sagit de linstruction TRY {Bloc dinstructions 1} EXCEPT {Bloc dinstructions 2} END ; Si aucune erreur ne se produit lors de lexcution du Bloc 1 le Bloc 2 est ignor , par contre si une erreur se produit lors de lexcution du Bloc 1 alors le programme neffectue pas cette instruction et passe directement la main au Bloc 2 qui doit grer lerreur. Le code devient donc le suivant : procedure TForm1.BitBtn3Click(Sender: TObject); VAR St : ARRAY[0..100] OF CHAR; {Variable de type Pointeur Chane} begin TRY Table1.Filter:=Select; Table1.Filtered:=TRUE; EXCEPT StrCopy(St,'Erreur de syntaxe. '+#10+#13); {#10 et #13 pour un retour la ligne} StrCat(St,'Utiliser la syntaxe SEXE = ''M'' pour slectionner les hommes.'); Application.MessageBox(St,'ATTENTION !',mb_OK); {Affiche une bote de message dont le texte est St, le titre ATTENTION ! et avec le seul bouton OK} Table1.Filter:=''; {vide le filtre} Table1.Filtered:=FALSE; {annule le filtrage} END; end; Linstruction TRY ne fonctionne pas lorsque le sous trouve sous Delphi en mode compilation, elle fonctionnera lorsque lon lancera le programme de faon indpendante. Il faut maintenant un bouton permettant dannuler la slection pour revenir la liste complte. Crons ce bouton (Titre Annuler et Glyph Undo), et associons lui la procdure procedure TForm1.BitBtn4Click(Sender: TObject); begin Table1.Filtered:=FALSE; {annule les oprations de filtrage}

Option info Terminale end; j- Un compteur

page 7/100

DELPHi : une Base de Donnes

Il est important de connatre le nombre de fiches (total ou avec slection). Crons une fentre ddition MaskEdit1 en utilisant dans la barrette Supplment MaskEdit. Rgler la proprit ReadOnly sur TRUE pour quil soit uniquement en lecture et ne puisse tre modifi par lutilisateur. Il faut maintenant insrer dans ce masque ddition le nombre denregistrements de la table (Table1.RecordCount) et ceci chaque fois que quelque chose boug dans la table. Cliquer sur Table1 pour en ouvrir linspecteur dobjets. Dans lvnement AfterScroll taper le nom de procdure Mise_a_jour , double-cliquer et remplir la procdure de la faon suivante : procedure TForm1.Mise_a_Jour(DataSet: TDataSet); VAR St : STRING; begin Str(Table1.RecordCount,St); {transforme le nombre denregistrements en chane dans St} MaskEdit1.EditText:=St; {place la chane St dans le masque ddition} end; Cette procdure sera appele chaque fois que quelque chose aura boug dans le tableau (AfterScroll) et le compteur sera donc modifi en permanence. Ajouter le texte Nombre de fiches devant la fentre MaskEdit1. k- Imprimer les fiches Nous allons fabriquer une nouvelle fiche qui napparatra pas lcran mais qui va nous permettre de prparer le format daffichage pour limpression de lensemble de la base. Demander Fichiers-Nouvelle Fiche. Nommer impression la nouvelle fiche cre par Delphi. Sur cette fiche nous allons poser tous les composants que nous voulons imprimer. Dans la barrette Qrep choisir un composant QuickRep et le placer sur la nouvelle fiche. A laide du bouton droit de la souris et en cliquant sur lobjet QuickRep faire un Zoom Arrire pour visualiser lensemble du composant. Rgler la proprit DataSet sur Form1.Table1 pour associer ce rapport notre base de donnes. Dans la barrette Qrep Choisir un composant Qrband et le placer sur lobjet QuickRep. Cet objet est nomm Qrband1. Rgler la proprit BandType sur Rbdetail pour afficher tous les champs les uns la suite des autres. Poser sur ce composant QuickRep1 un composant QrDBtext. Rgler la proprit DataSet sur Form1.Table1 pour lier se composant notre base. Rgler le composant DataField sur le champ NOM (il suffit de faire drouler et choisir).

Option info Terminale

page 8/100

DELPHi : une Base de Donnes

Recommencer et poser un autre composant QrDBtext dont on rgle DataSet sur Form1.table1 et DataField sur PRENOM. Mettre sa proprit Left 90. Recommencer pour placer le champ COMMUNE la suite (Left = 170). Recommencer pour placer le champ CLASSE la suite (Left = 310). Recommencer pour placer le champ SEXE la suite (Left = 370). Drouler le Menu contextuel en cliquant sur QuickRep1 avec le bouton droit et demander une prvisualisation. La fentre de dialogue aperu avant impression souvre et vous montre la page telle quelle sera imprime. Refermer cette page. Il faut maintenant ajouter une barre de titre la page comportant les mots NOM, PRENOM, COMMUNE, CLASSE, SEXE. Ajouter un autre composant Qrband (Qrband2). Rgler la proprit bandType sur RbTitle. Rgler la proprit Height 26 et enfin drouler la proprit Frame et mettre DrawBottom TRUE pour tracer une ligne SOUS la bande Title. Sur cette bande Title placer cinq objet Qrlabel et nommer les champs Caption respectivement NOM, PRENOM (Left = 90), COMMUNE (Left = 170), CLASSE (Left = 310) et SEXE (Left = 370). Il faut maintenant ajouter un Bouton sur notre Fiche Base seconde pour avoir accs la fentre de prvisualisation et pouvoir imprimer notre travail. Pour ce faire il suffit de crer un bouton Imprimer et de lui lier le script : procedure TForm1.BitBtn5Click(Sender: TObject); begin Form2.QuickRep1.preview; end; Lors de la premire excution du programme Delphi nous demande si nous voulons ajouter lunit lie Form2 dans les clauses Uses de lapplication : nous rpondons oui et nous pouvons tester le programme sous sa version presque dfinitive. Ajouter enfin un bouton Quitter auquel on associe le script : procedure TForm1.BitBtn6Click(Sender: TObject); begin Application.Terminate; end; l- Ajout de menu droulant

Option info Terminale

page 9/100

DELPHi : une Base de Donnes

Pour donner un peu dallure notre application nous allons lui ajouter un menu comme dans toute bonne application Windows. Poser un objet MainMenu (Barrette Standard) sur la fiche (nimporte o). Double cliquer sur cet objet pour ouvrir la fentre de conception du menu. Taper le titre Fichiers puis le sous titre Imprimer. Rgler lvenement Onclick de Imprimer sur BitBtn5Click. Ajouter (toujours dans le menu Fichiers) le sous titre Quitter (Rgler le sur BitBtn6Click ). Ajouter alors aprs le menu Fichiers un menu Editer contenant les rubriques Ajouter (li la procdure AjouterClick) et Supprimer (li la procdure SupprimerClick). Ajouter enfin (aprs le menu Editer) un menu TRI dans lequel on propose les deux tris : suivant NOM et suivant PRENOM. Attention, lajout dun menu dcale les objets vers le bas. Si ncessaires nous les remontons. Il ne reste plus qu tester notre gestionnaire de fiches grandeur nature. m- Les fichiers ncessaires lexcution du programme A laide de lExplorateur de windows aller dans le rpertoire \DELPHI\FIC2ND. Dans ce rpertoire on y trouve les fichiers suivants : - *.PAS fichiers pascal dans lesquels sont toutes les procdures - *.DCU Units compiles utiles au projet - *.DPR fichier de projet. Cest le fichier principal, il contient toutes les informations relatives au projet. - *.RES fichier de ressources (contient le menu droulant par exemple) - *.EXE fichier excutable. Ce fichiers est indpendant et peut tre excuter sans laide des autres fichiers. Seuls les fichiers propre la base de donne lui sont ncessaires. - *.DBF fichier contenant le nom des champs et index de notre base de donne. - *.MDX fichier contenant toute les fiches cres. Seuls les trois derniers fichiers sont ncessaires lexcution du programme. Le fichier *.EXE permet de lancer notre application. Les fichiers *.DBF et *.MDX contiennent la base au format dBase et peuvent tre utiliss par toutes les applications connaissant ce format. Vous pouvez ouvrir le fichier *.DBF avec excel par exemple. Essayons de lancer notre application en cliquant sur le fichier *.EXE. Cela fonctionne parfaitement. Pour installer lapplication sur une autre machine il suffit de copier les trois fichiers *.EXE, *.DBF et *.MDX. Mme si la machine ne contient pas Delphi elle pourra excuter lapplication. n- Taille du fichier excutable Regarder dans lexplorateur la taille du fichier *.EXE. Ce fichier a une taille importante car il contient toutes les informations ncessaires au dbogage de lapplication. Il contient en fait les adresses de chacune des procdures pour pouvoir indiquer au dveloppeur do vient lerreur en cas de plantage. Une fois la mise au point du programme faite il nest plus ncessaire de garder ces informations qui surchargent inutilement le code.

Option info Terminale

page 10/100

DELPHi : une Base de Donnes

Retourner sous Delphi. Dans le menu Projet-Options cliquer sur longlet Lieur et dsactiver Inclure info de dbogage TD32. Aprs avoir referm la fentre de dialogue des options demander Tout construire dans le menu Projet. Revenir alors dans le rpertoire DELPHI\FIC2ND avec lexplorateur windows et regarder la nouvelle taille du fichier excutable : elle a t divise par trois !

Copie dcran de lapplication BASE SECONDE

DBEdit1

DBEdit2

DBEdit3

DBEdit4

DBGrid1

DBEdit5

Edit1

MaskEdit1