- 1

-












- 2 -


Chapitre 1 : Introduction à Delphi7...........................................................................................................4
Leçon1 : Delphi7, généralités......................................................................................................................5
Leçon2 : Les premiers pas...........................................................................................................................9
TP1 : Jeu de couleurs .....................................................................................................................................9
TP2 : Calcul de la moyenne.........................................................................................................................11
TP3 : Calcul du factoriel ..............................................................................................................................12
TP4 : Chargement d’une image ...................................................................................................................13
Leçon3 : Avancer plus ...............................................................................................................................14
TP1 : Interface des couleurs.........................................................................................................................14
TP2 : Lancement d’un exécutable à partir d’une fiche Delphi ...................................................................16
TP3 : Les commentaires ..............................................................................................................................16
TP4 : La manipulation de l’interface par clavier .........................................................................................17
Leçon4 : Messages, Multimedia et autres ...............................................................................................18
TP1 : Les messages de dialogue ..................................................................................................................18
TP2 : Les fichiers multipedia.......................................................................................................................19
TP3 : Les animations ...................................................................................................................................19
TP4 : Les boucles de temps .........................................................................................................................20
TP5 : Dessiner une fonction.........................................................................................................................20
TP6 : Barre de progression ..........................................................................................................................20
Leçon5 : Menu principal et barres d’outils ............................................................................................21
TP1 : Le menu principal ..............................................................................................................................21
TP2 : Les barres d’outils..............................................................................................................................22
Leçon6 : La programation des bases de données....................................................................................23
TP1 : Création d’un alias de base de données..............................................................................................23
TP2 : Création d’une table ...........................................................................................................................24
TP3 : Connexion et affichage d’une base de données dans une fiche Delphi .............................................25
TP4 : Les champs calculés et les boucles dans une BD (exemple : facture) ...............................................25
TP5 : Les champs calculés et les boucles dans une BD (exemple : Bulletin) .............................................28
TP6 : Le DBNavigateur ...............................................................................................................................29
Leçon7 : Les index secondaires et leurs utilisation.................................................................................30
TP1 : La création des index secondaires......................................................................................................30
TP2 : Le trie d’une table .............................................................................................................................31
TP3 : le filtrage d’une table ........................................................................................................................32
TP4 : la recherche simple dans une table ....................................................................................................33
TP5 : les relations maitre-detail ..................................................................................................................33
Leçon8 : Introduction aux requetes SQL ...............................................................................................35
Présentation generale ..................................................................................................................................35
TP1 : Les requetes SQL les plus utilisées ...................................................................................................36
TP2 : La consultation par des requetes parametrées....................................................................................38
TP3 : Les graphes.........................................................................................................................................39
Leçon9 : Les états d’impression ...............................................................................................................40
Introduction .................................................................................................................................................40
TP1 : imprimer les enregistrements d’une table (liste des produits) ...........................................................41
Leçon10 : Delphi est un RAD....................................................................................................................43
TP1 : une fiche simple d’impression d’une table ........................................................................................43
TP2 : Une fiche simple de connexion et d’affichage et d’impression d’une table .....................................44
TP3 : Une fiche maitre-detail entre deux tables ..........................................................................................45
TP4 : TP Exemplaire ..................................................................................................................................45
SOMMAIRE
- 3 -
Chapitre 2 : Logiciel gestion commerciale...............................................................................................46
Préparation du Logiciel ...............................................................................................................................47
Fiche Menu .................................................................................................................................................48
Fiche Produit ................................................................................................................................................50
Fiche Client .................................................................................................................................................52
Fiche Fournisseur ........................................................................................................................................54
Fiche Facture Achat ....................................................................................................................................56
Fiche Facture Vente ....................................................................................................................................61
Fiche Consultation Achats ..........................................................................................................................67
Fiche Consultation Ventes ..........................................................................................................................69
Fiche Statistiques Reglement.......................................................................................................................71
Fiche Mot de Passe .....................................................................................................................................72
Fiche Protection ...........................................................................................................................................73
Fiche Archivage ..........................................................................................................................................74
Fiche Inventaire ..........................................................................................................................................75
Fiche Cloture ...............................................................................................................................................77
Fiche À propos ............................................................................................................................................79

Chapitre 3 : Logiciel gestion scolarité......................................................................................................80
Préparation du Logiciel ...............................................................................................................................81
Fiche Menu .................................................................................................................................................82
Fiche Etudiant ..............................................................................................................................................83
Fiche Matiére ..............................................................................................................................................87
Fiche Professeur ..........................................................................................................................................90
Fiche Spécialité ...........................................................................................................................................92
Fiche Bulletin ..............................................................................................................................................94
Fiche Consultation Etudiant ........................................................................................................................99
Fiche Statistiques des Étudiants ................................................................................................................100
Fiche Impression........................................................................................................................................103
Fiche Mot de Passe ...................................................................................................................................105
Fiche Protection .........................................................................................................................................106
Fiche Archivage ........................................................................................................................................107
Fiche Cloture .............................................................................................................................................108
Fiche À propos ..........................................................................................................................................109

Chapitre 4 : Trucs & astuces .................................................................................................................111
Créer une installation .................................................................................................................................112
Conception des fichiers help pour les logiciels..........................................................................................114
Le skin Data ..............................................................................................................................................115

Annexe ......................................................................................................................................................117
Les composants de base (Propriétés et venements) ...................................................................................118
- 4 -















Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 5 -

1- INTRODUCTION
Delphi est un environnement de programmation visuel orienté objet permettant de développer des
applications sous Windows. Il représente la suite logique de la famille turbo Pascal avec ses nombreuses versions
(précisément le pascal objet). Delphi est un outil moderne, puissant, faisant appel à une conception visuelle des
applications, à la programmation orientée objet, à une bibliothèque de composants très riche (la VCL: Visual
Components Library), aux fichiers DLL (Dynamic Link Library) et API (Application Programming Interface) de
Windows; Delphi se classe comme l’un des meilleurs environnement de développement rapide des applications
(RAD) dans le monde informatique.

Delphi, c’est aussi un produit qui évolue avec le temps. Chaque nouvelle version possède son lot de
nouveautés. Voici les versions successives :
- Delphi 1 est le premier environnement pascal RAD sous Windows 3.11 (visuel).
- Delphi 2 marque le passage au mode 32 bits avec Windows 95.
- Delphi 3 supporte déjà les Active X, ainsi que l’aide à la saisie dynamique.
- Delphi 4 propose les tableaux dynamiques.
- Delphi 5 ouvre l’accès natif aux bases de données ADO et interbase.
- Delphi 6 introduit dbExpress et les composants portables de la CLX.
Et en fin, Delphi 7, Delphi 8 et récemment Delphi 2006 et 2007 qui sont sans doute les versions les plus enrichies de
toute l’histoire du produit.

2- ENVIRONNEMENT DELPHI
Démarrage de Delphi
Vous pouvez démarrer Delphi de plusieurs façons :
• Double-cliquer sur l’icône Delphi (si vous avez créé un raccourci).
• Choisir Programmes =Borland Delphi 7 = Delphi 7 dans le menu Démarrer de Windows.
• Choisir Exécuter dans le menu Démarrer de Windows, puis entrer Delphi32.
• Double-cliquer sur Delphi32.exe dans le répertoire Delphi\Bin.

L’EDI
Lorsque vous démarrez Delphi pour la première fois, vous voyez apparaître quelques-uns des principaux
outils proposés dans l’EDI (environnement de développement intégré). Dans Delphi, l’EDI comprend des barres
d’outils, des menus, la palette de composants, l’inspecteur d’objets, l’arborescence d’objets, l’éditeur de code,
l’explorateur de code, le gestionnaire de projet et bien d’autres outils.


LEÇON 1 : DELPHI7, GÉNÉRALITÉS
La vue arborescente de l’objet
affiche une représentation
hiérarchique des relations parent
enfant des composants.
La barre des menus et les barres d’outils
permettent d’accéder à tout un ensemble de
fonctions qui vous aident à écrire vos applications.
La palette de composants contient
des composants (visuels ou non)
prêts à être utilisés dans vos
projets, regroupées par familles
(pages à onglets). C’est la VCL
de Delphi.
L’éditeur de code, ou l’unité,
permet d’afficher et de modifier le
code source de votre application.
La saisie du code source est
assistée (semi-automatique).
Le concepteur de fiche contient
une fiche vierge pour démarrer
la conception de l’interface
utilisateur de votre application.
C’est le support des composants
utilisés. Une application peut
comporter plusieurs fiches
(fenêtres). La bascule fiche/unité
se fait par la touche F12
L’explorateur de code montre les
classes, variables et routines de
votre unité et vous permet de
naviguer rapidement.
L’inspecteur d’objets permet de
changer des propriétés et d’utiliser le
gestionnaire d’événements de l’objet
sélectionné. On affiche l’inspecteur
d’objet par F11 ou ENTREE
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 6 -
Les barres d’outils de Delphi permettent un accès rapide aux opérations et aux commandes les plus
utilisées. La plupart des opérations accessibles dans les barres d’outils se retrouvent dans les menus déroulants.


















De nombreuses opérations possèdent des équivalents clavier ainsi que des boutons dans la barre d’outils.
Lorsqu’un raccourci clavier est disponible, il est toujours inscrit à côté de la commande dans le menu déroulant.


L’inspecteur d’objet
Chaque composant possède des attributs spécifiques (propriétés, événements et méthodes) vous
permettant de contrôler votre application. Utilisez l’inspecteur d’objets pour définir des propriétés de conception,
créer des gestionnaires d’événements, filtrer la visibilité des propriétés et des événements, ce qui établira le lien
entre l’apparence visuelle de votre application et le code qui la fait s’exécuter.

Vous pouvez changer la manière dont un composant s’affiche (propriétés) et se comporte (événements)
dans votre application en utilisant l’inspecteur d’objets. Lorsqu’un composant est sélectionné sur la fiche, ses
propriétés et ses événements sont affichés dans l’inspecteur d’objets.




















Voir la liste des unités
(Ctrl +F12)

Exécuter (F9)

Tout enregistrer (Le projet et les
fichiers associés)

voir la liste des fiches
(Shift + F12)

Ajouter un fichier au
projet

Enregistrer (enregistrer uniquement la
fiche actuelle)

Basculer Unité/Fiche
(F12)

Retirer un fichier du
projet

Ouvrir un fichier (fiche ou projet)

Nouvelle Fiche

Ouvrir un projet

Nouveau (fenêtre de choix:
Application, console, fiche, …etc.)
Utiliser cette liste déroulante pour
sélectionner un objet. Si un objet est
sélectionné, les membres de sa classe
(propriétés et événements )seront affichés.
Sélectionnez une propriété et changez sa
valeur dans la colonne de droite.

L’arborescence d’objets, l’inspecteur
d’objets et le concepteur de fiche
fonctionnent ensembles. Quant vous
cliquez sur un objet de votre fiche, la
focalisation change à la fois dans
l’arborescence et dans l’inspecteur
d’objets et réciproquement.
Appuyez sur ALT-SHIFT-F11 pour
passer la focalisation à l’arborescence
d’objets.
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 7 -

3- NOTIONS DE PROJET DELPHI ET DE SES FICHIERS
Un projet est l'état non compilé d'une application (Application = Logiciel). Chaque projet compilé devient une
application. Un projet se compose d'un certain nombre de fichiers. Une sage habitude est de consacrer
complètement un répertoire (dossier) à chaque application qu'on souhaite programmer (chaque projet). Ce répertoire
contiendra tous les fichiers constituant le projet (le nombre de fichiers augmentera au fur et à mesure que le projet
s'étoffera).

Un projet non compilé (c'est-à-dire avant sa transformation en logiciel), contient ces fenêtres (à l'état non
compilées également) : les fiches, c’est la partie visuelle d’une application. Cette fiche, lors de la compilation du
projet en application, sera transformée en fenêtre.

A chaque fiche est adjointe une (et une seule) unité, c'est-à-dire un texte écrit en langage Pascal, qui
contiendra tout ce qui se rapporte à cette fiche : ce qu'elle contient (boutons, menus, …), ce qui doit se passer dans
certaines situations (lorsqu'on clique sur un bouton par exemple), et encore bien d'autres choses.

Chaque fiche est stockée dans un fichier comportant l'extension 'DFM' (exemple : bulletin.dfm ).
Chaque unité est stockée dans un fichier comportant l'extension 'PAS' (exemple : bulletin.pas ).

La fiche et son unité associée portent le même nom (mais pas la même extension) (Delphi ne demande ce
nom d’enregistrement qu'une seule fois et l'utilise automatiquement pour l'unité et la fiche, ainsi vous n'avez aucun
risque de vous tromper). Par exemple, si une fiche est stockée dans le fichier nommé « bulletin.dfm », son unité
associée sera stockée dans le fichier nommé « bulletin.pas ». voire la figure suivante :
















Figure : la nomination des fches & unités


Il est également possible d'utiliser des unités qui n'ont pas de fiche associée. Ceci est utile par exemple pour
rassembler des morceaux de programme qui n'ont aucun rapport avec une quelconque fiche. Le fichier qui contient
cette unité porte l'extension 'PAS', comme s'il avait une fiche associée, mais il n'en a pas : il n'y a pas de fichier
nommé identiquement, mais avec l'extension 'DFM'.

Un projet sous Delphi est constitué d'un fichier-projet (portant l'extension 'DPR'), d'unités et de fiches.
Chaque fiche a son unité correspondante, mais certaines unités n'ont pas, comme on l'a vu ci-dessus, de fiche
associée (il y a toujours au moins autant d'unités que de fiches dans un projet, et souvent plus). Pensez en outre à
donner des noms descriptifs, ou au moins significatifs lors des enregistrements des unités ou des fiches (Ainsi, «
unit1.pas » est un bien mauvais choix !).

Lors de la compilation du projet (transformation en application), d'autres fichiers seront créés : des fichiers
DCU (fichiers portant l'extension 'DCU', essayez de vous habituer à ces abus de langage). Ces fichiers sont la forme
compilée des fichiers de même nom qui portent les extensions 'PAS' et 'DFM' : un 'PAS' (avec son 'DFM' associé s'il
y en a un) est transformé en 'DCU' lors de la compilation. Un fichier 'EXE' est enfin créé si la compilation atteint son
terme (si tous les fichiers 'DCU' ont pu être créés). Ce fichier est nommé avec le même nom de base que celui du
fichier projet (fichier DPR).

Le schéma ci-dessous représente la transformation d'un projet en application, avec les éléments que vous
devez désormais connaître. Ce projet comporte deux fiches (avec les unités associées) ainsi qu'une unité seule :



Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 8 -




















Figure : un projet Delphi, du source à l’execution.


Lors des enregistrements successifs d'un projet, d'autres fichiers avec des extensions ~DP, ~DF, ~PA, ~DC,
~DPR, ~DFM, ~PAS, ~DCU sont créés : ce sont des copies de sauvegarde (des versions plus anciennes) des
fichiers portant le même nom, sans le signe tilde (~)

Exemple : « optionsaffich.~PA » est une copie de sauvegarde de « optionsaffich.pas ».

Enfin, d'autres fichiers ayant le même nom que le fichier projet (celui qui porte l'extension DPR) mais avec
l'extension .RES, .OPT, .CFG, .DOF, .DSK, .DSM sont créés dans certaines circonstances. Vous n'avez pas à vous
souciez de ces fichiers.

Le tableau suivant donne une liste aussi complète que possible des fichiers pouvant être rencontrés dans le
répertoire d'un projet Delphi :

Extension du fichier Description et Commentaires
DPR (Delphi PRoject) Contient l'unité principale du projet
PAS (PAScal) Contient une unité écrite en Pascal. Peut avoir un .DFM correspondant
DFM
(Delphi ForM : fiche Delphi) Contient une fiche (une fenêtre). Le .PAS correspondant
contient toutes les informations relatives au fonctionnement de cette fiche, tandis que le
.DFM contient la structure de la fiche (ce qu'elle contient, sa taille, sa position, …). Sous
Delphi 5, les .DFM deviennent des fichiers texte qu'il est possible de visualiser et de
modifier. La même manipulation est plus délicate mais possible sous Delphi 2 à 4.
DCU
(Delphi Compiled Unit : Unité compilée Delphi)
Forme compilée et combinée d'un .PAS et d'un .DFM optionnel
~???
Tous les fichiers dont l'extension commence par ~ sont des fichiers de sauvegarde,
pouvant être effacés pour faire place propre.
EXE
Fichier exécutable de l'application. Ce fichier est le résultat final de la compilation et
fonctionne sous Windows exclusivement. Pour distribuer le logiciel, copier ce fichier est
souvent suffisant.
RES
(RESsource)
Fichier contenant les ressources de l'application, tel son icône. Ce fichier peut être édité
avec l'éditeur d'images de Delphi. Ces notions seront abordées plus loin dans ce guide.
DOF
DSK
CFG
Fichiers d'options : suivant les versions de Delphi, ces fichiers contiennent les options du
projet, les options d'affichage de Delphi pour ce projet, ...

Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 9 -
TP 1 : JEU DE COULEURS


Interface









Étapes :
Inserer le premier bouton dans la fiche comme suite :




LEÇON 2 : LES PREMIERS PAS
Clic sur le composant Button
1
Clic dans la fiche sur la place ou on veut inserer ce bouton
2
Ecrire dans la propriété caption le nom apparant de ce boutton (exemple : Bleu)
3
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 10 -
Remarque de base
Pour simplifier la présentation des étapes de création des interfaces des exemples suivants, on présente les
objets à insérer sur une fiche par un tableau contenant : les noms des composants, leurs propriétés à manipuler
(dans leurs inspecteurs d’objets) et enfin les valeurs à donner à ces propriétés.

Donc, l’étape précédente peut être présentée comme suite :

1-insérer les composants suivants de la palette Standard :
Composant Propriété Valeur
Button1
Button2
Button3
Caption
Caption
Caption
bleu
rouge
vert


2-double clique sur le bouton1 (Bleu) et écrire dans la procédure :
Form1.Color:=CLBlue;









Remarque
Si vous écrivez :
Form1.

Delphi, grâce à son assistant de saisie semi-automatique, vous propose la liste des membres (propriétés et
méthodes) de la classe saisie (Form1), et on peut soit choisir dans liste la propriété ou méthode voulue, ou taper
les premières lettres de l’élément voulu (exemple : co pour ecrire color) et lorsqu’il sera sélectionné dans la liste
on tape Entrée pour que Delphi l’écrit dans l’instruction.


















3- taper F12 pour revenir à la fiche et double clique sur le bouton2 (Rouge) et écrire dans la procédure :
Form1.color:=CLRed;

4- taper F12 pour revenir à la fiche et double clique sur le bouton3 (Vert) et écrire dans la procédure :
Form1.color:=CLGreen;

5- Lancer l’éxécution par la touche F9, ou par le bouton ; Et verifier le bon fonctionnement de la fiche.
Une Valeur adéquate pour la
propriété (cl : veut dire couleur)

Une de ses propriétés
ou méthodes
Le nom de l’objet
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 11 -
TP 2 : CALCUL DE LA MOYENNE

Interface











Étapes :

1-insérer les composants suivants de la palette Standard :

Composant Propriété Valeur
Edit1 text
Edit2 text
Edit3 text
Label1 Caption Devoir
Label2 Caption Composition
Label3 Caption Moyenne
Button1 Caption Calcul


2- double clique sur le bouton1 (calcul) et écrire dans la procédure :
edit3.text:= floattostr ((strtofloat (edit1.text) + strtofloat (edit2.text))/3);
3- Lancer l’éxécution par la touche F9, ou par le bouton ; Et verifier le bon fonctionnement de la fiche.

Remarque 1:
1- le casting=changement de type =conversion de type (strtofloat, floattostr, inttostr, strtoint ….)
2- une autre solution possible (à écrire dans la procédure du bouton1 “calcul”)
(Supprimer le begin et end de la procédure et coller tous le code source suivant)

Var dev,comp,moy :real ;
Begin
dev:= strtofloat(edit1.text);
comp:= strtofloat(edit2.text);
moy:= (dev+comp)/3;
edit3.text:= floattostr(moy);
End ;

Remarque 2 :
Le Casting = c’est aussi la conversion de type dans une affectation ou un test.

Exemple:
Edit3.text :=floattostr((strtofloat(edit1.text) + strtofloat(edit2.text))/3) ;
If strtofloat(edit3.text)<10 then
Showmessage(‘étudiant ajourné’)
Else
Showmessage(‘étudiant admis’) ;

Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 12 -
TP3 : CALCUL DU FACTORIEL


Interface:













Étapes
1-insérer les composants suivants de la palette standard:

Composant Propriété Valeur
Edit1 Text
Edit2 Text
Label1 Caption Nombre
Label2 Caption Factoriel
Button1 Caption Calcul

2-double clique sur le bouton1 (calcul) et écrire dans la procédure :
(Supprimer le begin et end de la procédure et coller tous le code source suivant)

var a,b,fact :integer;
Begin
a:= strtoint(edit1.text);
if a>=0 then
begin
fact:=1;
for b:=1 to a do
fact:=fact*b;
edit2.text:= inttostr (fact);
End
Else
Showmessage ('pas de factoriel pour un nombre négatif');
end;

3- Lancer l’éxécution par la touche F9, ou par le bouton ; Et verifier le bon fonctionnement de la fiche.
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 13 -
TP4 : CHARGEMENT D’UNE IMAGE

Interface:


















Étapes
1- insérer un composant image de la palette « supplément ».
2- choisir dans son inspecteur d’objet la propriété :




3- dans la fenetre qui s’affiche, on clic sur le bouton :



Pour chercher l’image voulue dans le disque dur.
3- dans la nouvelle fenetre, et après avoir selectioner l’image voulue on clic sur le bouton :




Ensuite sur le bouton :



4- pour que l’image occupe toute la surface de son cadre on modifie sa propriété :




5- pour que l’image s’agrandie si elle a une taille plus petite que la surface de son cadre on modifie sa propriété :




Aussi modifier sa propriété :



Pour que cette image aucupe tous l’espace de la fenetre actuelle.
Clic ici
Clic ici pour choisir la valeur True
Clic ici pour choisir la valeur True
Clic ici pour choisir la valeur alClient
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 14 -
TP1 : INTERFACE DE COULEURS



Interface :











Étapes :
Partie1 :
1- insérer les composants suivants de la palette standard:

Composant Propriété Valeur
Radiobutton1 Caption Bleu
Radiobutton2 Caption Rouge
Radiobutton3 Caption Vert

2- double clique sur le Radiobutton1 (Bleu) et écrire dans la procédure :
Form1.color:=clblue;

3- taper F12 et double clique sur le Radiobutton2 (ROUGE) et écrire dans la procédure :
Form1.color:=clred;

4- taper F12 et double clique sur le Radiobutton3 (Vert) et écrire dans la procédure :
Form1.color:=clgreen;

5- Lancer l’éxécution par la touche F9, ou par le bouton ; Et verifier le bon fonctionnement de la fiche.

Partie 2 :
1- insérer un composant Label1 (palette standard) et ecrire dans sa propriété caption : couleur.
2- insérer un composant Combobox1 (palette standard) et ecrire sa propriété text : (vide).
3- clique sur le composant Combobox1 et dans son inspecteur d’objet on choisit la propriété :


Et dans la fenêtre qui s’affiche on écrit les éléments de la liste ligne par ligne (bleu, rouge, vert) comme suite :












Clique ici pour écrire les élements de la liste
LEÇON 3 : AVANCER PLUS
A la fin, clic sur ce bouton pour fermer la fenetre
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 15 -

4- double clique sur le Combobox1 et écrire dans la procédure (attention au lettres majuscules):
If combobox1.text=’Bleu’ then
form1.color:=clblue;
if combobox1.text=’Rouge’ then
form1.color:=clred;
if combobox1.text=’Vert’ then
form1.color:=clgreen;
5- Lancer l’éxécution par la touche F9, ou par le bouton ; Et verifier le bon fonctionnement de la fiche.

Partie 3 :
1- insérer un composant button1 (palette standard) et écrire dans sa propriété caption : couleur.

2- insérer un composant popupmenu1 (palette standard), c’est un menu contextuel qui s’affiche lors du clique
par le bouton droit de la sourie sur un composant lié à ce menu.
3- double clique sur le popupmenu1, une fenêtre d’édition du menu contextuel s’affiche :
























De cette façon, on écrit les eléments suivant :



A la fin fermer la fenêtre de l’editeur de menu.
4- double clique sur le Popupmenu1 et double clique sur l’élément « Bleu » et écrire dans la procédure :
Form1.color:=clblue ;
Et taper F12 pour revenir à la fiche.

5- double clique sur le popupmenu1et double clique sur l’élément « Rouge » et écrire dans la procédure :
Form1.color:=clred ;
Et taper F12 pour revenir à la fiche.
6- double clique sur le popupmenu1et double clique sur l’élément « Vert » et écrire dans la procédure :
Form1.color:=clgreen ;
Et taper F12 pour revenir à la fiche.

7-dans la fiche clique sur le bouton1 (couleur) et dans son inspecteur d’objet choisir la propriété :




Cette propriété assure que si on clique par le bouton droit de la sourie sur le Bouton1 le popupmenu1 s’affiche.
8- Lancer l’éxécution par la touche F9, ou par le bouton ; Et verifier le bon fonctionnement de la fiche.
Clic sur la case d’un élément
du menu contextuel
Écrire le titre de cet
élément du menu
1
2
Clic sur la case suivante pour
ecrire les éléments suivants
3
Clic ici pour choisir le menu : PopupMenu1
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 16 -
TP2 : LANCEMENT D’UN LOGICIEL (EXÉCUTABLE) À PARTIR D’UNE FICHE DELPHI
TP3 : LES COMMENTAIRES
Partie 4 :
1-insérer un composant Colordialog1 (palette Dialogues).
2-insérer un composant button2 (palette standard) et sa propriété caption = choix de couleur.
3-Double clique sur le composant bouton2 et écrire :

Colordialog1.execute;
Form1.color:=colordialog1.color;

4- Lancer l’éxécution par la touche F9, ou par le bouton ; Et verifier le bon fonctionnement de la fiche.

Remarque :
Delphi propose des boites de dialogues divers pour contrôler et enrichir d’interface des applications par des API et
des DLL Windows ; ces boites figurent dans la palette des composants dans l’onglet dialogues; par exemple :
Fontdialog : choix du font des composants de l’interface (la police du traitement de texte).
Colordialog : choix de la couleur des composants de l’interface.
Opendialog : donne la boite de dialogue Windows d’ouverture des fichiers
Savedialog : donne la boite de dialogue Windows d’enregistrement des fichiers.
Finddialog : recherche une chaîne de caractères dans un texte.
Replacedialog : recherche et remplacement d’une chaîne de caractère par une autre dans un texte.
Printdialog : permet la configuration de l’imprimante en cas d’impression des états.
Nb : pour afficher une boite de dialogue quelconque on écrit : nomboite.execute ;

Exemple : fontdialog1.execute ;

Chaque boite de dialogue a une propriété spéciale qui donne la possibilité de manipuler le résultat
d’affichage de cette boite ; exemple : la couleur choisie dans la boite de dialogue Colordialog sera mise dans la
propriété color de ce composant et on peut l’utiliser sur une fiche comme suite :

Form1.Color :=Colordialog1.Color ;




Pour lancer une application à partir de Delphi (exemple : une calculatrice) on procède comme suite:
1- on insère un button1 dans une fiche delphi.
2- double clique sur ce bouton et écrire dans la procédure :

WinExec(‘calc.exe’,sw_show) ;

Remarque1:
Sw : show window (une fonction d’affichage des fenêtres).
Show : afficher.
Winexec : windows éxécution

Remarque 2 :
Si Delphi ne reconnais pas le logiciel (Delphi ne reconnais que les logiciels installés par défaut avec
l’installation de Windows) on doit écrire le chemin complet de ce logiciel.

Exemple : lancement du Microsoft word :

WinExec(‘C:\Program Files\Microsoft Office\Office\Winword.exe’,sw_show) ;




Les commentaires se placent entre accolades (pour un commentaire en plusieurs lignes), ou
parenthèses et étoiles (pour commenter en plusieurs lignes) ou derrière 2 slaches (pour commenter en une
seule ligne).

Exemple :
{Ceci est un commentaire}
(*Ceci est un autre commentaire*)
// Tout ce qui suit et jusqu’à la fin de ligne est aussi un commentaire


Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 17 -
TP4 : LA MANIPULATION DE L’INTERFACE PAR CLAVIER

Interface







Étapes :
1-insérer les composants suivants de la palette Standard comme suite :
Composant Propriété Valeur
Edit1 text
Edit2 text
Edit3 text
Label1 Caption Devoir
Label2 Caption Composition
Label3 Caption Moyenne

2- clique sur le composant « Edit1 » et choisir son événement

Et écrire dans sa procédure :
If key = vk_return then
Begin
If (strtofloat(edit1.text)<0)or(strtofloat(edit1.text)>20) then
Showmessage('note de devoir incorrecte')
else
Edit2.setfocus;
End;
3- tapez F12 et clique sur le composant « Edit2 » et choisir son événement
Et écrire dans sa procédure :
If key = vk_return then
Begin
If (strtofloat(edit2.text)<0)or(strtofloat(edit2.text)>40) then
Showmessage('note de composition incorrecte')
Else
Begin //Pour calculer la moyenne en ne gardant que deux chiffres après la virgule on écrit :
Edit3.text:= floattostr (round((strtofloat (edit1.text) + strtofloat (edit2.text))/3*100)/100 );
Edit3.setfocus;
End;
End;
4- tapez F12 et clique sur le composant « Edit3 » et choisir son événement
If key = vk_f10 then
Begin
Edit1.clear;
Edit2.clear;
Edit3.clear;
Edit1.setfocus;
End;
5- Lancer l’éxécution par la touche F9, ou par le bouton ; Et verifier le bon fonctionnement de la fiche.
Remarque1 :
Key = touche (c’est l’une des touches du clavier).
vk = value key (valeur de la touche tapée).
Return = retour à la ligne (donc : vk_return = la touche entrée)
Setfocus = donner la main pour travailler par clavier (donc : mettre le curseur du clavier sur un composant)
Edit1.setfocus = mettre le curseur du clavier sur le composant edit1.
Remarque2 :
L’événement préféré pour programmer les touches (frappes) du clavier est : onkeydown
Double clique ici
Double clique ici
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 18 -
TP1 : LES MESSAGES DE DIALOGUE



Delphi propose 2 types de messages de dialogue :
1-les messages simples :
C’est un message d’information
Exemple






- L’instruction qui appelle ce message est :
Showmessage(‘bonjour tous le monde’) ;
- on peut insérer un bouton de la palette standard et double clique sur ce dernier et écrire l’instruction au-dessus.

2-les messages avec options :
Exemple :







Messagedlg ( ‘ voulez vous quitter le logiciel’ , Mtconfirmation, [Mbyes, Mbno] , 0)


Message De Le texte du message MT=Message MB=Message Numéro du fichier
Dialogue (C’est un choix libre) Type Button D’aide
Les types de messages possibles :
Mtconfirmation = Confirmation
Mtinformation = Information
Mterror = Erreur
Mtwarning = Avertissement
Les boutons des messages possibles :
mbYes = Un bouton avec le texte "Oui".
mbNo = Un bouton avec le texte "Non".
mbOK = Un bouton avec le texte "OK".
mbCancel = Un bouton avec le texte "Annuler".
mbAbort = Un bouton avec le texte "Abandonner".
mbRetry = Un bouton avec le texte "Réessayer".
mbIgnore = Un bouton avec le texte "Ignorer".
mbAll = Un bouton avec le texte "Tous".
mbNoToAll = Un bouton avec le texte "Non à tout".
mbYesToAll = Un bouton avec le texte "Oui à tout".
mbHelp = Un bouton avec le texte "Aide".
Le Numéro du fichier d’aide
0 = pas de fichier d’aide

Exemple :
If Messagedlg (‘voulez vous quitter le logiciel ‘, mtconfirmation, [mbyes, mbno, mbcancel] ,0) =mryes then
Application.terminate
Else
Showmessage(‘vous pouvez continuer ’) ;
LEÇON 4 : MESSAGES, MULTIMEDIA …
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 19 -
TP 2: LES FICHIERS MULTIMÉDIA
TP3 : LES ANIMATIONS


Interface :











Étapes :
1- insérer le composant : mediaplayer1 (palette système).
2- modifier sa propriété :


3-dans sa propriété :



Et choisir le fichier vidéo : C:\program files\borland\delphi5\demos\coolstuf\speedis.avi.
Et clique sur


4-lancer l’éxécution et clique sur le bouton

Remarque
On peut lancer automatiquement le mediaplayer par un double clic sur un bouton et écrire dans sa procédure :
Mediaplayer1.play ;
Dans ce cas on doit cacher le mediaplayer par la modification de sa propriété :



Remarque :
Les fichiers son de Windows sont dans le chemin : C:\windows\media



Interface :








Étapes :
1- insérer un composant Animate1 (palette win32)
2- choisir le type d’animation à utiliser dans sa propriété :



3- pour voir l’animation on modifie la propriété


4- répéter les étapes 2 et 3 pour voir les autres animations.
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 20 -
TP 6 : BARRE DE PROGRESSION
TP 4 : LES BOUCLES DE TEMPS
TP 5 : DESSINER UNE FONCTION


Interface :







Étapes :
1- insérer un composant Timer1 (palette système)
2- insérer un composant Label1 (palette standard)
3- double clique sur le composant Timer1 et écrire dans la procédure :
Label1.caption :=timetostr(time)
4- Lancer l’éxécution par la touche F9, ou par le bouton ; Et verifier le bon fonctionnement de la fiche.


Interface :








Étapes :
1- insérer un composant Timer1 (palette système)
2- double clique sur ce composant et écrire dans la procédure :
Form1.canvas.lineto (i*15, trunc(sin(i)*15)+100);
I:=i+1 ;
3- en haut de l’unité on trouve la partie des variables globales comme suite :
Var form1 :tform ;
I :integer ; //insérer la déclaration d’une variable globale
Implementation
4- lancer l’éxécution
Remarques:
1- le dessin sur écran se fait en pixel (Picture Element) donc pour avoir un dessin visible il faut amplifier les
coordonnées (x,y),en plus il faut décaler le dessin vers le milieu de la fiche par l’ajout de 100 pixels aux coordonnées
(y) comme suite :
Form1.canvas.lineto (i*15, trunc(sin(i)*15)+100);
2- le composant Timer a une propriété intéressante : Interval
(On peut donner dans cette propriété la fréquence de répétition du Timer)
3- le canvas est une feuille transparente sur chaque fiche Delphi qui aide à dessiner des graphes.


Interface :




Étapes :
1- insérer un composant « Timer1» de la palette « Système » et modifier sa propriété : interval = 50.
2- insérer un composant « ProgressBar1 » de la palette « Win32 » et modifier ses propriétés :


3- Double clique sur le timer1 et écrire dans sa procédure :
progressbar1.position:=progressbar1.position+1;
4- Lancer l’éxécution pour voir la progression dans cette barre.
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 21 -
TP 1 : LE MENU PRINCIPAL


Interface :








Étapes :
1- insérer de la palette standard le composant Mainmenu1

2- double clique sur le composant Mainmenu1 et écrire les éléments du menu dans leurs propriétés « caption »




















3- pour faire une ligne de séparation on écrit dans la propriété "caption" le caractère "-"
4- pour chaque élément du menu on choisit une lettre et on écrit avant elle le symbole "&" pour assurer un raccourci
clavier :
Exemple : &Edition = Edition
Donc : on tape le raccourci clavier Alt+E pour voir le menu Edition.
5- pour choisir un raccourci Clavier quelconque on sélectionne un élément du menu et dans la propriété


on choisit le raccourci adéquat (exemple : Ctrl + N pour l’élément « Nouveau » du menu).
6- pour insère un sous menu dans un élément du menu :
On clique sur cet élément et on tape les touches clavier : CTRL + ¬ et on écrit les éléments du sous menu.
7- pour insère des icônes dans les éléments du menu ou insère le composant "imagelist1" (palette "Win 32")
Et double clique sur ce composant "imagelist1"
Et clique sur le bouton

Et choisir une image dans le chemin : « c:\program files\fichiers communs\borland shared\images\buttons »
Et clique sur
Ensuite sur
Et répéter Ajouter pour tous les autres images et enfin clique sur

Ensuit clique sur le composant "Mainmenu1" et choisir dans sa propriété :
Enfin : double clique sur " MainMenu1" et pour chaque élément du menu on choisit une image par sa propriété :
LEÇON 5 : MENU PRICIPAL, BARRES D’OUTILS …
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 22 -
TP 2 : LES BARRES D’OUTILS


Interface :








La barre d’outils contient les éléments les plus utilisés du menu principal.
Étapes :
1- insérer de la palette "Win 32" le composant "Toolbar1"
2- clique droit sur ce composant et choisir : "Nouveau bouton"


















Pour chaque fois qu’on veux inserer un nouveau bouton, et on clic sur "Nouveau séparateur" séparer les groupes
de boutons.

3- clique sur le composant "toolbar1" en évitant ses boutons et modifier sa propriété




Et cela pour que les boutons se gonflent lors du passage du pointeur de la sourie au dessus et se dégonflent
après.
4- Pour faire la liaison entre "imagelist1" et "toolbar1" ou clique sur « toolbar1 »
Et on choisit dans sa propriété




5- Pour modifier l’image de change bouton du Toolbar1 on clique sur ce bouton et on choisit son image par sa
propriété :

6- pour expliquer le rôle de chaque bouton du Toolbar1 on clique sur ce bouton on écrit l’éxplication adéquate dans
la propriété :


7- pour voir l’éxplication de ce bouton on choisit dans sa propriété :
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 23 -
1
2
3
4
5
TP 1 : CRÉATION D’UNE ALIAS DE BASE DE DONNÉES

Définitions :
BD : Une base de données relationnelle est un ensemble de tables liées et gérées par un SGBD (Systéme de
Gestion des Bases de Données).
Table : c’est une structuration de données sous forme de champs et d’enregistrements.

L’environnement de programmation Delphi donne la possibilité de se connecter à presque tous les SGBD
disponibles sur le marché.


Delphi propose un module base de données pour simplifier la création des alias de BD.
• Pour accéder au module BD (nommé aussi BDE : Borland Database Engine) on choisit dans le menu
Delphi :
Outils = module base de données.

un alias est un chemin logique qui localise et donne la possibilité d’accès à la BD. Un alias représente une base de
données ainsi que les informations de configuration de cette dernière.

• Pour créer un nouveau alias on procède comme suite :
· Dans le menu du BDE on choisit : outils = gestionnaires d’alias.





Ensuite dans la fenetre de gestionnaire des alias on procede comme suite :





















Enfin, et dans la fenetre qui s’affiche :


Clique sur Oui pour enregistrer cet
alias avec les alias publics.







LEÇON 6 : LA PROGRAMMATION DES BASES DE DONNEES
Choisir le type
du nouveau
Alias ( Public)
Clic sur le bouton
Nouveau
Ecrire le nom du
nouveau Alias
Clic sur le
bouton OK
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 24 -
2
4
1
3
TP 2 : CRÉATION D’UNE TABLE

1- Dans le menu BDE on choisit : fichier = nouveau = table.
Ensuite On choisit le SGBD par défaut « paradox 7 » et clique sur ok.









On écrit la structure de la table suivante :






















Pour enregistrer, on clique sur le bouton
Ensuite, et dans la fenêtre suivante on enregistre la table « produit » comme suite :

Double clic ici, ou
tapez n’importe
quelle touche
clavier pour créer
un index primaire
Choisir l’Alias
Écrire le nom
de la table
(produit)
Clic sur
enregistrer
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 25 -
TP 4 : LES CHAMPS CALCULÉES ET LES BOUCLES DANS UNE BD (TP FACTURE)
TP 3 : CONNEXION ET AFFICHAGE D’UNE BASE DE DONNÉES DANS UNE FICHE

· insérer de la palette BDE le composant « Table1 » et manipuler ses propriétés :

Choisir notre alias

Choisir la table

Activer la connexion à la table



· Pour afficher notre table on doit insérer de la palette Accesbd le composant « datasource1» et choisir
dans sa propriété :


· Insérer de la palette Contrôlebd le composant « Dbgrid1 » et choisir dans sa propriété :




Interface :











Étapes :
1- Dans le module base de données (BDE) :
a- On commence par la création d’un nouveau alias nommé "tp_facture" (Voir les étapes du TP1) :
b- Dans cet alias on créera la table suivante :

Champ type taille index
Code I *
Designation A 20
Quantite N
prix $

c- On enregistre cette table dans notre alias "tp_facture" sous le nom : « produit ».

2- Dans une fiche Delphi on insère les composants suivants :
Palette Composant Propriété Valeur
Databasename Tp_facture
Tablename Produit
BDE Table1
Active True
AccesBD Datasource1 Dataset Table1
ControleBD Dbgrid1 Datasource Datasource1
Label1 Caption Montant
Edit1 Text
Standard
Button1 Caption Calcul

3- Pour introduire le champ calculé « Total » dans la table produit on procède comme suite :
· On double clique sur le composant table1, et dans la petite fenetre blache qui s’affiche :

Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 26 -
1
2

































































Clic droit
sur la petite
fenêtre
Clic sur
Ajouter des champs
3
Clic sur Ok
5
4
Clic droit
sur la petite
fenêtre
Clic sur :
Nouevau
champ
6
7
8
Écrire le nom du nouveau
champ calculé : Total
Choisir le type du champ
calculé : Currency
Clic sur : OK
9
Femer
la petite
Fenetre
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 27 -
1
2

4- Dans l’inspecteur d’objet du table1 on lance la procédure de l’événement : Oncalcfield
























Et on écrit dans la procédure :

table1.fieldbyname(‘total’).ascurrency := table1.fieldbyname(‘quantite’).asfloat *
table1.fieldbyname(‘prix’).ascurrency ;

5- Tapez F12 et pour calculer le montant global de ces produits on double clique sur le Bouton1 et on écrit
dans sa procédure : (Supprimer le begin et end de la procédure et coller tous le code source suivant)

var somme : real;
begin
somme := 0;
table1.first; // se pointer vers le premier enregistrement de la table
while not(table1.eof) do // tanque on a pas arriver à la fin de la table
begin
somme := somme + table1.fieldbyname('total’).ascurrency; // cumul des totaux
table1.next; // passer à l’enregistrement suivant.
end;
edit1.text := floattostr(somme); // afficher le cumul des totaux dans le comosant edit1
end ;

6- Lancez l’exécution.
Remarque :
La syntaxe d’écriture d’un champ d’une table est comme suite :

Source-du-champ.fieldbyname(‘nom-du-champ’).astype-du-champ

Exemples :
table1.fieldbyname('total’).ascurrency
table1.fieldbyname('nom’).asstring
table2.fieldbyname('date_naissance’).asdate
table4.fieldbyname('quantite’).asfloat


Clic sur événement
Double Clic Ici
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 28 -
TP 5 : LES CHAMPS CALCULÉES ET LES BOUCLES DANS UNE BD (TP BULLETIN)

Interface :













Étapes :
1- Dans le module base de données (BDE) :
· On commence par la création d’un nouveau alias nommé "scolarité » (voire Tp1)
· Dans cet alias on créera la table "bulletin" suivante :
Champ type taille index
Numéro i *
Matière A 20
Devoir N
Composition N
Coefficient i

· On enregistre cette table dans notre alias "scolarité" sous le nom : « bulletin ».
2- Dans une fiche Delphi insérer les composants suivants :
Palette Composant Propriété Valeur
Databasename scolarité
Tablename bulletin
BDE Table1
Active True
AccesBD Datasource1 Dataset Table1
ControleBD Dbgrid1 Datasource Datasource1
Label1 Caption Moyenne générale
Edit1 Text
Button1 Caption Calcul
Label2 Caption Résultat
Standard
Edit2 Text

3- Pour introduire les champs calculés « Moyenne_20 » et « Moy_coef » dans la table bulletin on procède
comme suite :
· On double clique sur le composant table1
· Ensuite : on clique droit sur la petite fenêtre et on clique sur « ajouter tous les champs ».
· Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».
· Ensuite : on écrit le nom du champ=Moyenne_20, on choisit le type du champ=float et on clique sur
Ok.
· Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».
· Ensuite : on écrit le nom du champ=Moy_coef, et on choisit le type du champ=float et on clique sur Ok.
· Ensuite : on ferme la petite fenêtre on clique sur le composant table1 et dans son inspecteur d’objet on
clique sur l’onglé « événements ».
· Ensuite : on double clique à droite de l’événement « oncalcfields » et on écrit dans la procédure :

table1.fieldbyname('moyenne_20').asfloat:= (table1.fieldbyname('devoir').asfloat+
table1.fieldbyname('composition').asfloat)/3;
table1.fieldbyname('moy_coef').asfloat:= table1.fieldbyname('moyenne_20').asfloat*
table1.fieldbyname('coefficient').asinteger;
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 29 -
TP6 : LE DBNAVIGATOR
4- Pour afficher la moyenne générale et le résultat de ce bulletin on double clique sur le bouton "calcul" et on
écrit dans la procédure : (Supprimer le begin et end de la procédure et coller tous le code source suivant)
var som_moy , mg : real;
som_coef : integer;
begin
som_moy := 0;
som_coef := 0;
table1.first;
while not(table1.eof) do
begin
som_moy := som_moy + table1.fieldbyname('moy_coef').asfloat;
som_coef := som_coef + table1.fieldbyname('coefficient').asinteger;
table1.next
end;
mg := som_moy / som_coef;
Mg := round(mg*100)/100 ;
edit1.text := floattostr(mg);
if mg <10 then
edit2.text := 'étudiant ajourné'
else
edit2.text := 'étudiant admis';
end;

Remarque :
+ Pour contrôler le format d’affichage des nombres réels (champs de type float) dans une BD (limiter le
nombre de chiffres après la virgule) on procède comme suite :
· double clique sur le composant « table1 ».
· clique sur le champ à formater (pour nous on va manipuler les deux champs «moyenne_20» et
«moy_coef»)
· Écrire dans sa propriété :

(# Représente un chiffre, donc le format ##.## représente 2 chiffres avant et après la virgule)



Un DBNavigateur Contient tous les opérations de base sur une source de données (table ou requête)























Étapes :
- On insère le composant DBNavigator1 de la palette contrôleBD.
- Pour le connecter à une source de données on choisit dans sa propriété :

Pour afficher l’éxplication (sous forme d’info-bulls) de chaque bouton du DBNavigateur1 on choisit dans sa
propriété :
Actualiser l’affichage des données : Table1.refresh ;
Annuler les modifications : Table1.cancel ;
Enregistrer les modifications : Table1.post ;
Modifier les données : Table1.edit ;
Supprimer l’enregistrement courant : Table1.delete ;
Aller au premier enregistrement : Table1.first ;
Aller au dernier enregistrement : Table1.last ;
Ajouter un nouveau enregistrement : Table1.insert ;
Aller à l’enregistrement précédant : Table1.prior ;
Aller à l’enregistrement suivant : Table1.next ;
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 30 -
1
2
3
4
5
7
6
TP1 : LA CRÉATION DES INDEX SECONDAIRES


1- dans le Module base de données créez la table suivante :
Champ type taille index
code I *
designation A 20
Quantite N
prix $

1- Avant d’enregistrer cette table et Pour insérer des index secondaires pour chaque champ on procède
comme suite :
















































LEÇON 7 : LES INDEX SECONDAIRES ET LEURS UTILISATIONS
Choir dans la liste :
Index secondaires
Clic sur le bouton :
Définir
Clic sur le
champ à
indexer
Clic Ici
(le champ
passera à
droite)
Clic sur
Ok
Clic sur
Ok
Écrire le nom de l’index
secondaire (exemple : c1)
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 31 -
TP2 : LE TRIE D’UNE TABLE
· Répéter les opérations : 2, 3, 4,5 ,6 ,7 pour les autres champs de la tables
On peut proposer par exemple les noms d’index secondaires comme suite :
Designation : c2
Quantite : c3
Prix : c4

2- A la fin on aura l’affichage suivant :


















**














1- dans une fiche Delphi insérer les composants suivants :
Palette Composant Propriété Valeur
Databasename dbdemos
Tablename produit
BDE Table1
Active True
AccesBD Datasource1 Dataset Table1
ControleBD Dbgrid1 Datasource Datasource1
2- pour faire le trie de la table produit :
Clique sur le composant dbgrid1.
Ensuite : dans son inspecteur d’objet on clique sur l’onglés « événements »
Ensuite : on double clique à droite de son événement « ontitleclick » et on introduit le code source suivant :
If column.index = 0 then
Table1.indexname :=’c1’ ;
If column.index = 1 then
Table1.indexname :=’c2’ ;
If column.index = 2 then
Table1.indexname :=’c3’ ;
If column.index = 3 then
Table1.indexname :=’c4’ ;

2- Lancer l’éxécution par F9 ; si on clique sur un entête de colonne (un champ) dans le DbGrid1, cette table
sera triée automatiquement par ce champ.

Clic sur enregistrer, et choisir
da la fenetre d’enregistrement :
Alias : DbDemos
Table : Produit
Clic ici pour trier la table par l’un des champs.
(Dans cet affichage la table est triée par le
champ quantité)

Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 32 -















Pour faire le filtrage :
1- Garder l’interface du Tp2 et insérer un composant Edit1 et effacer sa propriété « text »
2- Insérer un composant Label1 et écrire dans sa propriété : Caption = filtrage.
3- Pour faire le filtrage par le champ designation double clique sur ce Edit1 (génération de la procédure
« onchange ») et écrire le code source suivant :
4-
if edit1.text <> ‘’ then
begin
table1.close;
table1.filtered :=true ;
table1.filter :=’[designation]=‘ + #39 + edit1.text + ‘*’ + #39 ;
table1.active := true ;
end
else
begin
table1.close ;
table1.filtered := false ;
table1.active := true ;
end ;

Remarque :
Dans une base de données on peut voir des fichiers avec les extensions suivantes:
*.db : c'est une table (sa structure (champs) et son contenu (enregistrements)).
*.px : c'est un index primaire (clé d'une table)
*.xg0,*.xg1,…. ,*.yg0,*.yg1,…. : les index secondaires d'une table.

Rappel :
Dans une application delphi (logiciel) on peut voir des fichiers avec les extensions suivantes :
*.dpr : Delphi project : c'est l'unité principale qui represente le projet (le logiciel).
*.pas : Pascal : c'est une unité.
*.dfm : Delphi Form: c'est une fiche.
*.dcu : Delphi compiled unit : c'est une unité compilée
*.exe : Executable : c'est le fichier éxécutable du logiciel.
TP3 : LE FILTRAGE D’UNE TABLE
Le filtrage est une technique très
utile pour faire une recherche
rapide dans les BD.
À chaque fois qu’on écrit une
(des) lettre (s), seulement les
enregistrements contenant des
désignations (noms) commençant
par cette (ces) lettre (s).
Si on supprime toutes les lettres,
tous les enregistrements de la
table s’afficheront.
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 33 -











- Pour faire la recherche simple:
1- garder l’interface du Tp3 et insérer un composant Edit2 et effacer le contenu de sa propriété « text »
2- insérer un composant Label2 et écrire dans sa propriété : caption = chercher.
3- insérer un composant Button1 et écrire dans sa propriété : caption = lancer la recherche.
4- double clique sur ce Button1 et écrire dans sa procédure le code source suivant :

Table1.indexname:='c2'; // l’index du champ objet de la recherche (designation).
Table1.setkey ; // préparation de la recherche dans la table produit.
Table1.fieldbyname(‘designation’).asstring :=edit2.text ; // la valeur à rechercher dans ce champ.
Table1.gotokey ; // lancer la recherche.

Remarque1 :
Delphi propose une autre instruction plus simple pour faire la recherche sur une base de données comme suite :

Table1.indexname :=’c2’ ;
Table1.Findkey([Edit2.Text]); // Cette instruction remplace les trois instructions précedantes.

Remarque2 :
Pour avoir une ligne de sélection permanente dans le Dbgrid1 qui indique l’enregistrement résultat de la recherche :
- On clique à gauche de la propriété « + Options » du dbgrid1 (éxactement sur la case +).
- Choisir dans la sous propriété : DGRowSelect =true.
- Choisir dans la sous propriété : DGAlwaysShowSelection =true.

Quelques explications:
Eof : end of file : c'est la fin d'une table.
Bof : Begin of file : c'est le début d'une table.
#39 : c'est le code ASCII de l'apostrophe ' .













1- Dans le BDE créer la table suivante :
Champ type taille index
Code_grp i *
designation A 10
spécialité A 20
TP4 : LA RECHERCHE SIMPLE DANS UNE TABLE
TP5 : LES RELATIONS MAITRE-DETAIL
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 34 -
1
2
3
4
On enregistre cette table dans notre alias "dbdemos" sous le nom : « groupe ».
2- Dans le BDE (module base de données) créer la table suivante :
Champ type taille index
Code_etud I *
Nom A 20
prénom A 20
Date_nais D
Lieu_nais A 25
Code_grp i
Avant d’enregistrer cette table insérer un index secondaire pour le champ code_grp (clé étrangère) comme suite :
· On choisit en haut et à droite de la fenêtre dans la liste des choix : propriétés de la table = index secondaires.
· On clique sur le bouton Définir.
· On clique sur le champ « code_grp » dans la liste à gauche.
· On fait passer ce champ à droite par le bouton =.
· On clique sur le bouton OK et on propose un nom à l’index secondaire de ce champ, exemple : « c6 »
· On enregistre cette table dans notre alias "dbdemos" sous le nom : « etudiant ».
3- Dans une fiche Delphi insérer les composants suivants :
Palette Composant Propriété Valeur
Databasename dbdemos
Tablename groupe
BDE Table1
Active True
AccesBD Datasource1 Dataset Table1
ControleBD Dbgrid1 Datasource Datasource1
Databasename dbdemos
Tablename etudiant
BDE Table2
Active True
AccesBD Datasource2 Dataset Table2
ControleBD Dbgrid2 Datasource Datasource2
3- Pour que la table etudiant soit liée par une relation maître-détail (pére-fils) avec la table groupe
(La table groupe = maître (père), la table etudiant = détail (fils)) on procède comme suite :
On clique sur le composant table2 « etudiant», et on choisit dans sa propriété : mastersource = datasource1.
Ensuite : dans sa propriété « masterfield » on clique sur le petit bouton … et on suit les étapes suivantes :






















Le résultat sera comme suite : si on choisit un groupe dans le dbgrid1 on aura seulement les étudiants de ce groupe
qui s’affichent dans le dbgrid2.
Sélectionner les deux champs code_grp
Choisir l’index secondaire « c6 »
Clic sur Ajouter
Enfin clic sur Ok
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 35 -

PRÉSENTATION GÉNÉRALE
1-Définition :
Le langage SQL (Structured Query Langage) est un langage universel de création, de gestion et
d’interrogation des bases de données. SQL est integré dans plusieurs langages de programmation.

2- Les sous langages du SQL
Le SQL se subdivise en différents langages :
2.1- Langage de description des données (DDL : Data Definition Language) :
Permettant la définition des éléments d'une base de données, Celui-ci comprend trois commandes qui permettent
l’administration d’une base de données, ces commandes de base sont :





2.2- Langage de manipulation des données (DML : Data Manipulation Language) :
Permettant la manipulation et l’extraction des données. Celui-ci comprend les commandes qui permettent les mises
à jour des données d’une table, ces commandes de base sont :



2.3- Langage de contrôle des données (DCL : Data Control Language) :
Permettant la gestion des droits d'accès aux données et des transactions (en cas de programmation sous réseau).



2.4- Langage d’interrogation des données (DQL : Data Query Language).
Bien que ne comprenant qu’une seule commande SELECT, celle-ci étant la plus utilisée car si le
peuplement d’une base de données est une étape importante, les différentes requêtes pour l’extraction des données
représentent autant d’étapes importantes pour tous type d’utilisation :


Exemple 1 :
CREATE DATABASE Commerce;
START DATABASE Commerce;
CREATE TABLE client (Numero SMALLINT, nom CHAR(30), prenom CHAR(30), adresse CHAR(50), telephone
CHAR(15));
STOP DATABASE;

Ici nous venons de créer une base de données Commerce (ligne 1).
On ouvre ensuite cette base de données (ligne 2).
On y crée une table de nom Client, qui contient 5 colonnes.(ligne 3)
On ferme la base de donnée (ligne 4)

Exemple 2 :
INSERT INTO Client VALUES (1,'MOHAMED','Amine','Sétif',’036-84-46-68’);
Ici, on insere un nouveau enregistrement dans la table client ayant pour valeur de champs les données mentionnées.

UPDATE Client SET prenom='Redha', adresse='Alger' WHERE nom='MOHAMEDI';
Cette requere SQL modifie le pénom et l’adresse du client nommé MOHAMEDI par les valeurs mentionnées.

DELETE FROM Client WHERE numero=15;
Cette requete supprime l’enregistrement (le client) numero 15.
CREATE Création de tables ou d’index
ALTER Modification de tables ou d’index
DROP Suppression de tables ou d’index
INSERT Insertion de nouvelles lignes dans une table
UPDATE Mise à jour de certains champs d’une ligne dans une table
DELETE Suppression des lignes inutiles dans une table
GRANT Attribution de droits d'accès
REVOKE Suppression de droits d'accès
COMMIT Prise en compte des dernières transactions pour une mise à jour des données
ROLLBACK Suppression des dernières transactions et restauration des anciennes données
SELECT Extraction des données par projection, par sélection, avec restriction, par groupement
LEÇON 8 : INTRODUCTION AUX REQUETES SQL
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 36 -
1
2
3

1- Syntaxe simple :
Soit la table produit (code, designation, quantite_stock, prix_unité, type_produit)
On veut sélectionner tous les champs et enregistrements de cette table
Syntaxe :
select *
from produit

Pour executer ce script on insere un composant Query (palette accèsBD) et on manipule ses propriétés :

























Remarque :
Select : sélectionne un ou plusieurs champs en mentionnant leurs noms (* veut dire tous les champs)
On peut aussi Introduire les champs calculés en donnant leurs noms et la formule de calcul.
From : décide la source de données à sélectionner (la table source de données).
Where : donne un ou plusieurs critères de sélection des enregistrements.

2- requête avec critère de sélection :
Si on veut sélectionner que les produits qui ont une quantité de stock supérieur à 10, on écrit :
select *
from produit
where type_produit = ‘consommables’

Donc : la clause where donne la possibilité d’introduire un critère de sélection qui sera généralement une
comparaison d’un champ à une valeur de même type.

3- requête avec paramètre :(requête dynamique) :
Si on veut que la valeur du critère de sélection soit variable :
Exemple : à chaque fois on donne une valeur et on sélectionne les quantités supérieures à cette valeur donc on doit
avoir une variable qui contiendra à chaque fois une valeur différente :
Syntaxe :
select *
from produit
where type_produit = :c

Remarque1:
- le paramètre ici est nommé C et les deux points qui le précède indiquent que c’est un paramètre.
- le paramètre en suite doit avoir un type adéquat (compatible au type du champ utilisé dans la comparaison). On
donne un type au paramètre par la propriété :

TP1 : LES REQUETES SQL LES PLUS UTILISÉES
On se connecte à notre Alias.
On ecrit le script SQl dans cette propriété.
On test le fonctionnement de ce script
SQL. Avant de rendre cette propriété
True, ce composant compile ce script
SQL et ne donne pas true que si la
requete a une syntaxe juste.
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 37 -

















Remarque2:
Il faut choisir après un événement adéquat pour donner une valeur au paramètre par les instructions suivantes :
Query1.close ;
Query1.parambyname('c').asstring:=combobox1.text;
Query1.active:=true;
Pour cela on peut inserer un composant Combobox1 (palette standart) et ecrire dans sa propriété Items les valeurs :
materiel, consommables, meuble. Ensuite on double clic sur ce composant et on introduit le code source precedant.

4- les requêtes contenant des champs calculés :
On peut introduire un champs calculé dans une requête en le mentionnant dans la partie select avec les champs
fixe. Et cela en donnant le nom du champ précédé de la formule qui le calcul.
Exemple : on veut calculer le prix total de chaque produit à savoir sa quantité_stock.
Syntaxe :
Select code, designation, quantite_stock, prix_unité, (quantite_stock * prix_unité)as Total
From produit

5- les requêtes des statistiques :
On peut préparer une table contenant par exemple les type des produits (exemple : materiel, consommables,
meuble) et avoir comme résultat de la requête des données prêtes a être représenter par un graphe des statistiques
de réussite.
Syntaxe:
Select type_produit, count(type_produit) as nombre
From produit
Group by type_produit

1
Clic Ici
2
Clic sur le
paramatere
3
Choisir le
type du
paramatere
4
Fermer la
petite
fenetre
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 38 -

















1- dans le module base de données créer la table suivante :

Champ type taille index
Code_etud I *
Nom A 20
Prénom A 20
Section A 15
On enregistre cette table dans notre alias "dbdemos" sous le nom : « etudiant2007 ».

2- dans une fiche Delphi insérer les composants suivants :

Palette Composant Propriété Valeur
Databasename dbdemos
SQL …
Select *
From etudiant2007
Where section = :sec
params Sec =datatype ¬ ftstring
BDE Query1
Active True
AccesBD Datasource1 Dataset Query1
ControleBD Dbgrid1 Datasource Datasource1
Label1 caption Choisir une section
text
Standard
Combobox1

Items …
A
B
C

3- Double clique sur le Combobox1 et écrire dans sa procédure :
query1.close ;
query1.parambyname(‘sec’).asstring :=combobox1.text ;
query1.active:=true;

4- lancer l’éxécution et choisir dans le Combobox1 la section que vous voulez afficher ses étudiants.

TP2 : LA CONSULTATION PAR DES REQUÊTES PARAMÉTRÉES
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 39 -












1- Garder la table etudiant2007 du TP2 :
2- Dans une fiche Delphi insérer les composants suivants :
Palette Composant Propriété Valeur
Databasename dbdemos
SQL …
Select section , count(section) as nombre
From etudiant2007
Group by section
BDE Query1
Active True

3- insérer de la palette « controleBD » le composant Dbchart1 et procéder comme suite :
· Double clique sur ce composant




































Clic sur le bouton Ajouter
Choisir le type du graphe Sectoriel
1
2
Choisir L’onglés Série 4
Choisir dans la liste DataSet
6
Choisir l’onglés Source de données 5
Choisir le champ alphanumerique
8
Choisir le champ numerique
9
Choisir dans la liste Query1 7
Enfin clic que Fermer
10
Clic sur Ok 3
TP3 : LES GRAPHES
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 40 -

INTRODUCTION
Les versions Delphi qui ont précédé Delphi7 ont proposés les composants Quickreport pour imprimer les données.
On présentera maintenant les étapes d’installation des composants quickreport en Delphi7.

Installation des composants Quickreport en Delphi7 :
Choisir dans le menu Delphi : Composant = Installer des packets.























































LEÇON 9 : LES ÉTATS D’IMPRESSION
Clic ici
1
Clic sur le bouton Ajouter
Choisir l’unité : Dclqrt70.bpl
Clic sur Ouvrir
Clic sur Ok
2
3
4
5
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 41 -

Procédés :
1- insérer un composant Quickrep1 (de la palette Qreport) sur la fiche.
2- La source de données à imprimer sera la table produit, Donc insérer de la palette BDE le composant « Table1 »
et dans son inspecteur d’objet on manipule ses propriétés :

Choisir notre alias

Choisir la table

Activer la connexion à la table

3- on sélectionne le composant Quickrep1 posé sur la fiche pour avoir son inspecteur d’objet et on manipule dans
ce dernier les propriétés comme suite :
- pour modifier la taille d’affichage de la page d’impression « quickrep1 » on écrit dans la propriété :


- on ouvre la propriété Bands en cliquant sur l’icône + à son gauche



- on doit mettre à true les sous propriétés suivantes :









- on élargi la hauteur de la bande de titre d’état.
4- dans la palette des composants du Qreport on insére autant de composants Qrlabel nécessaire dans la
bande titre pour bien représenter l’organisme propriétaire de l’état (société, commerçant …); ces composants
contiendront des textes explicatives dans leurs propriétés Caption.
5- Dans la bande entête des colonnes on insére des composants Qrlabel représentant par le texte de leur propriété
Caption le nom des colonnes à imprimer (code, designation, quantité…).
6- Dans la bande détail on insére toujours de la palette Qreport des composants QrDbText qui seront
positionnées respectivement juste en dessous des composants Qrlabel de la bande entête de colonnes(un par
un).
7- chaque composant Qrdbtext sera lié à un champ de la table produit à imprimer et suivant le Caption du Qrlabel
au dessus. La liaison du Qrdbtext avec le champ se fait :
- on se pointant par sa propriété DataSet à la table produit.

- on se pointant par sa propriété DataField au champ adéquat.
8- en fin n’oubliez pas de lier le composant Quickrep1 lui même à la table produit. Cela se fait en cliquant sur ce
composant en évitant les bandes et dans son inspecteur d’objet on se pointe par la propriété dataset à la table
produit.
9- Pour previsualiser notre état on écrit dans la procédure d’un bouton (son caption sera : « previsualiser »)
l’instruction :
quickrep1.preview ;
10- Pour imprimer notre état on écrit dans la procédure d’un bouton (son caption sera : « imprimer ») l’instruction :
quickrep1.print ;

11- Pour encadrer les champs de l’etat d’impression on utilise le composant Qrshape et on le contrôle par :
Ctrl + + : deplacer le composant selectionné à gauche.
Ctrl + ¬ : deplacer le composant selectionné à droite.
Ctrl + q : deplacer le composant selectionné vers le haut.
Ctrl + + : deplacer le composant selectionné vers le bas.
Shift + + : reduire le composant selectionné à gauche.
Shift + ¬ : agrandir le composant selectionné à droite.
Shift + q : reduire le composant selectionné vers le haut.
Shift + + : agrandir le composant selectionné vers le bas.
TP1 : Imprimer les enregistrements d’une Table (Liste des produits)
Hasdetail : pour avoir une bande de détail (cette
bande a une caractéristique spéciale de se
répéter suivant le nombre d’enregistrements).

Hastitle : pour avoir une bande de titre d’état.
Hascolumnheader : bande d’entêtes de colonnes.

Clic Ici

Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 42 -
Remaque : pour mettre le cadre (QRShape) en arrière plan et voir les autres composants ( QRLabal, QREdit) on doit
cliquer par le bouton droit de la sourie sur ce cadre et choisir dans le menu contextuel :
Options de contrôle = mettre en arrière plan.













Clic par le bouton
Droit de la sourie sur
l’état d’impression en
évitant les bandes et
les composants
Clic sur Prévisualiser
L’état sous sa forme
d’impression
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 43 -

Delphi est un RAD (Rapide Application Développement) et propose des assistants qui aident à la création d’une
grande variété de fiches.
Pour la création d’une fiche d’impression (image suivante) on procède comme suite :

1. Dans le menu Delphi on choisit : Fichier = Nouveu = Autre ..
















2. Dans la boite de dialogue qui s’affiche on choisit l’onglet « affaires » et dans ce dernier on choisit l’icône
« expert quick report » et on clique sur le bouton Ok.
3. Dans l’assistant qui s’affiche on clique en bas sur le bouton lancer l’expert.

















LEÇON 10 : DELPHI EST UN RAD
TP1 : UNE FICHE SIMPLE D’IMPRESSION D’UNE TABLE
Choisir l’alias de la base de données
1
Choisir la table à imprimer
2
Faire passer tous les champs à droite
pour les imprimer tous (si on veux
imprimer quelques champs seulement,
on les fait passer un par un par le bouton
plus haut > )
3
À la fin on ferme la petite fenêtre
4
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 44 -



·















1- Pour créer cette fiche on procède comme suite :
· Dans le menu Delphi on choisit : fichier = nouveau
· Dans la boite de dialogue qui s’affiche on choisit l’onglés « affaires » et dans ce dernier on choisit l’icône
« expert fiche base de données » et clique sur le bouton Ok.
· Dans l’assistant qui s’affiche on choisit dans la première étape le type de la fiche :
O Créer une fiche simple
· Clique sur le bouton Suite.
· Choisir dans la liste « lecteur ou nom de l’alias » notre alias « scolarité »
· Clique sur la table «étudiant » et clique sur Suivant et clique sur le bouton >> et clique sur Suivant.
· Clique sur l’option « O dans une grille » et clique sur Suivant.
· Enfin clique sur l’option « O fiche seulement » et clique sur Terminer
2- Clique sur le composant « dbgrid1 » et choisir dans sa propriété «align» = none, et réduire la taille de ce
dbgrid vers le bas; et clique sur le composant table1 et modifier sa propriété : « Active» = true.
3- Double clique sur le composant table1 et clique droit sur la petite fenêtre et clique sur «ajouter tous les
champs»
4- Glisser les champs un par un vers l’éspace libre en haut de notre fiche.
5- Clique sur la nouvelle fiche en évitant le clic sur l’un de ses composants et écrire dans sa propriété :
name = fiche_etudiant.
Ensuite, clique sur (menu Delphi) : fichier = enregistrer, et nommer l’unité : etudiant.
6- On doit maintenant préparer l’impression de la liste des étudiants comme suite :
· Choisir dans le menu Delphi : fichier = nouveau et clique dans la fenêtre qui s’affiche sur l’onglé
« affaires ».
· Clique sur l’élément : « expert quickreport » et clique sur Ok.
· Clique sur le bouton « lancer l’expert », et choisir l’alias « scolarité » et la table « etudiant ».
· Clique sur le bouton >> qui fait passer tous les champs vers la droite pour les imprimer tous et clique sur
Ok.
· Clique sur la nouvelle fiche en évitant le clic sur le composant « quickrep1 » et écrire dans sa propriété :
name = fiche_etat_etudiant.
Ensuite, clique sur (menu Delphi) : fichier =enregistrer, et nommer l’unité : etat_etudiant.
7- On tape Shift+F12 pour afficher la liste des fiches et on choisit la fiche «fiche_etudiant» et on clique sur Ok.
Ensuite, et pour une impression bien présentée des étudiants on insère un composant popupmenu (palette
standard).
Ensuite, on double clique sur ce composant et on introduit les deux éléments « previsualiser » et « imprimer ».
Ensuite, on ferme la petite fenêtre du « popupmenu » et on insère de la palette « supplément » le composant
« speedubutton1 » et on clique sur ce composant qui représente l’impression et dans son inspecteur d’objet
on choisit dans sa propriété « popupmenu » l’élément « popupmenu1 ».
Ensuite : pour programmer le composant popupmenu1 on double clique sur ce dernier et on double clique sur
l’élément « previsualiser » et on écrit dans sa procédure :
fiche_etat_etudiant.quickrep1.preview ;
Ensuit : on tape F12 pour retourner à la fiche et on double clique sur le composant « popupmenu1 » et on
double clique sur l’élément « imprimer » et on écrit dans sa procédure :
fiche_etat_etudiant.quickrep1.print ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la
confirmation de la liaison entre la fiche_etudiant et la fiche_etat_etudiant et on doit cliquer sur Oui pour
chaque demande de confirmation.
TP2 : UNE FICHE SIMPLE DE CONNEXION ET D’AFFICHAGE ET D’IMPRESSION D’UNE TABLE
Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7
- 45 -

















Pour la création de cette fiche on procède comme suite :
1. dans le menu Delphi on choisit : fichier = nouveau
2. dans la boite de dialogue qui s’affiche on choisit l’onglet « affaires » et dans ce dernier on choisit
l’icône « expert fiche base de données » et clique sur le bouton Ok .
3. dans l’assistant qui s’affiche on choisit dans la première étape le type de la fiche :
O Créer une fiche maître/détail, ensuite clique sur le bouton Suite.
4. choisir dans la liste « lecteur ou nom d’alias » l’alias de notre table maître à afficher (exemple :
dbdemos).
5. On choisit la table dans la liste (exemple : groupe), ensuite clique sur le bouton Suite.
6. On clique sur le bouton >> pour faire passer tous les champs à droite (pour les afficher tous) et
clique sur Suite
7. Clique sur l’option : « O dans une grille » et clique sur Suite
8. Choisir dans la liste « lecteur ou nom d’alias » l’alias de notre table détail à afficher (exemple :
dbdemos).
9. On choisit la table dans la liste (exemple : etudiant), ensuite clique sur le bouton Suite.
10. On clique sur le bouton >> pour faire passer tous les champs à droite (pour les afficher tous) et
clique sur Suite
11. Clique sur l’option : « O dans une grille » et clique sur Suite
12. Ensuite : on choisit dans la liste en haut l’index disponible « c6 »
13. Ensuite : on choisit à gauche le champ « code_grp » et à droite le champ « code_grp ».
14. Ensuite : clique sur le bouton ajouter ensuite sur le bouton Suite.
15. On fin sur le bouton Terminer

1- choisir dans le menu Delphi : fichier = nouvelle application.
(Si Delphi demande l’enregistrement de l’ancienne application on clique sur Non )
2-supprimer la fiche vierge proposée par défaut dans cette nouvelle application par :
Le menu Delphi : projet = supprimer une fiche, et clique sur Ok
3- préparer une fiche BD simple en utilisant les étapes du TP2 et nommer cette fiche « fiche_liste ».
4- préparer une fiche d’impression en utilisant les étapes du TP1 pour imprimer la même table choisie dans
la fiche_liste et nommer cette fiche « fiche_etat_liste ».
5- insérer en haut de la fiche_liste deux boutons de la palette standard.
Button1 = Caption = Previsualiser.
Button2 = Caption = Imprimer.
6- double clique sur le button1 et écrire dans sa procédure :
fiche_etat_liste.quickrep1.preview ;
7- double clique sur le button2 et écrire dans sa procédure :
fiche_etat_liste.quickrep1.print ;
8- compiler par Ctrl + F9 et clique sur Oui pour faire la liaison entre les deux fiches et lancer l’éxécution par
F9.
TP3 : UNE FICHE MAITRE-DETAIL ENTRE DEUX TABLES
TP4 : TP EXEMPLAIRE

- 46 -
























Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 47 -
PREPARATION DU LOGICIEL :
1- créer dans le lecteur C du disque dur un nouveau dossier nommé : commerce (pour stocker le logiciel).
2- créer dans le dossier commerce 2 autres dossiers nommés : base (pour stocker la BD) et source (pour stocker le
code source)
3- lancer le BDE de Delphi par : (le menu Delphi) outils = module base de données.
4- créer un nouveau alias pour notre logiciel par : (le menu BDE) outils = gestionnaire d’alias
Ensuite : cliquer sur l’option : « O afficher seulement les alias publics »
Ensuite : cliquer sur le bouton : nouveau
Ensuite : écrire dans : Alias de la base : commerce
Chemin d’accès : c:\commerce\base
Ensuite cliquer sur Ok
En fin cliquer sur Oui pour que cet alias soit un alias public.

Remarque
On peut fixer cet alias comme alias de travail par défaut au cour du développement de notre logiciel et cela par le
choix de cet alias dans le menu du module base de données : fichier =répertoire du travail.
(Le BDE se pointera automatiquement sur cet alias à chaque accès au module BD)

5- créer dans cet alias les tables suivantes, n’oubliez pas de les enregistrer dans l’alias « commerce »
Table: client
Champ Type Taille index
Code_c
Nom_c
Prenom_c
Adresse_c
Telephone_c
RC_c
AI_c
IF_c
i
A
A
A
A
A
A
A

20
20
30
15
15
15
15
*

Table: fournisseur
Champ Type Taille index
Code_f
Nom_f
Prenom_f
Adresse_f
Telephone_f
RC_f
AI_f
IF_f
i
A
A
A
A
A
A
A

20
20
30
15
15
15
15
*


Table : facture_achat
Champ Type Taille index
Numero_a
Date_achat
Reglement_a
code_four
i
d
A
i


10

*

Table : facture_vente
Champ Type Taille index
Numero_v
Date_vente
Reglement_v
code_cli
i
d
A
i


10

*

Table : ligne_vente
Table : ligne_achat
Champ Type Taille index
Num_achat
Ref_prod
Qte_achat
i
i
n


*
*

Champ Type Taille Index
Num_vente
Ref_prod
Qte_vente
i
i
n


*
*
Table : produit
Champ Type Taille index
Reference
Designation
Qte_stock
Prix_achat
Prix_vente
Tva
i
A
n
$
$
n

20



*

Table : inventaire
Champ Type Taille Index
Numero_i
Date_inventaire
durée
responsable
i
d
A
A


10
20
*

Table : ligne_inventaire
Champ Type Taille Index
Num_inv
Ref_prod
Qte_theorique
Qte_reelle
i
i
n
n


*
*
Table protection
Champ Type Taille index
Password A 20 *


MCD CORRESPONDANT (c’est seulement une partie du MCD réel et complet de la gestion commerciale) :
Inventaire
Numero_i
Fournisseur
Code_f
Facture_achat
Numero_a
Produit
Reference
Facture_vente
Numero_v

Client
Code_c

Achat
Vente
1.n 1.1
1.1 1.n
1.n 1.n
Ligne_inv
Qte_theorique
Qte_reelle
Ligne_vente
Qte_vente
Ligne_achat
Qte_achat
1.n 1.n
1.n
1.n
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 48 -

FICHE MENU















1- Retournez à l’environnement Delphi et choisir dans le menu : Fichier = nouvelle application.
Ensuite : insérer dans la fiche de ce nouveau projet (ce nouveau logiciel) un composant « mainmenu1 »
Ensuite : double clique sur ce composant et insérer le menu principal suivant :
Fichier Edition Consultation Statistiques Outils ?
Facture achat
Facture vente
Achats
Ventes
Règlements

Aide
A propos
Produit
Client
Fournisseur

Inventaire
Archivage
Protection
Cloture
Quitter



+ Chaque fiche (ainsi que son unité) dans le logiciel doit être nommée par un nom significatif. pour notre fiche
actuelle (le menu général du projet) on procède comme suite :
Cliquer sur cette fiche (éviter le composant mainmenu1) et dans son inspecteur d’objet écrire dans la propriété :
name = fiche_menu.
Cliquer dans le menu Delphi sur : fichier = enregistrer sous, et dans le dossier « c:\commerce\source » on nomme
l’unité : « menu ».
Cliquer dans le menu Delphi sur : fichier = enregistrer le projet sous, et nommer le projet : commerce (toujours dans
« c:\commerce\source »)
2- insérer un composant ToolBar1 (palette win32).
Ensuite : clique droit sur ce composant et choisir « nouveau bouton » ou « nouveau séparateur »
Ensuite : répéter le clic droit pour insérer 15 boutons qui représentent les éléments du menu principal du logiciel;
Et 6 séparateurs pour les grands éléments du menu (fichier, édition, consultation, …)
Ensuite : insérer un composant imagelist1 (palette win32)
Ensuite : double clique sur ce composant et clique sur le bouton Ajouter pour choisir la gamme des images de notre
logiciel dans le chemin : « C:\program files\fichiers communs\borland shared\images\buttons »
Ensuite : après le choix de 15 images adéquates aux 15 boutons on clique sur Ok
Ensuite : clique sur le « mainmenu1 » et dans son inspecteur d’objet choisir dans la propriété :
Images = imagelist1
Ensuite : double clique sur le « mainmenu1 » et chaque élément de ce menu sera lié à une image adéquate par sa
propriété : « imageindex »
Enfin : fermer la petite fenêtre du menu et clique sur le composant « toolbar1 » et pour affecter des images à ses
boutons choisir dans sa propriété : Images = imagelist1.
(Chaque bouton du «toolbar1» peut avoir une image adéquate par le choix de cette image dans la propriété
« imageindex » de ce bouton).
3- pour expliquer le rôle de chaque bouton on clique sur ce dernier on écrit dans sa propriété : « Hint » l’éxplication
voulue, ensuite et pour voir cette éxplication on choisit dans la propriété : showHint = true
Programmation du sous menu : Quitter
Double clique sur le composant « mainmenu1 » et double clique sur son élément quitter (du sous menu fichier)
Ensuite : écrire dans la procédure : close;
Ensuite : dans la fiche_menu, double clique à droite de son événement «onclosequery» et écrire dans sa procédure :
if messagedlg('voulez vous quitter le logiciel?',mtconfirmation,[mbyes,mbno],0)=mryes then
begin
canclose:=true;
application.terminate;
end
else
canclose:=false;
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 49 -
Résultat:
Cette technique assure l’affichage de la fenêtre de confirmation de sortie du logiciel pour n’importe quel type de
tentative de fermeture du logiciel :
- le menu : fichier = quitter.
- Par clavier en utilisant les touches : Alt + F4
- En cliquant sur la case fermer X en haut et à droite de la fenêtre.


4- Pour que la fiche menu occupe tous l’éspace de l’écran lors du lancement de l‘éxécution du logiciel :
- Clique sur cette fiche_menu (éviter de cliquer sur l’un de ses composants).
- Choisir dans sa propriété : « Window state = wsmaximized »
5- Enregistrer notre travail par le menu Delphi : fichier = tout enregistrer.

Remarques :
1- Pour lier chaque bouton de la barre d’outils « Toolbar1 » à une fiche on clique sur ce bouton et on choisit dans son
événement « onclick » la procédure qui appelle la fiche correspondante (faites ce travail à la fin du logiciel).
2- Lorsqu’on lance l’éxécution de notre logiciel la fiche menu apparaît automatiquement la première puisque elle est
la fiche principale dans notre logiciel, mais si cette fiche n’a pas été lancée la première donc elle n’est pas considérée
comme fiche principale et on doit corriger cette faute par le choix dans le menu Delphi : projet = options, et on choisit
dans la liste : « Fiche principale » = « fiche_menu » et clique sur Ok.
3- dans le menu principal :
- La partie fichier: sert à représenter les tables permanentes (produit, clients, fournisseur) qui se ressemble
coté programmation.
- Une table permanente est une table qui lors de l’archivage de notre BD pour le passage à une nouvelle
année d’activité, ses données ne seront pas vidés (conservent les mêmes données pour le nouvel an)
- La partie édition : sert à représenter les mouvements entre les tables permanentes. (bien sur les mouvements
sont représentés sous formes de tables de mouvement (facture_achat et ligne_achat par exemple)
Une table mouvement après son archivage (après copiage de son contenu dans un autre emplacement mémoire
comme réserve) doit être vidée pour commencer une nouvelle année d’activité.

L’image de l’arrière plan :
1- insérer un composant « image1 » de la palette « supplément ».
2- dans sa propriété picture on clique sur le bouton Charger et chercher l’image voulue.
(Exemple du chemin de l’image : C:\Program Files\Fichiers communs\Borland Shared\Images\Splash\256Color)
3- Enfin clique sur Ouvrir ensuite sur Ok
4- pour que l’image occupe toute la surface de son cadre on modifie sa propriété : Autosize = true.
5- pour que l’image s’agrandie si elle à une taille plus petite que la surface de son cadre on modifie sa propriété :
Stretch = true. Aussi modifier sa propriété : align = alClient.

Les abréviations du domaine commercial :
HT : prix Hors Taxe.
TVA : la Taxe sur la Valeur Ajouté.
TTC : le montant Tous Taxes Comprise.
RC : le numéro du Registre de Commerce
AI : le numéro de l’Article d’Imposition
IF : le numéro de l’Identification Fiscale.


Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 50 -
LA FICHE PRODUIT














1- choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom de la fiche : « fiche_produit ».
Ensuite : choisir dans le menu Delphi : fichier = enregistrer, et dans le dossier « c:\commerce\source » nommer
l’unité : « produit »
2- Insérer les composants suivants :
Palette Composant Propriété Valeur
Databasename Commerce
Tablename Produit
BDE Table1
Active True
Accesbd Datasource1 Dataset Table1
Contrôlebd Dbgrid1 Datasource Datasource1
Caption Imprimer Speedbutton1
Glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer.bmp
Supplement
Bitbtn1 Kind Bkclose
databasename Commerce
Sql Select sum(qte_stock*prix_achat)as montant_stock from produit
BDE Query1
Active True
Label1 Caption Filtrage Standard
Edit1 Text
3- Double clique sur le query1 et clique droit sur la petite fenêtre et clique sur «ajouter tous les champs».
Ensuite : clique sur le champ montant_stock et glisser ce dernier vers le bas de notre fiche.
4- Pour faire le filtrage on double clique sur le composant edit1 et on écrit dans la procédure (onchange):
if edit1.text <> ‘’ then
begin
table1.close ;
table1.filtered :=true ;
table1.filter :=’[designation]=‘ + #39 + edit1.text + ‘*’ + #39 ;
table1.active := true ;
end
else
begin
table1.close ;
table1.filtered := false ;
table1.active := true ;
end ;
5- On tape la touche F12 (retour à la fiche), et pour faire le trie de la table produit : clique sur le composant
dbgrid1.
Ensuite : dans son inspecteur d’objet on clique sur l’onglés « événements »
Ensuite : on double clique à droite de l’événement « ontitleclick » et on introduit le code source suivant :
// Une table est triée automatiquement selon son index actuel (primaire ou secondaire)
If column.index = 0 then
Table1.indexname :=’c1’ ;
If column.index = 1 then
Table1.indexname :=’c2’ ;
If column.index = 2 then
Table1.indexname :=’c3’ ;
If column.index = 3 then
Table1.indexname :=’c4’ ;
If column.index = 4 then
Table1.indexname :=’c5’ ;
If column.index = 5 then
Table1.indexname :=’c6’ ;
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 51 -
Remarque importante :
Le trie et le filtrage dans une table ne réussissent que si on a défini des index secondaires sur chaque champ trié ou
filtré.
Pour insérer des index secondaires dans les champs de la table produit il faut que cette table ne soit pas en cours
d’utilisation donc sa propriété : active = false.
Aussi la requête query1 doit être : active = false, puisque elle aussi utilise la table produit.
Ensuite : on lance le BDE Delphi par : (le menu Delphi) : outils = module base de données.
Ensuite : on ouvre la table par : (le menu) fichier = ouvrir = table et on choisit l’alias « commerce » et la
table « produit ».
Ensuite : on clique dans le menu du BDE sur table = restructurer.
Ensuite : on choisit dans la liste des choix « propriétés de la table » l’option « index secondaires »
Ensuite : on clique pour chaque champ sur le bouton Définir et on fait passer ce champ à droite, on clique sur le
bouton OK et on propose un nom symbolique à cet index secondaire (c1 pour le champ reference, c2 pour le champ
designation,…etc.)
Ensuite : on clique sur le bouton enregistrer et on retourne à l’environnement Delphi.
Enfin : on réactive les deux composants table1 et query1 par leurs propriétés : active = true.
6- on renforce cette fiche par des champs calculés pour chaque enregistrement de la table produit et cela
comme suite :
On double clique sur le composant table1
Ensuite : on clique droit sur la petite fenêtre et on clique sur « ajouter tous les champs ».
Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».
Ensuite : on écrit le nom du champ : « total » et on choisit le type du champ : « currency » et on clique sur ok.
Ensuite : on clique sur le composant table1 et dans son inspecteur d’objet on clique sur l’onglé « événements ».
Ensuite : on double clique à droite de l’événement « oncalcfields » et on écrit dans la procédure :
table1.fieldbyname(‘total’).ascurrency := table1.fieldbyname(‘qte_stock’).asfloat *
table1.fieldbyname(‘prix_achat’).ascurrency ;
query1.close;
query1.active:=true;
// Pour que la requête prend en considération les dernières données saisies (rafraîchir les calculs de la requête).
7- on va maintenant préparer l’impression de la liste des produits comme suite :
On choisit dans le menu Delphi : fichier = nouveau, et on clique dans la fenêtre qui s’affiche sur l’onglé « affaires ».
Ensuite : on clique sur l’élément : « expert quickreport » et on clique sur ok.
Ensuite : on clique sur le bouton lancer l’expert et on choisit l’alias « commerce » et la table « produit ».
Ensuite : clique sur le bouton >> qui fait passer tous les champs à droite pour les imprimer tous et clique sur
Terminer.
Ensuite : on clique sur cette nouvelle fiche en évitant le clic sur le composant « quickrep1 » et dans sa propriété
« name » on donne le nom de cette fiche qui sera « fiche_etat_produit ».
Ensuite : on clique sur : (menu Delphi) fichier =enregistrer, et dans le dossier : « c:\commerce\source » on nomme
l’unité : etat_produit.
8- on tape Shift + F12 pour afficher la liste des fiches du logiciel et on choisit la fiche « fiche_produit » et on
clique sur ok.
Ensuite : et pour une impression bien présentée des produits on insère un composant popupmenu1 (palette
standard).
Ensuite : on double clique sur ce composant et on introduit les deux éléments «previsualiser» et «imprimer» dans
leurs propriétés «caption».
Ensuite : on ferme la petite fenêtre du « popupmenu1 » et on clique sur le composant « speedbutton1 » qui
représente l’impression et dans son inspecteur d’objet on choisit dans sa propriété « popupmenu » l’élément
« popupmenu1 ».
Ensuite : pour programmer le composant popupmenu1 on double clique sur ce dernier et on double clique sur
l’élément « previsualiser » et on écrit dans sa procédure : fiche_etat_produit.quickrep1.preview ;
Ensuit : on tape F12 pour retourner à la fiche et on double clique sur le composant « popupmenu1 » et on double
clique sur l’élément « imprimer » et on écrit dans sa procédure : fiche_etat_produit.quickrep1.print ;
9- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément produit (du sous menu
fichier)
Ensuite : on écrit dans la procédure : fiche_produit.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la
confirmation de la liaison entre la fiche_menu et la fiche_produit et on doit cliquer sur oui pour cette demande de
confirmation ; on recompile par Ctrl + F9 pour faire la liaison aussi entre la fiche_produit et la fiche_etat_produit et
on doit cliquer sur oui aussi pour cette demande de confirmation.
Remarques :
1- Pour que la fiche produit se place au milieu de l’ecran si on l’appel lors du lancement de l‘éxécution du logiciel :
- On tape : Shift + F12 et on clique sur la « fiche_produit » et on clique sur Ok.
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 52 -
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»
2- on enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
Remarque importante :
Dans le cas des champs de type monétaire (prix_achat, prix_vente, total …), on peut modifier le symbole monétaire
(La monais : Da, $, £, € ….) et cela en suivant les étapes :
- On lance la fenêtre « panneau de configuration » de Windows par :
Le bouton « démarrer » = paramètre = « panneau de configuration »
- dans cette fenêtre on double clique sur : « options régionales et linguistiques »
- clique sur le bouton « personnaliser »
- clique en haut sur la page : « symbole monétaire »
- choisir ou écrire dans la liste « symbole monétaire » le symbole voulu (généralement Da)
(Si le symbole Da ne figure pas dans la liste, donc il faut l’écrire)
- Enfin clique sur Ok ensuite Ok
+ Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements
possibles)
LA FICHE CLIENT

1- choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_client ».
Ensuite : choisir dans le menu Delphi : fichier = enregistrer, et dans le dossier « c:\commerce\source » nommer
l’unité : « client »
2- Insérer les composants suivants :
Palette Composant Propriété Valeur
Databasename Commerce
Tablename client
BDE Table1
Active True
Accesbd Datasource1 Dataset Table1
Contrôlebd Dbgrid1 Datasource Datasource1
Caption Imprimer Speedbutton1
Glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer.bmp
Supplement
Bitbtn1 Kind Bkclose
Label1 Caption Filtrage Standard
Edit1 text

3- Pour faire le filtrage on double clique sur le composant edit1 et on écrit dans la procédure (onchange):
if edit1.text <> ‘’ then
begin
table1.close ;
table1.filtered :=true ;
table1.filter :=’[nom_c]=‘ + #39 + edit1.text + ‘*’ + #39 ;
table1.active := true ;
end
else
begin
table1.close ;
table1.filtered := false ;
table1.active := true ;
end ;
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 53 -
4- On tape la touche F12, et pour faire le trie de la table client : clique sur le composant dbgrid1.
Ensuite : dans son inspecteur d’objet on clique sur l’onglés « événements »
Ensuite : on double clique à droite de l’événement « ontitleclick » et on introduit le code source suivant
If column.index = 0 then
Table1.indexname :=’c1’ ;
If column.index = 1 then
Table1.indexname :=’c2’ ;
If column.index = 2 then
Table1.indexname :=’c3’ ;
If column.index = 3 then
Table1.indexname :=’c4’ ;
If column.index = 4 then
Table1.indexname :=’c5’ ;
If column.index = 5 then
Table1.indexname :=’c6’ ;
Remarque:
Pour insérer des index secondaires dans les champs de la table client il faut que cette table ne soit pas en cours
d’utilisation donc sa propriété : active = false.
Ensuite : on lance le BDE Delphi par : (le menu Delphi) : outils = module base de données.
Ensuite : on ouvre la table par : (le menu) fichier = ouvrir = table et on choisit l’alias « commerce » et la
table « client ».
Ensuite : on clique dans le menu du BDE sur table =restructurer.
Ensuite : on choisit dans la liste des choix « propriétés de la table » l’option « index secondaires »
Ensuite : on clique pour chaque champ sur le bouton Définir et on fait passer ce champ à droite, on clique sur le
bouton OK et on propose un nom symbolique à cet index secondaire (c1 pour le champ code_c, c2 pour le champ
nom_c,…etc.)
Ensuite : on clique sur le bouton enregistrer et on retourne à l’environnement Delphi.
Enfin : on réactive le composant table1 par sa propriété : active = true.
5- On doit maintenant préparer l’impression de la liste des clients comme suite :
On choisit dans le menu Delphi : fichier = nouveau, et on clique dans la fenêtre qui s’affiche sur l’onglé « affaires ».
Ensuite : on clique sur l’élément : « expert quickreport » et on clique sur « ok ».
Ensuite : on clique sur le bouton lancer l’expert, et on choisit l’alias « commerce » et la table « client ».
Ensuite : on clique sur le bouton >> qui fait passer tous les champs à droite et on clique sur Terminer.
Ensuite : on clique sur cette nouvelle fiche en évitant le clic sur le composant « quickrep1 »et dans sa propriété
« name » on donne le nom « fiche_etat_client » à cette fiche.
Ensuite : on clique sur : (menu Delphi) fichier=enregistrer, et dans le dossier : c:\commerce\source on nomme
l’unité : etat_client.
6- On tape Shift + F12 pour afficher la liste des fiches et on choisit la fiche « fiche_client » et on clique sur Ok.
Ensuite : et pour une impression bien présentée des clients on insère un composant popupmenu (palette standard).
Ensuite : on double clique sur ce composant et on introduit les deux éléments «previsualiser» et «imprimer» dans
leurs propriétés «caption».
Ensuite : on ferme la petite fenêtre du « popupmenu » et on clique sur le composant « speedbutton1 » qui représente
l’impression et dans son inspecteur d’objet on choisit dans sa propriété « popupmenu » l’élément « popupmenu1 ».
Ensuite : pour programmer le composant popupmenu1 on double clique sur ce dernier et on double clique sur
l’élément « previsualiser » et on écrit dans sa procédure : fiche_etat_client.quickrep1.preview ;
Ensuit : on tape F12 pour retourner à la fiche et on double clique sur le composant « popupmenu1 » et on double
clique sur l’élément « imprimer » et on écrit dans sa procédure : fiche_etat_client.quickrep1.print ;
7- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément client (du sous menu
fichier)
Ensuite : on écrit dans la procédure : fiche_client.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la
confirmation de la liaison entre la fiche_menu et la fiche_client et on doit cliquer sur oui pour cette demande de
confirmation ; on recompile par Ctrl + F9 pour faire la liaison aussi entre la fiche_client et la fiche_etat_client et on
doit cliquer sur oui aussi pour cette demande de confirmation.
Remarques :
1- Pour que la fiche client se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel :
- On tape : Shift + F12 et on clique sur la « fiche_client » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»
2- on enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements
possibles)
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 54 -
LA FICHE FOURNISSEUR
1- Choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_fournisseur ».
Ensuite : choisir dans le menu Delphi : fichier = enregistrer, et dans le dossier « c:\commerce\source » nommer
l’unité : « fournisseur »
2- Insérer les composants suivants :
Palette Composant Propriété Valeur
Databasename Commerce
Tablename fournisseur
BDE Table1
Active True
Accesbd Datasource1 Dataset Table1
Contrôlebd Dbgrid1 Datasource Datasource1
Caption Imprimer Speedbutton1
Glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer.bmp
Supplement
Bitbtn1 Kind Bkclose
Label1 Caption Filtrage Standard
Edit1 text
3- Pour faire le filtrage on double clique sur le composant edit1 et on écrit dans la procédure
(onchange):
if edit1.text <> ‘’ then
begin
table1.close ;
table1.filtered :=true ;
table1.filter :=’[nom_f]=‘ + #39 + edit1.text + ‘*’ + #39 ;
table1.active := true ;
end
else
begin
table1.close ;
table1.filtered := false ;
table1.active := true ;
end ;
4- On tape la touche F12 (retour à la fiche), et pour faire le trie de la table fournisseur : clique sur le
composant dbgrid1.
Ensuite : dans son inspecteur d’objet on clique sur l’onglés « événements »
Ensuite : on double clique à droite de l’événement « ontitleclick » et on introduit le code source
suivant (Une table est triée automatiquement selon sont index actuel (primaire ou secondaire) et on suppose que
les index secondaires existes déjà pour chaque champ) :
If column.index = 0 then
Table1.indexname :=’c1’ ;
If column.index = 1 then
Table1.indexname :=’c2’ ;
If column.index = 2 then
Table1.indexname :=’c3’ ;
If column.index = 3 then
Table1.indexname :=’c4’ ;
If column.index = 4 then
Table1.indexname :=’c5’ ;
If column.index = 5 then
Table1.indexname :=’c6’ ;

Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 55 -
Remarque:
Pour insérer des index secondaires dans les champs de la table fournisseur il faut que cette table ne soit pas en
cours d’utilisation donc sa propriété : active = false.
Ensuite : on lance le BDE Delphi par : (le menu Delphi) : outils = module base de données.
Ensuite : on ouvre la table par : (le menu) fichier = ouvrir = table et on choisit l’alias « commerce » et la
table « fournisseur».
Ensuite : on clique dans le menu du BDE sur table =restructurer.
Ensuite : on choisit dans la liste des choix « propriétés de la table » l’option « index secondaires »
Ensuite : on clique pour chaque champ sur le bouton Définir et on fait passer ce champ à droite, on clique sur le
bouton OK et on propose un nom symbolique à cet index secondaire (c1 pour le champ code_f, c2 pour le champ
nom_f,…etc.)
Ensuite : on clique sur le bouton enregistrer et on retourne à l’environnement Delphi.
Enfin : on réactive le composant table1 par sa propriété : active = true.

5- On doit maintenant préparer l’impression de la liste des fournisseurs comme suite :
On choisit dans le menu Delphi : fichier = nouveau, et on clique dans la fenêtre qui s’affiche sur l’onglé « affaires ».
Ensuite : on clique sur l’élément : « expert quickreport » et on clique sur Ok.
Ensuite : on clique sur le bouton lancer l’expert, et on choisit l’alias « commerce » et la table « fournisseur ».
Ensuite : on clique sur le bouton >> qui fait passer tous les champs à droite et on clique sur Terminer.
Ensuite : on clique sur cette nouvelle fiche en évitant le clic sur le composant « quickrep1 »et dans sa propriété
« name » on donne le nom « fiche_etat_fournisseur » à cette fiche.
Ensuite : on clique sur :(menu Delphi) fichier =enregistrer, et dans le dossier : c:\commerce\source on nomme
l’unité : etat_fournisseur.
6- on tape Shift+F12 pour afficher la liste des fiches et on choisit la fiche « fiche_fournisseur » et on
clique sur Ok.
Ensuite : et pour une impression bien présentée des fournisseurs on insère un composant popupmenu (palette
standard).
Ensuite : on double clique sur ce composant et on introduit les deux éléments «previsualiser» et «imprimer» dans
leurs propriétés «caption».
Ensuite : on ferme la petite fenêtre du « popupmenu » et on clique sur le composant « speedbutton1 » qui représente
l’impression et dans son inspecteur d’objet on choisit dans sa propriété « popupmenu » l’élément « popupmenu1 ».
Ensuite : pour programmer le composant popupmenu1 on double clique sur ce dernier et on double clique sur
l’élément « previsualiser » et on écrit dans sa procédure : fiche_etat_fournisseur.quickrep1.preview ;
Ensuit : on tape F12 pour retourner à la fiche et on double clique sur le composant « popupmenu1 » et on double
clique sur l’élément « imprimer » et on écrit dans sa procédure : fiche_etat_fournisseur.quickrep1.print ;
7- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément fournisseur (du sous
menu fichier)
Ensuite : on écrit dans la procédure : fiche_fournisseur.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la
confirmation de la liaison entre la fiche_menu et la fiche_fournisseur et on doit cliquer sur oui pour cette demande
de confirmation ; on recompile par Ctrl + F9 pour faire la liaison aussi entre la fiche_fournisseur et la
fiche_etat_fournisseur et on doit cliquer sur oui aussi pour cette demande de confirmation.

Remarques :
1- Pour que la fiche fournisseur se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel :
- On tape : Shift + F12 et on clique sur la « fiche_fournisseur » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»
2- on enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements
possibles)
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 56 -
FICHE FACTURE ACHAT


















1- choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_facture_achat».
Ensuite : choisir dans le menu Delphi:fichier=enregistrer, et dans le dossier « c:\commerce\source » nommer l’unité:
«facture_achat»
2- Insérer les composants suivants :
Palette Composant Propriété Valeur
Databasename Commerce
Tablename Facture_achat
Table1
Active True
Databasename Commerce
Tablename Fournisseur
Table2
Active True
Databasename Commerce
Tablename ligne_achat
Table3
Active True
Databasename Commerce
Tablename Produit
BDE
Table4
Active True
Datasource1 Dataset Table1
Datasource2 Dataset Table2 Accesbd
Datasource3 Dataset Table3
controlebd Dbgrid1 Datasource Datasource3
Caption Imprimer Speedbutton1
Glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer.bmp
Supplement
Bitbtn1 Kind Bkclose
databasename Commerce
Sql Select
sum(qte_achat*prix_achat)as HT,Sum(qte_achat*prix_achat*tva)as total_tva,
Sum (qte_achat*prix_achat*(1+tva)) as TTC from produit, ligne_achat
Where (reference = ref_prod) and (num_achat = :p)
Params Clique sur « p » et choisir dans la propriété datatype : « ftinteger »
BDE Query1
Active True
controlebd dbnavigator datasource Datasource1

3- Double clique sur le composant table1.
Ensuite : clique droit sur la petite fenêtre et clique dans le menu contextuel sur: «ajouter tous les champs».
Ensuite : glisser les champs de la table facture_achat un par vers le haut de la fiche, à la fin fermer la petite fenêtre.
Ensuite : supprimer le composant « dbedit3 » qui représente le champ « règlement » et le remplacer par le
composant « dbcombobox1 » de la palette « controlebd » et modifier les propriétés de ce « dbcombobox1 » comme
suite :
Datasource = datasource1
Datafield = règlement
Items = clique sur le petit bouton = écrire : cheque, espece, credit (chaque élément dans une ligne) = fermer la
fenêtre.
Ensuite : supprimer le composant « dbedit4 » qui représente le champ « code_four » et le remplacer par le
composant « dblookupcombobox1 » (palette « controlebd ») et modifier les propriétés de ce « dblookupcombobox1 »
comme suite :
Datasource = datasource1 Datafield = code_four Listsource = datasource2
Listfield = code_f; nom_f Keyfield = code_f
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 57 -
4- Pour mettre le curseur du clavier automatiquement dans le « dbedit1 » pour faciliter la saisie du numéro de la
facture on clique sur le composant « table1 » et dans son inspecteur d’objet double clique à droite de son
événement «afterinsert» on écrit dans sa procédure :
dbedit1.setfocus ;
- ensuite on peut contrôler la manipulation du clavier par :
- clique sur le composant dbedit1.
- Double clique sur son événement « OnKeyDown » et écrire dans sa procédure :
If key = vk_return then
Dbedit2.setfocus ;
- tapez F12 et clique sur le composant dbedit2.
- Double clique sur son événement « OnKeyDown » et écrire dans sa procédure :
If key = vk_return then
DbCombobox1.setfocus ;
- tapez F12 et clique sur le composant dbcombobox1.
- Double clique sur son événement « OnKeyDown » et écrire dans sa procédure :
If key = vk_return then
DblookupCombobox1.setfocus ;

5- Pour masquer le format d’affichage de la « date_achat » :
- on double clique sur le composant « table1 »
- dans la petite fenêtre on clique sur le champ « date_achat »
- on clique sur le petit bouton … de sa propriété « editmask »
- on clique dans la liste à droite de la fenêtre sur l’élément « date longue1 » et on clique sur Ok
- on ferme la petite fenêtre et la date_achat sera masquée par le format « __/__/__ »
6- pour faire une liaison maitre-detail entre la table maître« facture_achat », et la table détaille « ligne_achat » :
On clique sur le composant table3 « ligne_achat », et choisir dans sa propriété : mastersource ¬ datasource1.
Ensuite : dans sa propriété « masterfield » on clique sur petit bouton.
Ensuite : on choisit dans la liste à gauche le champ « num_achat » et à droite le champ « numero_a ».
Ensuite : clique sur le bouton « ajouter » ensuite sur le bouton Ok.
7- on peut renforcer cette fenêtre par les champs calculés comme suite :
On double clique sur le composant table3 « ligne_achat ».
Ensuite : on clique droit sur la petite fenêtre et on clique sur « ajouter tous les champs ».
Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».
Ensuite : on écrit le nom du champ : « designation » et on choisit le type du champ : « string » et on clique sur Ok.
Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».
Ensuite : on écrit le nom du champ : « prix_achat » et on choisit le type du champ : « currency » et on clique sur Ok.
Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».
Ensuite : on écrit le nom du champ : « tva » et on choisit le type du champ : « float » et on clique sur Ok.
Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».
Ensuite : on écrit le nom du champ : « total » et on choisit le type du champ : « currency » et on clique sur Ok.
A la fin : on ferme la petite fenêtre.
Ensuite : on clique sur le composant « table3 » (ligne_achat) et dans son inspecteur d’objet on clique sur l’onglé
événement
Ensuite : on double clique à droite de l’événement « oncalcfield » et on écrit dans la procédure :
Table4.open ;
Table4.setkey ; // préparation de la recherche du produit qui a la reference tapée
Table4.fieldbyname(‘reference’).asinteger := Table3.fieldbyname(‘ref_prod’).asinteger ;
If table4.gotokey then // si le produit existe, on introduit sa designation, prix, tva, et on calcul le total
Begin
Table3.fieldbyname(‘designation’).asstring:= Table4.fieldbyname(‘designation’).asstring;
Table3.fieldbyname(‘prix_achat’).ascurrency:= Table4.fieldbyname(‘prix_achat’).ascurrency ;
Table3.fieldbyname(‘tva’).asfloat:= Table4.fieldbyname(‘tva’).asfloat;
Table3.fieldbyname(‘total’).ascurrency:=Table3.fieldbyname(‘qte_achat’).asfloat*
Table4.fieldbyname(‘prix_achat’).ascurrency;
End;
// On profite l’occasion pour passer une valeur au paramètre à notre requête « query1 »
Query1.close;
Query1.parambyname(‘p’).asinteger :=table1.fieldbyname(‘numero_a’).asinteger ;
Query1.active:=true;

8- on tape F12 pour retourner à la fiche et on double clique sur le composant « query1 ».
Ensuite : clique doit sur la petite fenêtre et clique dans le menu contextuel sur : « ajouter tous les champs ».
Ensuite : glisser les champs de la requête facture un par un vers le bas de la fiche, à la fin fermer la petite fenêtre.
9- pour que la facture affiche son montant ttc en lettres on procède comme suite :
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 58 -
On insère un composant « Button1 » (palette standard) et dans sa propriété : « caption » on écrit : conversion.
Ensuite : on insère un composant Label (palette standard) et supprimer le contenu de sa propriété « caption »
Ensuite : on double clique sur le composant « Bouton1 » et on écrit dans sa procédure : (Supprimer son begin et end
et coller tous le code source suivant)

if c=0 then chiffre(p1);
if c=1 then decimale(p1);
if c=7 then
begin
chaine:=chaine+ ' Soixante'; p1:=p-60;
decimale(p1);
end;
if c=9 then
begin
chaine:=chaine+ ' Quatre Vingt'; p1:=p1-80;
decimale(p1);
end; end;

{Programme principal}
var abc:real;
begin
chaine:=' ';
n:=query1.fieldbyname('ttc').asfloat;
nombre:=trunc(n);
abc:=int(n*100);
dec:=trunc(abc) mod 100;
if nombre>=1000000000 then
begin
p:=nombre div 1000000000;
nombre:=nombre-p*1000000000;
if p<>0 then
begin
mille(p); chaine:=chaine+ ' Milliard';
end; end;
{milliards}
if nombre>=1000000 then
begin
p:=nombre div 1000000;
nombre:=nombre-p*1000000;
if p<>0 then
begin
mille(p); chaine:=chaine+ ' Million';
end; end;
{milliers}
if nombre>=1000 then
begin
p:=nombre div 1000; nombre:=nombre-p*1000;
if p<>1 then
begin
mille(p); chaine:=chaine+ ' Mille';
end else
chaine:=chaine+ 'mille';
end;
{simple}
if (0<=nombre) and (nombre<1000) then
begin
p:=nombre; mille(p);
end;
chaine:=chaine+ ' dinars' +' et';
begin q:=dec; mille(q);
IF q=0 THEN chaine:=chaine+ ' Zero CTS'
Else chaine:=chaine+ ' CTS'
end;
{chaine:=chaine+ ' dinars' +' et'+chaine1+' CTS';}
label8.caption:=chaine; end;
var chaine1,chaine:string;
p,nombre,q,DEC:integer;
N,n1:real;
procedure decimale(var p3:integer);
begin
if p3=10 then chaine:=chaine+ ' Dix';
if p3=11 then chaine:=chaine+ ' Onze';
if p3=12 then chaine:=chaine+ ' Douze';
if p3=13 then chaine:=chaine+ ' Treize';
if p3=14 then chaine:=chaine+ ' Quatorze';
if p3=15 then chaine:=chaine+ ' Quinze';
if p3=16 then chaine:=chaine+ ' Seize';
if p3=17 then chaine:=chaine+ ' Dix Sept';
if p3=18 then chaine:=chaine+ ' Dix Huit';
if p3=19 then chaine:=chaine+ ' Dix Neuf';
end;
procedure chiffre(var p2:integer);
begin
if p2=1 then chaine:=chaine+ ' Un';
if p2=2 then chaine:=chaine+ ' Deux';
if p2=3 then chaine:=chaine+ ' Trois';
if p2=4 then chaine:=chaine+ ' Quatre';
if p2=5 then chaine:=chaine+ ' Cinq';
if p2=6 then chaine:=chaine+ ' Six';
if p2=7 then chaine:=chaine+ ' Sept';
if p2=8 then chaine:=chaine+ ' Huit';
if p2=9 then chaine:=chaine+ ' Neuf';
end;
procedure mille(var p1:integer);
var c:integer;
begin
c:=p1 div 100;
if c=1 then chaine:=chaine+ ' Cent';
if c=2 then chaine:=chaine+ ' Deux Cent';
if c=3 then chaine:=chaine+ ' Trois Cent';
if c=4 then chaine:=chaine+ ' Quatre Cent';
if c=5 then chaine:=chaine+ ' Cinq Cent';
if c=6 then chaine:=chaine+ ' Six Cent';
if c=7 then chaine:=chaine+ ' Sept Cent';
if c=8 then chaine:=chaine+ ' Huit Cent';
if c=9 then chaine:=chaine+ ' Neuf Cent';
p1:=p1-c*100; c:=p1 div 10;
if c=2 then begin chaine:=chaine+ ' Vingt';
p1:=p1-c*10; chiffre(p1);
end;
if c=3 then begin chaine:=chaine+ ' Trente';
p1:=p1-c*10;
chiffre(p1);end;
if c=4 then begin chaine:=chaine+ ' Quarante';
p1:=p1-c*10;
chiffre(p1);end;
if c=5 then begin chaine:=chaine+ ' Cinquante';
p1:=p1-c*10;
chiffre(p1);end;
if c=6 then begin chaine:=chaine+ ' Soixante';
p1:=p1-c*10;
chiffre(p1);end;
if c=8 then begin chaine:=chaine+ ' Quatre Vingt';
p1:=p1-c*10;
chiffre(p1);end;
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 59 -
10- le « dbgrid1 » affiche le champ « num_achat » (de la table ligne_achat) qui contient bien sûr le même numéro
de la facture_achat actuelle (puisque il y’a une liaison maître_détail entre la table ligne_achat et la table facture_achat
par leurs champs communs num_achat et numero_a), donc ce champ répétera pour tous les enregistrements du
« dbgrid1 » le même numéro de facture, il vaut mieux alors de ne pas afficher ce dernier dans le « dbgrid1 ». pour
supprimer ce champ :
- double clic sur le « dbgrid1 ».
- clic en haut de la petite fenêtre sur le bouton « ajouter tous les champs »
- supprimer le champ « num_achat » et fermer la petite fenêtre.
(Le champ « num_achat » ne sera pas supprimé de la table « ligne_achat » mais seulement il ne sera pas affiché)
11- pour préparer l’impression de notre facture_achat on procède comme suite :
On insère une nouvelle fiche à notre logiciel par le choix dans le menu Delphi de : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom: « fiche_etat_facture_achat ».
Ensuite : (le menu Delphi): fichier=enregistrer, et dans le dossier « c:\commerce\source » nommer l’unité:
«etat_facture_achat».
Ensuite : on insère dans cette fiche un composant « quickrep1 » de la palette « qreport ».
Ensuite : on tape F12 et en haut de l’unité on écrit dans la liste «uses» le nom «facture_achat» et on compile Ctrl+F9
pour assurer la liaison entre la fiche_facture_achat et la fiche_etat_facture_achat.
Nb : par fois Delphi répète quelques unités de la partie uses si on écrit une nouvelle unité dans cette partie, donc on
doit supprimer les unités dupliquées si Delphi signal ce problème de répétition après la compilation du logiciel.
Ensuite : dans l’inspecteur d’objet du quickrep1 on écrit dans la propriété : zoom = 70
Ensuite : dans l’inspecteur d’objet du quickrep1 on choisit dans la propriété : dataset = « fiche_facture_achat.table3 »
Ensuite: choisir dans sa propriété Bands: hastitle=true; hascolumnheader=true; hasdetail=true; hassummary= true.
Ensuite : on insère les composants suivants de la palette « qreport » sur les bandes de ce quickrep1 comme suite:

bande Composant Propriété valeur
qrlabel1 caption société de commerce multiple
qrlabel2 caption Facture achat
qrlabel3 caption numero
dataset fiche_facture_achat.table1 qrdbtext1
datafield Numero_a
Qrlabel4 caption Date achat
dataset fiche_facture_achat.table1 Qrdbtext2
datafield Date_achat
Qrlabel5 caption reglement
dataset fiche_facture_achat.table1 Qrdbtext3
datafield Reglement_a
Qrlabel6 caption fournisseur
dataset fiche_facture_achat.table2
Titre
(agrandir la hauteur
de cette bande)
Qrdbtext4
datafield Nom_f
Qrlabel7 caption Reference
Qrlabel8 caption Designation
Qrlabel9 caption Qte achat
Qrlabel910 caption Prix unite
Qrlabel11 caption Tva
Entête de colonnes
Qrlabel12 caption total
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 60 -
dataset fiche_facture_achat.table3 Qrdbtext5
datafield reference
dataset fiche_facture_achat.table3 Qrdbtext6
datafield designation
dataset fiche_facture_achat.table3 Qrdbtext7
datafield Qte_achat
dataset fiche_facture_achat.table3 Qrdbtext8
datafield Prix_achat
dataset fiche_facture_achat.table3 Qrdbtext9
datafield tva
dataset fiche_facture_achat.table3
Detail
Qrdbtext10
datafield total
Qrlabel13 caption HT
dataset fiche_facture_achat.query1 Qrdbtext11
datafield HT
Qrlabel14 caption TOTAL TVA
dataset fiche_facture_achat.query1 Qrdbtext12
datafield TOTAL_TVA
Qrlabel15 caption TTC
dataset fiche_facture_achat.query1 Qrdbtext13
datafield TTC
Qrlabel16 caption Arrêtez la présente facture à la somme de
Resumé
(agrandir la hauteur
de cette bande)
Qrlabel17 caption

Remarque :
On peut utiliser les composants « Qrshape » de la palette « Qreport » pour encadrer les champs des tables
(composants qrdbtext ») et leurs entêtes de colonnes (composants « qrlabel ») pour avoir ensuite des tables
encadrées dans notre état d’impression. Les étapes sont :
- insérer dans la bande entête de colonnes des composants « Qrshape » pour chaque
« qrlabel » de cette bande pour les encadrer.
- Le « qrshape » au début cache le « qrlabel » qui va l’encadrer, donc on clique sur chaque
« qrshape » par le bouton doit de la sourie et on choisit dans le menu contextuel « mettre en
arrière plan ».
- Pour bien contrôler la position des « qrshape » on utilise les touches :
Ctrl + ¬ ¬¬ ¬ ou les autre touches de flèches.
- Pour bien contrôler la taille des « qrshape » on utilise les touches :
Shift + ¬ ¬¬ ¬ ou les autre touches de flèches.
- on presse sur la touche Shift et par sourie on clique sur tous les « qrshape » de la bande
« entête de colonnes » et en fin on lache la touche Shift et on tape les touches Ctrl + C pour
copier ces cadres.
- On clique sur la bande « detail » et on tape Ctrl + V pour coller les cadres dans cette bande.
- On déplace ces cadres par les touches Ctrl + ¬ ¬¬ ¬ et on clique sur ces cadres par le bouton
droit de la sourie et on clique sur « mettre en arrière plan ».
Ensuite : on tape Shift + F12 et on affiche la fiche « fiche_facture_achat »
Ensuite : et pour une impression bien présentée de la facture on insère un composant popupmenu (palette standard).
Ensuite : on double clique sur ce composant et on introduit les deux éléments «previsualiser» et «imprimer» dans
leurs propriétés «caption».
Ensuite : on ferme la petite fenêtre du « popupmenu » et on clique sur le composant « speedbutton1 » qui représente
l’impression et dans son inspecteur d’objet on choisit dans sa propriété « popupmenu » l’élément « popupmenu1 ».
Ensuite : pour programmer le composant popupmenu1 on double clique sur ce dernier et on double clique sur
l’élément « previsualiser » et on écrit dans sa procédure :
Fiche_etat_facture_achat.qrlabel17.caption := label8.caption ; // qrlabel17 reçoit le TTC en lettres.
Fiche_etat_facture_achat.quickrep1.preview ;

Ensuit : on tape F12 pour retourner à la fiche et on double clique sur le composant « popupmenu1 » et on double
clique sur l’élément « imprimer » et on écrit dans sa procédure :
Fiche_etat_facture_achat.qrlabel17.caption := label8.caption ;
Fiche_etat_facture_achat.quickrep1.print ;

12- lorsqu’on enregistre les modifications dans notre table1 (facture_achat) par le bouton « enregistrer » du
dbnavigator1, on doit ajouter les quantités_achat à la quantité du stock. On programme cela par le choix du
composant table1 et dans la procédure de son événement « afterpost » on écrit :

Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 61 -
table3.first ;
while not(table3.eof) do
begin
Table4.setkey ; // préparation de la recherche
Table4.fieldbyname(‘reference’).asinteger := Table3.fieldbyname(‘ref_prod’).asinteger ;
If table4.gotokey then
Begin
Table4.edit; //préparation de la modification
Table4.fieldbyname(‘qte_stock’).asfloat:=Table4.fieldbyname(‘qte_stock’).asfloat+
Table3.fieldbyname(‘qte_achat’).asfloat;
Table4.post;
End;
Table3.next;
End;

En fin : on enregistre tous le travail par : (le menu Delphi) : fichier = tout enregistrer
13- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément facture achat (du sous
menu Edition)
Ensuite : on écrit dans la procédure : fiche_facture_achat.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la
confirmation de la liaison entre la fiche_menu et la fiche_facture_achat et on doit cliquer sur oui pour cette demande
de confirmation ; on recompile par Ctrl + F9 pour faire la liaison aussi entre la fiche_facture_achat et la
fiche_etat_facture_achat et on doit cliquer sur oui aussi pour cette demande de confirmation.

Remarques :
1- Pour que la fiche facture achat se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du
logiciel : - On tape : Shift + F12 et on clique sur la « fiche_facture_achat » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»

2- on enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements
possibles)

FICHE FACTURE VENTE
























1- choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_facture_vente».
Ensuite : choisir dans le menu Delphi:fichier =enregistrer, et dans le dossier « c:\commerce\source » nommer l’unité:
«facture_ vente»

Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 62 -
2- Insérer les composants suivants :

Palette Composant Propriété Valeur
Databasename Commerce
Tablename Facture_vente
Table1
Active True
Databasename Commerce
Tablename client
Table2
Active True
Databasename Commerce
Tablename Ligne_vente
Table3
Active True
Databasename Commerce
Tablename Produit
BDE
Table4
Active True
Datasource1 Dataset Table1
Datasource2 Dataset Table2 Accesbd
Datasource3 Dataset Table3
controlebd Dbgrid1 Datasource Datasource3
Caption Imprimer Speedbutton1
Glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer.bmp
Supplement
Bitbtn1 Kind Bkclose
databasename Commerce
Sql Select
sum(qte_vente*prix_vente)as HT,Sum(qte_vente *prix_vente*tva)as total_tva,
Sum (qte_vente*prix_vente*(1+tva)) as TTC from produit, ligne_vente
Where (reference = ref_prod) and (num_vente = :p)
Params Clique sur « p » et choisir dans la propriété datatype : « ftinteger »
BDE Query1
Active True
controlebd dbnavigator datasource Datasource1

3- Double clique sur le composant table1.
Ensuite : clique droit sur la petite fenêtre et clique dans le menu contextuel sur: « ajouter tous les champs ».
Ensuite : glisser les champs de la table facture_vente un par vers le haut de la fiche, à la fin fermer la petite fenêtre.
Ensuite : supprimer le composant « dbedit3 » qui représente le champ « règlement » et le remplacer par le
composant « dbcombobox1 » de la palette « controlebd » et modifier les propriétés de ce « dbcombobox1 » comme
suite :
Datasource = datasource1
Datafield = règlement
Items = clique sur le petit bouton … et écrire : cheque, espece, credit (chacun dans une ligne) et fermer la fenêtre.
Ensuite : supprimer le composant « dbedit4 » qui représente le champ «code_cli» et le remplacer par le composant
« dblookupcombobox1 » (palette «controlebd») et modifier les propriétés de ce «dblookupcombobox1» comme suite :
Datasource = datasource1
Datafield = code_cli
Listsource = datasource2
Listfield = code_c; nom_c
Keyfield = code_c

4- Pour mettre le curseur du clavier automatiquement dans le « dbedit1 » pour faciliter la saisie du numéro de la
facture on clique sur le composant « table1 » et dans son inspecteur d’objet double clique à droite de son
événement : « afterinsert » on écrit dans sa procédure :
dbedit1.setfocus ;
- ensuite on peut contrôler la manipulation du clavier par :
- clique sur le composant dbedit1.
- Double clique sur son événement « OnKeyDown » et écrire dans sa procédure :
If key = vk_return then
Dbedit2.setfocus ;
- tapez F12 et clique sur le composant dbedit2.
- Double clique sur son événement « OnKeyDown » et écrire dans sa procédure :
If key = vk_return then
DbCombobox1.setfocus ;
- tapez F12 et clique sur le composant dbcombobox1.
- Double clique sur son événement « OnKeyDown » et écrire dans sa procédure :
If key = vk_return then
DblookupCombobox1.setfocus ;

Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 63 -
5- Pour masquer le format d’affichage de la « date_vente » :
- on double clique sur le composant « table1 »
- dans la petite fenêtre on clique sur le champ « date_vente »
- on clique sur le petit bouton … de sa propriété « editmask »
- on clique dans la liste à droite de la fenêtre sur l’élément « date longue1 » et on clique sur Ok
- on ferme la petite fenêtre et la date_vente sera masquée par le format « __/__/__ »

6- pour faire une liaison maitre-detail entre la table maître« facture_vente », et la table détaille « ligne_vente » :
On clique sur le composant table3 « ligne_vente », et choisir dans sa propriété : mastersource ¬ datasource1.
Ensuite : dans sa propriété « masterfield » on clique sur petit bouton.
Ensuite : on choisit dans la liste à gauche le champ « num_vente » et à droite le champ « numero_v ».
Ensuite : clique sur le bouton « ajouter » ensuite sur le bouton Ok.

7- on peut renforcer cette fenêtre par les champs calculés comme suite :
On double clique sur le composant table3 « ligne_vente ».
Ensuite : on clique droit sur la petite fenêtre et on clique sur « ajouter tous les champs ».
Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».
Ensuite : on écrit le nom du champ : « designation » et on choisit le type du champ : « string » et on clique sur Ok .
Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».
Ensuite : on écrit le nom du champ : « prix_vente » et on choisit le type du champ : « currency » et on clique sur Ok .
Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».
Ensuite : on écrit le nom du champ : « tva » et on choisit le type du champ : « float » et on clique sur Ok .
Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».
Ensuite : on écrit le nom du champ : « total » et on choisit le type du champ : « currency » et on clique sur Ok .
A la fin : on ferme la petite fenêtre.
Ensuite : on clique sur le composant « table3 » (ligne_vente) et dans son inspecteur d’objet on clique sur l’onglé
événement
Ensuite : on double clique à droite de l’événement « oncalcfield » et on écrit dans la procédure :

Table4.open ;
Table4.setkey ;
Table4.fieldbyname(‘reference’).asinteger := Table3.fieldbyname(‘ref_prod’).asinteger ;
If table4.gotokey then
Begin
Table3.fieldbyname(‘designation’).asstring:= Table4.fieldbyname(‘designation’).asstring;
Table3.fieldbyname(‘prix_vente’).ascurrency:= Table4.fieldbyname(‘prix_vente’).ascurrency ;
Table3.fieldbyname(‘tva’).asfloat:= Table4.fieldbyname(‘tva’).asfloat;
Table3.fieldbyname(‘total’).ascurrency:=Table3.fieldbyname(‘qte_vente’).asfloat*
Table4.fieldbyname(‘prix_vente’).ascurrency;
End;
// On profite l’occasion pour passer une valeur au paramètre à notre requête « query1 »
Query1.close;
Query1.parambyname(‘p’).asinteger :=table1.fieldbyname(‘numero_v’).asinteger ;
Query1.active:=true;

8- on tape F12 pour retourner à la fiche et on double clique sur le composant « query1 ».
Ensuite : clique doit sur la petite fenêtre et clique dans le menu contextuel sur : « ajouter tous les champs ».
Ensuite : glisser les champs de la requête facture un par un vers le bas de la fiche, à la fin fermer la petite fenêtre.

9- pour que la facture affiche son montant ttc en lettres on procède comme suite :
On insère un composant « Button1 » (palette standard) et dans sa propriété : « caption » on écrit : conversion.
Ensuite : on insère un composant Label (palette standard) et supprimer le contenu de sa propriété « caption »
Ensuite : on double clique sur le composant « Bouton1 » et on écrit dans sa procédure : (Supprimer son begin et end
et coller tous le code source suivant)
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 64 -
if c=0 then chiffre(p1);
if c=1 then decimale(p1);
if c=7 then
begin
chaine:=chaine+ ' Soixante';
p1:=p-60; decimale(p1);end;
if c=9 then
begin
chaine:=chaine+ ' Quatre Vingt';
p1:=p1-80; decimale(p1);
end; end;
{Programme principal}
var abc:real;
begin
chaine:=' ';
n:=query1.fieldbyname('ttc').asfloat;
nombre:=trunc(n);
abc:=int(n*100);
dec:=trunc(abc) mod 100;
if nombre>=1000000000 then
begin
p:=nombre div 1000000000;
nombre:=nombre-p*1000000000;
if p<>0 then
begin
mille(p); chaine:=chaine+ ' Milliard';
end; end;
{milliards}
if nombre>=1000000 then
begin
p:=nombre div 1000000;
nombre:=nombre-p*1000000;
if p<>0 then
begin
mille(p); chaine:=chaine+ ' Million';
end; end;
{milliers}
if nombre>=1000 then
begin
p:=nombre div 1000;
nombre:=nombre-p*1000;
if p<>1 then
begin
mille(p); chaine:=chaine+ ' Mille';
end else
chaine:=chaine+ 'mille';
end;
{simple}
if (0<=nombre) and (nombre<1000) then
begin
p:=nombre; mille(p);
end;
chaine:=chaine+ ' dinars' +' et';
begin q:=dec; mille(q);
IF q=0 THEN
chaine:=chaine+ ' Zero CTS'
Else
chaine:=chaine+ ' CTS'
end;
{chaine:=chaine+ ' dinars' +' et'+chaine1+' CTS';}
label8.caption:=chaine;
end;

var chaine1,chaine:string;
p,nombre,q,DEC:integer;
N,n1:real;
procedure decimale(var p3:integer);
begin
if p3=10 then chaine:=chaine+ ' Dix';
if p3=11 then chaine:=chaine+ ' Onze';
if p3=12 then chaine:=chaine+ ' Douze';
if p3=13 then chaine:=chaine+ ' Treize';
if p3=14 then chaine:=chaine+ ' Quatorze';
if p3=15 then chaine:=chaine+ ' Quinze';
if p3=16 then chaine:=chaine+ ' Seize';
if p3=17 then chaine:=chaine+ ' Dix Sept';
if p3=18 then chaine:=chaine+ ' Dix Huit';
if p3=19 then chaine:=chaine+ ' Dix Neuf';
end;
procedure chiffre(var p2:integer);
begin
if p2=1 then chaine:=chaine+ ' Un';
if p2=2 then chaine:=chaine+ ' Deux';
if p2=3 then chaine:=chaine+ ' Trois';
if p2=4 then chaine:=chaine+ ' Quatre';
if p2=5 then chaine:=chaine+ ' Cinq';
if p2=6 then chaine:=chaine+ ' Six';
if p2=7 then chaine:=chaine+ ' Sept';
if p2=8 then chaine:=chaine+ ' Huit';
if p2=9 then chaine:=chaine+ ' Neuf';
end;
procedure mille(var p1:integer);
var c:integer;
begin
c:=p1 div 100;
if c=1 then chaine:=chaine+ ' Cent';
if c=2 then chaine:=chaine+ ' Deux Cent';
if c=3 then chaine:=chaine+ ' Trois Cent';
if c=4 then chaine:=chaine+ ' Quatre Cent';
if c=5 then chaine:=chaine+ ' Cinq Cent';
if c=6 then chaine:=chaine+ ' Six Cent';
if c=7 then chaine:=chaine+ ' Sept Cent';
if c=8 then chaine:=chaine+ ' Huit Cent';
if c=9 then chaine:=chaine+ ' Neuf Cent';
p1:=p1-c*100; c:=p1 div 10;
if c=2 then begin
chaine:=chaine+ ' Vingt';
p1:=p1-c*10; chiffre(p1); end;
if c=3 then begin
chaine:=chaine+ ' Trente';
p1:=p1-c*10; chiffre(p1);end;
if c=4 then begin
chaine:=chaine+ ' Quarante';
p1:=p1-c*10; chiffre(p1);end;
if c=5 then begin
chaine:=chaine+ ' Cinquante';
p1:=p1-c*10; chiffre(p1);end;
if c=6 then begin
chaine:=chaine+ ' Soixante';
p1:=p1-c*10; chiffre(p1);end;
if c=8 then begin
chaine:=chaine+ ' Quatre Vingt';
p1:=p1-c*10; chiffre(p1);end;


Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 65 -

10- le « dbgrid1 » affiche le champ « num_vente » (de la table ligne_vente) qui contient bien sûr le même numéro
de la facture_vente actuelle (puisque il y’a une liaison maître_détail entre la table ligne_vente et la table
facture_vente par leurs champs communs num_vente et numero_v), donc ce champ répétera pour tous les
enregistrements du « dbgrid1 » le même numéro de facture, il vaut mieux alors de ne pas afficher ce dernier dans
le « dbgrid1 ». pour supprimer ce champ :
- double clic sur le « dbgrid1 ».
- clic en haut de la petite fenêtre sur le bouton « ajouter tous les champs »
- supprimer le champ « num_vente » et fermer la petite fenêtre.
(Le champ « num_vente » ne sera pas supprimé de la table « ligne_vente » mais seulement il ne sera pas affiché)

11- pour préparer l’impression de notre facture_vente on procède comme suite :
On insère une nouvelle fiche à notre logiciel par le choix dans le menu Delphi de : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom: « fiche_etat_facture_vente ».
Ensuite : (le menu Delphi): fichier =enregistrer, et dans le dossier « c:\commerce\source » nommer l’unité:
«etat_facture_vente».
Ensuite : on insère dans cette fiche un composant « quickrep1 » de la palette « qreport ».
Ensuite : on tape F12 et en haut de l’unité on écrit dans la liste «uses» le nom «facture_vente» et on compile Ctrl+F9
pour assurer la liaison entre la fiche_facture_vente et la fiche_etat_facture_vente.
Nb : par fois Delphi répète quelques unités de la partie uses si on écrit une nouvelle unité dans cette partie, donc on
doit supprimer les unités dupliquées si Delphi signal ce problème de répétition après la compilation du logiciel.
Ensuite : dans l’inspecteur d’objet du quickrep1 on écrit dans la propriété : zoom = 70
Ensuite : dans l’inspecteur d’objet du quickrep1 on choisit dans la propriété : dataset = « fiche_facture_vente.table3 »
Ensuite :choisir dans sa propriété Bands: hastitle=true; hascolumnheader=true; hasdetail=true; hassummary= true.
Ensuite : on insère les composants suivants de la palette « qreport » sur les bandes de ce quickrep1 comme suite:



bande Composant Propriété valeur
qrlabel1 caption société de commerce multiple
qrlabel2 caption Facture vente
qrlabel3 caption numero
dataset fiche_facture_vente.table1 qrdbtext1
datafield Numero_v
Qrlabel4 caption Date vente
dataset fiche_facture_vente.table1 Qrdbtext2
datafield Date_vente
Qrlabel5 caption reglement
dataset fiche_facture_vente.table1 Qrdbtext3
datafield Reglement_v
Qrlabel6 caption client
dataset fiche_facture_vente.table2
Titre
(agrandir la hauteur
de cette bande)
Qrdbtext4
datafield Nom_c
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 66 -
Qrlabel7 caption Reference
Qrlabel8 caption Designation
Qrlabel9 caption Qte vente
Qrlabel910 caption Prix unite
Qrlabel11 caption Tva
Entête de colonnes
Qrlabel12 caption total
dataset fiche_facture_vente.table3 Qrdbtext5
datafield reference
dataset fiche_facture_vente.table3 Qrdbtext6
datafield designation
dataset fiche_facture_vente.table3 Qrdbtext7
datafield Qte_vente
dataset fiche_facture_vente.table3 Qrdbtext8
datafield Prix_vente
dataset fiche_facture_vente.table3 Qrdbtext9
datafield tva
dataset fiche_facture_vente.table3
Detail
Qrdbtext10
datafield total
Qrlabel13 caption HT
dataset fiche_facture_vente.query1 Qrdbtext11
datafield HT
Qrlabel14 caption TOTAL TVA
dataset fiche_facture_vente.query1 Qrdbtext12
datafield TOTAL_TVA
Qrlabel15 caption TTC
dataset fiche_facture_vente.query1 Qrdbtext13
datafield TTC
Qrlabel16 caption Arrêtez la présente facture à la somme de
Resumé
(agrandir la hauteur
de cette bande)
Qrlabel17 caption

Remarque :
On peut utiliser les composants « Qrshape » de la palette « Qreport » pour encadrer les champs des tables
(composants qrdbtext ») et leurs entêtes de colonnes (composants « qrlabel ») pour avoir ensuite des tables
encadrées dans notre état d’impression.
Les étapes sont :
- insérer dans la bande entête de colonnes des composants « Qrshape » pour chaque
« qrlabel » de cette bande pour les encadrer.
- Le « qrshape » au début cache le « qrlabel » qui va l’encadrer, donc on clique sur chaque
« qrshape » par le bouton doit de la sourie et on choisit dans le menu contextuel « mettre en
arrière plan ».
- Pour bien contrôler la position des « qrshape » on utilise les touches :
Ctrl + ¬ ¬¬ ¬ ou les autre touches de flèches.
- Pour bien contrôler la taille des « qrshape » on utilise les touches :
Shift + ¬ ¬¬ ¬ ou les autre touches de flèches.
- on presse sur la touche Shift et par sourie on clique sur tous les « qrshape » de la bande
« entête de colonnes » et en fin on lache la touche Shift et on tape les touches Ctrl + C pour
copier ces cadres.
- On clique sur la bande « détail » et on tape Ctrl + V pour coller les cadres dans cette bande.
- On déplace ces cadres par les touches Ctrl + ¬ ¬¬ ¬ et on clique sur ces cadres par le bouton
droit de la sourie et on clique sur « mettre en arrière plan ».

Ensuite : on tape Shift + F12 et on affiche la fiche « fiche_facture_vente »
Ensuite : et pour une impression bien présentée de la facture on insère un composant popupmenu (palette standard).
Ensuite : on double clique sur ce composant et on introduit les deux éléments «previsualiser» et «imprimer» dans
leurs propriétés «caption».
Ensuite : on ferme la petite fenêtre du « popupmenu » et on clique sur le composant « speedbutton1 » qui représente
l’impression et dans son inspecteur d’objet on choisit dans sa propriété « popupmenu » l’élément « popupmenu1 ».
Ensuite : pour programmer le composant popupmenu1 on double clique sur ce dernier et on double clique sur
l’élément « previsualiser » et on écrit dans sa procédure :
Fiche_etat_facture_vente.qrlabel17.caption := label8.caption ;
Fiche_etat_facture_vente.quickrep1.preview ;

Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 67 -
Ensuit : on tape F12 pour retourner à la fiche et on double clique sur le composant « popupmenu1 » et on double
clique sur l’élément « imprimer » et on écrit dans sa procédure :
Fiche_etat_facture_vente.qrlabel17.caption := label8.caption ;
Fiche_etat_facture_vente.quickrep1.print ;
12- lorsqu’on enregistre les modifications dans notre table1 (facture_vente) par le bouton « enregistrer » du
dbnavigator1, on doit supprimer les quantités_vente des quantité_stock. On programme cela par le choix du
composant table1 et dans la procédure de son événement « afterpost » on écrit :
table3.first ;
while not(table3.eof) do
begin
Table4.setkey ; // préparation de la recherche
Table4.fieldbyname(‘reference’).asinteger := Table3.fieldbyname(‘ref_prod’).asinteger ;
If table4.gotokey then
Begin
Table4.edit; //préparation de la modification
Table4.fieldbyname(‘qte_stock’).asfloat:=Table4.fieldbyname(‘qte_stock’).asfloat-
Table3.fieldbyname(‘qte_vente’).asfloat;
Table4.post;
End;
Table3.next;
End;
En fin : on enregistre tous le travail par : (le menu Delphi) : fichier = tout enregistrer
13- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément facture vente (du sous
menu Edition)
Ensuite : on écrit dans la procédure : fiche_facture_vente.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la
confirmation de la liaison entre la fiche_menu et la fiche_facture_vente et on doit cliquer sur oui pour cette demande
de confirmation ; on recompile par Ctrl + F9 pour faire la liaison aussi entre la fiche_facture_vente et la
fiche_etat_facture_vente et on doit cliquer sur oui aussi pour cette demande de confirmation.

Remarques :
1- Pour que la fiche facture vente se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du
logiciel :
- On tape : Shift + F12 et on clique sur la « fiche_facture_vente » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position ¬ poScreenCenter»
2- on enregistre notre travail par le menu Delphi : fichier ¬ tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements
possibles)

LA FICHE CONSULTATION ACHATS
















1. choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom :
« fiche_consultation_achat».
Ensuite : (le menu Delphi): fichier= enregistrer, et dans le dossier « c:\commerce\source » nommer l’unité:
«consultation_achat»
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 68 -
2. insérer les composants suivants :
Palette Composant Propriété Valeur
supplement bitbtn kind bkclose
1 label Caption numéro facture standard
1 edit text
databasename Commerce
Sql Select * from facture_achat Where numero_a = :num
Params Clique sur « num » et choisir dans la propriété datatype : « ftinteger »
BDE Query1
Active True
Accéesbd Datasource1 dataset Query1
Supplement Speedbutton1 glyph (choisir une image)
2 label Caption Date début standard
3 label Caption Date fin
1 datetimepicker 32 win
2 datetimepicker
supplement Speedbutton2 glyph (choisir une image)
databasename commerce
Sql Select * from facture_achat
Where (date_achat >=:debut) and (date_achat <=:fin)
Clique sur « debut » et choisir dans la propriété datatype : « ftdate » Params
Clique sur « fin » et choisir dans la propriété datatype : « ftdate »
BDE Query2
Active True
4 label Caption Règlement
text
standard
1 combobox
items cheque
espece
credit
Supplement Speedbutton3 glyph (choisir une image)
databasename commerce
Sql Select * from facture_achat Where reglement_a =:reg
Params Clique sur « reg » et choisir dans la propriété datatype : « ftstring »
Query3
Active True
databasename Commerce
tablename Fournisseur
BDE
Table1
Active True
Accèsbd Datasource2 dataset Table1
Standard Label1 caption Fournisseur
listsource 2 datasource
listfield f _ nom ; f _ code
controlebd 1 dblookupcomb obox
keyfield Code_f
databasename Commerce
Sql Select * from facture_achat Where code_four =:cod
Params Clique sur « cod » et choisir dans la propriété datatype : « ftinteger »
BDE Query4
Active True
Supplement Speedbutton4 glyph (choisir une image)
databasename commerce
tablename Ligne_achat
active true
mastersource 1 datasource
BDE Table2
masterfield Clique sur « num_achat » et clique sur « numero_a » et clique sur Ajouter et clique sur Ok
Accesbd 3 datasource dataset 2 table
1 dbgrid datasource 1 datasource controlebd
2 dbgrid datasource 3 datasource

3. double clique sur le composant « speedbutton1 » et écrire :
Query1.close ;
Query1.params[0].asinteger :=strtoint(edit1.text);
Query1.active :=true ;
Datasource1.dataset :=Query1 ;

4. tapez F12 et double clique sur le composant « speedbutton2 » et écrire:
Query2.close ;
Query2.params[0].asdate :=datetimepicker1.date;
Query2.params[1].asdate :=datetimepicker2.date;
Query2.active :=true ;
Datasource1.dataset :=Query2 ;


Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 69 -
5. tapez F12 et double clique sur le composant « speedbutton3 » et écrire:
Query3.close ;
Query3.params[0].asstring :=combobox1.text;
Query3.active :=true ;
Datasource1.dataset :=Query3 ;

6. tapez F12 et double clique sur le composant « speedbutton4 » et écrire:
Query4.close ;
Query4.params[0].asinteger :=strtoint(dblookupcombobox1.text);
Query4.active :=true ;
Datasource1.dataset :=Query4 ;

7. cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément Achats (du sous menu
Consultation)
Ensuite : on écrit dans la procédure : fiche_consultation_achat.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la
confirmation de la liaison entre la fiche_menu et la fiche_consultation_achat et on doit cliquer sur Oui pour cette
demande de confirmation.
Remarques :
1- Pour que la fiche consultation achat se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du
logiciel :
- On tape : Shift + F12 et on clique sur la « fiche_consultation_achat » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»
2- on enregistre notre travail par le menu Delphi : fichier =tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles)

FICHE CONSULTATION VENTES
















1- choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom :
« fiche_consultation_vente».
Ensuite : (le menu Delphi): fichier = enregistrer, et dans le dossier « c:\commerce\source » nommer l’unité:
«consultation_vente»
2- insérer les composants suivants :
Palette Composant Propriété Valeur
supplement bitbtn kind bkclose
1 label Caption numéro facture standard
1 edit text
databasename Commerce
Sql Select * from facture_vente Where numero_v = :num
Params Clique sur « num » et choisir dans la propriété datatype : « ftinteger »
BDE Query1
Active True
Accéesbd Datasource1 dataset Query1
Supplement Speedbutton1 glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\find.bmp
2 label Caption Date début standard
3 label Caption Date fin
32 win 1 datetimepicker
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 70 -
2 datetimepicker
supplement 2 speeddbutton glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\find.bmp
databasename commerce
Sql Select * from facture_vente
Where (date_vente >=:debut) and (date_vente <=:fin)
Clique sur « debut » et choisir dans la propriété datatype : « ftdate » Params
Clique sur « fin » et choisir dans la propriété datatype : « ftdate »
BDE Query2
Active True
4 label Caption Règlement
text
standard
1 combobox
items cheque
espece
credit
Supplement Speedbutton3 glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\find.bmp
databasename commerce
Sql Select * from facture_vente Where reglement_v =:reg
Params Clique sur « reg » et choisir dans la propriété datatype : « ftstring »
Query3
Active True
databasename Commerce
tablename client
BDE
Table1
Active True
Accèsbd Datasource2 dataset Table1
Standard Label1 caption client
listesource 2 datasource
listefield c _ nom ; c _ code
controlebd 1 dblokupcombbox
keyfield c _ code
databasename Commerce
Sql Select * from facture_vente Where code_cli =:cod
Params Clique sur « cod » et choisir dans la propriété datatype : « ftinteger »
BDE Query4
Active True
Supplement Speedbutton4 glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\find.bmp
databasename commerce
tablename vente _ ligne
active true
mastersource 1 datasource
Table2
masterfield Clique sur « num_vente » et clique sur « numero_v » et clique sur Ajouter et clique sur
Ok
BDE





AccesBd
3 datasource dataset 2 table
1 dbgrid datasource 1 datasour ce controlebd
2 dbgrid datasource 3 datasource

8. double clique sur le composant « speedbutton1 » et écrire :
Query1.close ;
Query1.params[0].asinteger :=strtoint(edit1.text);
Query1.active :=true ;
Datasource1.dataset :=Query1 ;

9. tapez F12 et double clique sur le composant « speedbutton2 » et écrire:
Query2.close ;
Query2.params[0].asdate :=datetimepicker1.date;
Query2.params[1].asdate :=datetimepicker2.date;
Query2.active :=true ;
Datasource1.dataset :=Query2 ;

10. tapez F12 et double clique sur le composant « speedbutton3 » et écrire:
Query3.close ;
Query3.params[0].asstring :=combobox1.text;
Query3.active :=true ;
Datasource1.dataset :=Query3 ;

11. tapez F12 et double clique sur le composant « speedbutton4 » et écrire:
Query4.close ;
Query4.params[0].asinteger :=strtoint(dblookupcombobox1.text);
Query4.active :=true ;
Datasource1.dataset :=Query4 ;


Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 71 -
12. cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : double clique sur le « mainmenu1 » et double clique sur son élément Ventes (sous menu Consultation)
Ensuite : on écrit dans la procédure : fiche_consultation_vente.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la
confirmation de la liaison entre la fiche_menu et la fiche_consultation_vente et on doit cliquer sur Oui pour cette
demande de confirmation.

Remarques :
1- Pour que la fiche consultation vente se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du
logiciel : - On tape : Shift + F12 et on clique sur la « fiche_consultation_vente » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»
2- on enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles)


FICHE STATISTIQUES_REGLEMENT




















1- choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name»le
nom:«fiche_statistiques_reglement».
Ensuite:(le menu Delphi): fichier =enregistrer, et dans le dossier « c:\commerce\source » nommer
l’unité:«statistiques_reglement»

2- Insérer les composants suivants :
Palette Composant Propriété Valeur
databasename commerce
Sql Select reglement_a, count(reglement_a) as nombre
from facture_achat group by reglement_a
Query1
Active True
databasename commerce
Sql Select reglement_v, count(reglement_v) as nombre
from facture_vente group by reglement_v
BDE

Query2
Active True
supplement bitbtn kind bkclose
Pagecontrol1
Clique droit sur ce
composant et clique sur
« nouvelle page »
Caption Reglement des ach ats
32 win
Clique droit sur ce
composant et clique sur
« nouvelle page »
Caption Reglement des ventes
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 72 -
controlebd DBchart1 (Insérer ce composant sur le composant « pagecontrole1 » dans la page « règlement des achats » )
(il faut cliquer sur l’onglés « reg lement des achats » et cliquer ensuite dans le cadre intérieur de cette page)
Et double clique sur ce composant « dbchart1 »
Et clique sur l’onglé inférieur « série »
Et clique sur le bouton Ajouter
Et clique sur le graphe de la forme « sectoriel »
Et clique sur le bouton Ok
Et clique sur l’onglé supérieur « série »
Et clique sur l’onglé « source de données »
Et choisir dans la liste l’élément « dataset »
Et choisir dans la liste dataset l’élément « query1 »
Et choisir dans la liste « libellé » l’élément « règlement »
Et choisir dans la liste « sectoriel » l’élément « nombre »
A la fin clique sur Fermer
controlebd DBchart2 (Insérer ce composant sur le composant « pagecontrole1 » dans la page « règlement des ventes »)
(il faut cliquer sur l’onglés « règlement des ventes » et cliquer ensuite dans le cadre intérieur de cette page)
Et double clique sur ce composant « dbchart2 »
Et clique sur l’onglé inférieur « série »
Et clique sur le bouton Ajouter
Et clique sur le graphe de la forme « sectoriel »
Et clique sur le bouton Ok
Et clique sur l’onglé supérieur « série »
Et clique sur l’onglé « source de données »
Et choisir dans la liste l’élément « dataset »
Et choisir dans la liste dataset l’élément « query2 »
Et choisir dans la liste « libellé » l’élément « règlement »
Et choisir dans la liste « sectoriel » l’élément « nombre »
A la fin clique sur Fermer
Remarque :
Pour que la fiche statistiques achats affiche toujours les dernières modifications automatiquement (rafraîchissement
automatique des données du query1 et query2) : Clique sur la fiche_statistiques_reglement
Dans son inspecteur d’objet double clique à droite de l’événement « onactivate »
Ensuite : écrire le code source suivant dans la procédure correspondante :
Query1.close ;
Query1.active :=true ;
Query2.close ;
Query2.active :=true ;

3- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément Reglements (du sous
menu statistiques)
Ensuite : on écrit dans la procédure : fiche_statistiques_reglement.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la
confirmation de la liaison entre la fiche_menu et la fiche_statistiques_reglement et on doit cliquer sur Oui pour cette
demande de confirmation.
Remarques :
1- Pour que la fiche statistique règlement se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution
du logiciel : - On tape : Shift + F12 et on clique sur la « fiche_statistique_reglement » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»
2- On enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles)

FICHE MOT DE PASSE








1-choisir dans le menu Delphi : fichier = nouveau = dialogue = dialogue de mot de passe.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name» le nom: « fiche_passe».
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 73 -
Ensuite : (le menu Delphi) : fichier =enregistrer, et dans le dossier « c:\commerce\source » nommer l’unité : «passe»
2- insérer un composant « table1 » (palette BDE) et manipuler ses propriétés :
Databasename = commerce table name = protection active= true.

3- Double clique sur le bouton Ok et écrire dans sa procédure :
if password.text=table1.fieldbyname('password').asstring then
fiche_menu.showmodal
else
begin
showmessage('mot de passe incorrecte');
password.clear;
password.setfocus;
end;

4- double clique sur le Bouton Annuler et écrire dans sa procédure : application.terminate ;

remarques importantes:
a- Pour que la fiche_passe se lance la première lors de chaque éxécution du logiciel on choisit dans le menu Delphi :
Projet = options = dans l’onglés « fiche » = dans la liste « fiche principale » = choisir : « fiche_passe » = Ok
b- Il faut ajouter les deux unités : messages, dialogs, dans la liste uses de l’unité « passe »
Nb : par fois Delphi répète quelques unités de la partie uses si on écrit une nouvelle unité dans cette partie, donc on
doit supprimer les unités dupliquées si Delphi signal ce problème de répétition après la compilation du logiciel.
+ Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles)


FICHE PROTECTION
















1- choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name»le nom:« fiche_protection ».
Ensuite : (le menu Delphi) : fichier =enregistrer, et dans le dossier « c:\commerce\source » nommer l’unité :
«protection»

2- Insérer les composants suivants :
Palette Composant Propriété Valeur
1 bitbtn kind bkclose supplement
2 bitbtn kind bkok
1 label caption ancien mot de pass e
text 1 edit
passwordchar *
2 label caption nouveau mot de passe
text 2 edit
passwordchar *
3 label caption confirmation
text
standard
3 edit
passwordchar *
databasename commerce
tablename protection
BDE 1 table
Active True


Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 74 -
3- double clique sur le composant « BitBtn2 » et écrire dans sa procédure:
If edit1.text = table1.fieldbyname(‘password’).asstring then
If edit2.text = edit3.text then
Begin
Table1.edit;
Table1.fieldbyname(‘password’).asstring:=edit2.text;
Table1.post;
Showmessage(‘ la modification du mot de passe est effectuée ’)
End
Else Showmessage(‘ la confirmation du mot de passe est incorrecte ’)
Else Showmessage(‘ l’’ancien mot de passe est incorrecte ’) ;

4- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément protection (du sous
menu outils)
Ensuite : on écrit dans la procédure : fiche_protection.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la
confirmation de la liaison entre la fiche_menu et la fiche_protection et on doit cliquer sur Oui pour cette demande de
confirmation.

Remarques :
1- Pour que la fiche protection se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel :
- On tape : Shift + F12 et on clique sur la « fiche_protection » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»
2- on enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche.

FICHE ARCHIVAGE














1- choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name» le nom:« fiche_archivage ».
Ensuite : (le menu Delphi) : fichier =enregistrer, et dans le dossier « c:\commerce\source » nommer l’unité:«
archivage»
2- tapez F12 et dans la liste uses de l’unité archivage Il faut ajouter l’unité : ShellAPI, .
3- tapez F12 pour revenir à la fiche et Insérer les composants suivants :
Palette Composant Propriété Valeur
name fichier FileListBox1
Mask *.db
DirectoryListBox1 name driverlist
name driver DriveComboBox1
Dirlist driverlist
Filelist fichier
win3.1
FilterComboBox1
filter *.db
BitBtn1 kind bkclose
caption archiver
supplement
Speedbutton1
glyph C:\Program Files\Fichiers communs\Borland shared\Images\Buttons\floppy.bmp
standard Label1 caption lecteur
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 75 -

4- Double clique sur le composant speedbutton1 et écrire dans sa procédure :
if CopyFolder('c:\commerce\base', driverlist.Directory) then
ShowMessage(‘Archivage effectué avec succès') else
ShowMessage('Archivage non effectué');

5- il faut inserer avant la procedure BitBtn4Click la fonction suivante :
function CopyFolder(FromFld, ToFld: string): boolean;
var fos: TSHFileopStruct;
begin
FillChar(fos, SizeOf(fos),0);
with fos do
begin
wFunc := FO_COPY;
pFrom := PChar(FromFld+#0);
pTo := PChar(ToFld+#0);
fFlags := FOF_SILENT or FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;
end;
Result := ShFileOperation(fos)=0;
end;

6- pour avoir un bon interface on doit cacher les deux composants «FileListBox1» et «FilterComboBox1»comme
suite:
- clique par le bouton droit de la sourie sur le composant : « FileListBox1 » nommé « fichier » et choisir dans le menu
contextuel : « mettre en arrière plan » et mettre ce composant au-dessous du « DirectoryListBox1 » (driverlist).
- aussi, clique par le bouton droit de la sourie sur le composant : « FilterComboBox1» et choisir dans le menu
contextuel : « mettre en arrière plan » et mettre ce composant au-dessous du « DirectoryListBox1 » (driverlist).
7- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément archivage (du sous
menu outils)
Ensuite : on écrit dans la procédure : fiche_archivage.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la
confirmation de la liaison entre la fiche_menu et la fiche_archivage et on doit cliquer sur Oui pour cette demande de
confirmation.
Remarques :
1- Pour que la fiche archivage se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel :
- On tape : Shift + F12 et on clique sur la « fiche_archivage » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»
2- on enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles)
+ Cette fiche necessite la création d'un dossier dans disque dur (nommé par exemple : archive2007) qui sera le
dossier ou on va archiver notre base de données.

FICHE INVENTAIRE




















Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 76 -
1- choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name» le nom:« fiche_inventaire».
Ensuite : (le menu Delphi) : fichier =enregistrer, et dans le dossier « c:\commerce\source » nommer l’unité:«
inventaire»
2- Insérer les composants suivants :
Palette Composant Propriété Valeur
1 bitbtn kind bkclose
caption Preparer 1 speedbutton
glyph (choisissez une image adéquate)
caption ajuster
supplement
2 speedbutton
glyph (choisissez une image adéquate)
Databasename Commerce
Tablename inventaire
BDE Table1
Active True
Accesbd Datasource1 Dataset Table1
Controlebd Dbgrid1 Datasource Dataource1
Databasename Commerce
Tablename Ligne_inventaire
Active True
Master Source 1 datasource
BDE Table2
Master Field Clique sur « num_inv » et clique sur « numero_i »et clique sur Ajouter et clique sur Ok
Accesbd Datasource2 Dataset Table2
Controlebd Dbgrid2 Datasource Dataource2
Databasename Commerce
Tablename produit
BDE Table3
Active True
3- insérer le champ calculé « écart » qui représente la différence entre le stock théorique et le stock réel comme
suite :
On double clique sur le composant table2 « ligne_inventaire »
Ensuite : on clique droit sur la petite fenêtre et on clique sur « ajouter tous les champs ».
Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».
Ensuite : on écrit le nom du champ : « écart » et on choisit le type du champ : « float » et on clique sur Ok.
Ensuite : on clique sur le composant table2 et dans son inspecteur d’objet on clique sur l’onglés « événements ».
Ensuite : on double clique à droite de l’événement « oncalcfields » et on écrit dans la procédure :
table2.fieldbyname(‘ecart’).asfloat := table2.fieldbyname(‘qte_theorique’).asfloat –
table2.fieldbyname(‘qte_reelle’).asfloat ;

4- on prépare l’inventaire par un double clic sur le speedbutton1 « preparer » et on écrit dans sa procédure :
(Supprimer le begin et end de la procédure et coller tous le code source suivant)

var trouver : boolean;
begin
table2.first;
trouver:=false;
while not(table2.eof) do
begin
if table2.fieldbyname('ref_prod').asinteger=table3.fieldbyname('reference').asinteger then
trouver:=true;
table2.next;
end;
if trouver then
showmessage('inventaire deja preparé')
else
begin
table3.first;
while not(table3.eof)do
begin
table2.append;// on copie les produits de la table produit vers la table ligne_invertaire.
table2.FieldByName(‘ref_prod').asinteger:=table3.FieldByName('reference’).asinteger;
table2.FieldByName('qte_theorique').asfloat:=table3.FieldByName('qte_stock').asfloat;
table2.post;
table3.next;
end;
end;
end;
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 77 -
5- après avoir saisie les qte_reelle de chaque produit, on ajuste le stock sur ordinateur (la quantite_stock sera
donc la quantité réelle) par un double clic sur le speedbutton2 « ajuster » et on écrit dans sa procédure :
table3.first;
table2.first;
while not(table3.eof)do
begin
table3.edit;
table3.FieldByName('qte_stock').asfloat:=table2.FieldByName('qte_reelle').asfloat;
table3.post;
table2.next;
table3.next;
end;
table3.refresh;

En fin : on enregistre tous le travail par : (le menu Delphi) : fichier = tout enregistrer
6- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément inventaire (du sous
menu outils)
Ensuite : on écrit dans la procédure : fiche_inventaire.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la
confirmation de la liaison entre la fiche_menu et la fiche_inventaire et on doit cliquer sur Oui pour cette demande de
confirmation.

Remarques :
1- Pour que la fiche inventaire se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel :
- On tape : Shift + F12 et on clique sur la « fiche_inventaire » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»
2- on enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements
possibles)

FICHE CLOTURE

















1- choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name» le nom:« fiche_Cloture».
Ensuite : (le menu Delphi) : fichier =enregistrer, et dans le dossier « c:\commerce\source » nommer l’unité:« Cloture»

2- Insérer les composants suivants :
Palette Composant Propriété Valeur
caption Vider Table Facture Achat 1 speedbutton
glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\trash.bmp
caption Vider Table Ligne Achat 2 speedbutton
glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\trash.bmp
caption Vider Table Facture Vente 3 speedbutton
glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\trash.bmp
caption Vider Table Ligne Vente
supplement
4 speedbutton
glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\trash.bmp
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 78 -
caption Vider Table Inventaire 5 speedbutton
glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\trash.bmp
caption Vider Table Ligne Inventaire 6 speedbutton
glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\trash.bmp
Bitbtn1 kind bkclose
Databasename Commerce
Tablename Facture_achat
Table1
Active True
Databasename Commerce
Tablename Ligne_achat
Table2
Active True
Databasename Commerce
Tablename Facture_vente
Table3
Active True
Databasename Commerce
Tablename Ligne_vente
Table4
Active True
Databasename Commerce
Tablename Inventaire
Table5
Active True
Databasename Commerce
Tablename ligne_inventaire
BDE
Table6
Active True
3- double clique sur le « speedbutton1 » et écrire dans sa procédure :
While not (table1.eof) do
table1.delete ;
showmessage('la table facture achat est vidée');
- Tapez F12 pour retourner à la fiche.

4- double clique sur le « speedbutton2 » et écrire dans sa procédure :
While not (table2.eof) do
Table2.delete ;
showmessage('la table ligne achat est vidée');
- Tapez F12 pour retourner à la fiche.

5- double clique sur le « speedbutton3 » et écrire dans sa procédure :
While not (table3.eof) do
Table3.delete ;
showmessage('la table facture vente est vidée');
- Tapez F12 pour retourner à la fiche.

6- double clique sur le « speedbutton4 » et écrire dans sa procédure :
While not (table4.eof) do
Table4.delete ;
showmessage('la table ligne vente est vidée');
- Tapez F12 pour retourner à la fiche.

7- double clique sur le « speedbutton5 » et écrire dans sa procédure :
While not (table5.eof) do
Table5.delete ;
showmessage('la table inventaire est vidée');
- Tapez F12 pour retourner à la fiche.

8- double clique sur le « speedbutton6 » et écrire dans sa procédure :
While not (table6.eof) do
Table6.delete ;
showmessage('la table ligne inventaire est vidée');
- Tapez F12 pour retourner à la fiche.

En fin : on enregistre tous le travail par : (le menu Delphi) : fichier = tout enregistrer
9- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément Cloture (du sous menu
outils)
Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale
- 79 -
Ensuite : on écrit dans la procédure : fiche_cloture.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la
confirmation de la liaison entre la fiche_menu et la fiche_cloture et on doit cliquer sur Oui pour cette demande de
confirmation.
Remarques :
1- Pour que la fiche cloture se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel :
- On tape : Shift + F12 et on clique sur la « fiche_cloture » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»
2- on enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements
possibles)

FICHE A PROPOS










1- on peut insérer cette fiche par le menu Delphi :
Fichier = nouveau = fiche = boite a propos = Ok
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name»le nom:«fiche_apropos».
Ensuite : (le menu Delphi): fichier =enregistrer, et dans le dossier « c:\commerce\source » nommer l’unité:«apropos»
Ensuite : on écrit le texte qu’on veut dans les labels et modifier la couleur et la taille des labels par leurs propriétés
« FONT ». (Cette fiche est la carte visite du logiciel).

2- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément « a propos » (du sous
menu « ? »)
Ensuite : on écrit dans la procédure : fiche_apropos.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la
confirmation de la liaison entre la fiche_menu et la fiche_apropos et on doit cliquer sur oui pour cette demande de
confirmation.

L’image de Logo :
1- dans la propriété picture du composant « image1 » on clique sur le bouton Charger et chercher l’image voulue.
(Delphi propose quelques images dans :
« C:\Program Files\Fichiers communs\Borland Shared\Images\ Splash\256Color ».
2- en fin clique sur Ouvrir ensuite sur Ok
3- pour que l’image occupe toute la surface de son cadre on modifie sa propriété : Autosize = true.
4- pour que l’image s’agrandie si elle a une taille plus petite que la surface de son cadre on modifie sa propriété :
Stretch = true.


- 80 -





















Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 81 -
PREPARATION DU LOGICIEL
1- créer dans le lecteur C du disque dur un nouveau dossier nommé : scolarite (pour stocker le logiciel).
2- créer dans le dossier scolarite 2 autres dossiers nommés : base (pour stocker la BD) et source (pour stocker le code
source)
3- lancer le BDE de Delphi par : (le menu Delphi) outils = module base de données.
4- créer un nouveau alias pour notre logiciel par : (le menu BDE) outils = gestionnaire d’alias
Ensuite : clique sur l’option : « O afficher seulement les alias publics »
Ensuite : clique sur le bouton : Nouveau
Ensuite : écrire dans : Alias de la base : scolarite
Chemin d’accès : c:\scolarite\base
Ensuite clique sur Ok
En fin clique sur Oui pour que cet alias soit un alias public.
5- créer dans cet alias les tables suivantes : N’oubliez pas de les enregistrer dans l’alias « scolarite »

Table: etudiant
Champ Type Taille index
Code_e
Nom_e
Prenom_e
Date_naissance
Lieu
Adresse
Doublant
Photo
Ref_classe
i
A
A
D
A
A
A
G
i

20
20

15
30
3
*

Table : professeur
Champ Type Taille index
Code_p
Nom_p
Prenom_p
Diplome
Ref_Matiere
i
a
a
a
i

20
20
30
*


Table : matiere
Champ Type Taille index
Reference_m
Designation_m
Coefficient
Ref_specialite
i
a
i

20

*


Table : classe
Champ Type Taille index
Ref_classe
Designation_c
Ref_Specialite
i
a
i

20

*

Table : specialite

Champ Type Taille Index
Ref_Specialite
Designation_s
i
a

20
*

Table : resultat
Champ Type Taille index
Code_etudiant
Ref_matiere
Trimestre
Devoir
Composition
Observation
i
i
i
n
n
a





15
*
*
*

Table protection
Champ Type Taille index
Password A 20 *




















Etudiant Classe
Avoir1
1.1
1.n
Specialite
Matiere
Contient
1.1
1.n
Avoir2
1.1
1.n
Professeur
Enseigne
1.1 1.n
Trimestre
Resultat
Devoir
Composition
Observation
1.n
1.n
1.n
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 82 -
FICHE MENU

1- Dans l’environnement Delphi choisir dans le menu : Fichier = nouvelle application.
Ensuite : insérer dans la fiche de ce nouveau projet (nouveau logiciel) un composant « mainmenu »
Ensuite : double clique sur ce composant et insérer le menu principal suivant :


+ Chaque fiche (ainsi que son unité) dans le logiciel doit être nommée par un nom significatif. pour notre fiche
actuelle (le menu général du projet) on procède comme suite :
Cliquer sur cette fiche (éviter le composant mainmenu1) et dans son inspecteur d’objet écrire dans la propriété :
name = fiche_menu.
Clique dans le menu Delphi sur: fichier =enregistrer sous, et dans le dossier «c:\scolarite\source» nommer l’unité :
«menu».
Clique dans le menu Delphi sur: fichier = enregistrer le projet sous, et nommer le projet : scolarite (dans
c:\scolarite\source)
2- insérer un composant ToolBar (palette win32 ).
Ensuite : clique droit sur ce composant et choisir « nouveau bouton » ou « nouveau séparateur »
Ensuite : répéter le clic droit pour insérer 13 boutons qui représentent les éléments du menu principal du logiciel;
Et 6 séparateurs pour les grands éléments du menu (fichier, édition, consultation, …)
Ensuite : insérer un composant imagelist (palette win32 )
Ensuite : double clique sur ce composant et clique sur le bouton Ajouter pour choisir la gamme des images de notre
logiciel dans le chemin : « C:\program files\fichiers communs\borland shared\images\button »
Ensuite : après le chois de 13 images adéquates aux 13 boutons on clique sur Ok
Ensuite : on clique sur le « mainmenu1 » et dans son inspecteur d’objet : propriété images =imagelist1
Ensuite : on double clique sur le « mainmenu1 » et chaque élément de ce menu sera lié avec une image adéquate par
sa propriété : « imageindex »
Enfin: on ferme la petite fenêtre du menu et on clique sur le composant « toolbar1 » et dans sa propriété :
Images = imagelist1
(Chaque bouton du «toolbar1» peut avoir une image adéquate par le choix de cette image dans la propriété
« imageindex » de ce bouton).
3- pour expliquer le rôle de chaque bouton on clique sur ce dernier on écrit dans sa propriété :
« Hint » l’éxplication adéquate, ensuite et pour voir cette éxplication on choisit dans sa propriété : showHint = true

Remarque :
Pour faire défiler le nom du logiciel dans cette fiche :
1- on insère un composant timer (palette systeme)
et sa propriété interval = 10
Fichier Edition Consultation États Statistiques Outils ?
Bulletin Étudiants
impressions
scolarité Archivage
Protection
Cloture
A propos étudiant
professeur
spécialité
matière

quitter
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 83 -
2- on insère un composant Label1
propriété :caption = LOGICIEL GESTION SCOLARITE
propriété : font (essayez de bien traiter le texte).
3- on double clique sur le timer et on écrit :
if label1.left > -250 then
label1.left:= label1.left-1
else
label1.left :=700 ;
// Les intervals d’affichage du label1 peuvent varier selon la taille d’écriture (pas sûrement entre -250 et 700).
Programmation du sous menu « QUITTER »
On double clique sur le composant « mainmenu1 » et double clique sur son élément quitter (du sous menu fichier).
Ensuite : on écrit dans la procédure : close;
Ensuite : clique sur la fiche_menu et double clique à droite de son événement « onclosequery » et écrire dans sa
procédure :
if messagedlg('voulez vous quitter le logiciel?',mtconfirmation,[mbyes,mbno],0)=mryes then
begin
canclose:=true;
application.terminate;
end
else
canclose:=false;
Résultat:
Cette technique assure l’affichage de la fenêtre de confirmation de sortie du logiciel pour n’importe quel type de
tentative de fermeture du logiciel :
- le menu : fichier = quitter.
- Par clavier en utilisant les touches : Alt + F4
- En cliquant sur la case fermer en haut et à droite de la fenêtre.

4- Pour que la fiche menu occupe tous l’éspace de l’écran lors du lancement de l‘éxécution du logiciel :
- On clique sur cette fiche_menu (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « Window state = wsmaximized »
5- On enregistre notre travail par le menu Delphi : fichier = tout enregistrer.

L’image de l’arrière plan :
1- insérer un composant « image1 » de la palette « supplément ».
2- dans la propriété Picture sur ce composant « image1 » on clique sur le bouton Charger et chercher l’image voulue.
(Exemple du chemin de l’image : C:\Program Files\Fichiers communs\Borland Shared\Images\Splash\256Color)
3- en fin clique sur Ouvrir ensuite sur Ok
4- pour que l’image occupe toute la surface de son cadre on modifie sa propriété : Autosize = true.
5- pour que l’image s’agrandie si elle à une taille plus petite que la surface de son cadre on modifie sa propriété :
Stretch = true. Aussi modifier sa propriété : align = alClient.

LA FICHE ETUDIANT











1- Choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_etudiant ».
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 84 -
Ensuite : choisir dans le menu Delphi : fichier = enregistrer, et dans le dossier « c:\scolarite\source » nommer l’unité :
« etudiant »

2- Insérer de la palette win32 le composant Pagecontrol1
Clique droit sur ce composant et clique sur « nouvelle page » et écrire dans sa propriété caption « MAJ »
Clique droit sur ce composant et clique sur « nouvelle page » et écrire dans sa propriété caption « Consultation »
Clique droit sur ce composant et clique sur « nouvelle page » et écrire dans sa propriété caption « Statistiques »
3- clique sur l’onglés « MAJ » du composant « pagecontrol1 » et insérer dans son cadre intérieur les composants
suivants :
Palette Composant Propriété Valeur
Databasename scolarite
Tablename etudiant
BDE Table1
Active True
4- double clique sur le composant table1 et clique droit sur la petite fenêtre et choisir dans la liste « ajouter tous les
champs »
5- glisser les champs un par un dans la fiche dans l’ordre de haut en bas (on peut les sélectionner tous et les glisser
en même temps, c’est plus professionnel)
6- Insérer de la palette Supplément 5 composants « Speedbutton » et écrire dans la propriété de chacun
respectivement :
« Ajouter » « Supprimer » « Modifier » « Engersitrer » « Annuler »
7- double clique sur le « speedbutton1 » (ajouter) et écrire dans sa procédure :
table1.append ; // table1.append = table1.last + table1.insert = c’est insérer un nouveau enregistrement en fin de la
table.
dbedit1.setfocus ;
8- tapez F12 et double clique sur le composant « speedbutton2 » (Supprimer) et écrire dans sa procédure :
if messagedlg(‘ voulez vous supprimer cet enregistrement’ ,mtconfirmation,[mbyes,mbno],0)=mryes then
table1.delete ;
9- tapez F12 et double clique sur le composant « speedbutton3 » (Modifier) et écrire dans sa procédure :
table1.edit ;
dbedit1.setfocus ;
10- tapez F12 et double clique sur le composant « speedbutton4 » (Enregistrer) et écrire dans sa procédure :
table1.edit ;
table1.post ;
11- tapez F12 et double clique sur le composant « speedbutton5 » (Annuler) et écrire dans sa procédure :
table1.edit ;
table1.cancel ;
12- Insérer en haut de cette page un composant « DbNavigateur1 » de la palette « ControleBD ».
Ensuite : Choisir dans sa propriété : datasource = datasource1.
Ensuite : choisir dans sa propriété VisibleButtons les boutons first, prior, next, last, refresh ; mettre visible= true.
13- Pour insérer les images des étudiants dans le champ « Photo » de la table1 (table etudiant) à partir d’un fichier
image stocké dans le disque dur (généralement on doit scanner les images des étudiants au paravant) on procède
comme suite :
- insérer de la palette « dialogues » un composant « OpenPictureDialog1».
- Insérer de la palette « supplément » un composant « speedbutton » et choisir dans sa propriété
« glyph » l’image : C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\mailpict.bmp
- Double clique sur ce « speedbutton » et écrire dans sa procédure :
OpenPictureDialog1.execute;
dbimage1.picture.loadfromfile(OpenPictureDialog1.filename);

14- Pour mettre le curseur du clavier automatiquement dans le « dbedit1 » pour faciliter la saisie du code de
l’étudiant on clique sur le composant « table1 » et dans son inspecteur d’objet double clique à droite de son
événement : « afterinsert » on écrit dans sa procédure :
dbedit1.setfocus ;
Ensuite on peut contrôler la manipulation du clavier et calculer l’age de l’etudiant par :
- insérer un composant label9 à droite du «dbedit4» et supprimer le texte de sa propriété
« caption».
- clique sur le composant dbedit1.
- Double clique sur son événement « OnKeyDown » et écrire dans sa procédure :
If key = vk_return then
Dbedit2.setfocus ;
- tapez F12 et clique sur le composant dbedit2.
- Double clique sur son événement « OnKeyDown » et écrire dans sa procédure :
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 85 -
If key = vk_return then
Dbedit3.setfocus ;
- tapez F12 et clique sur sur le composant Dbedit3.
- Double clique sur son événement « OnKeyDown » et écrire dans sa procédure :
If key = vk_return then
Dbedit4.setfocus ;
- tapez F12 et clique sur sur le composant Dbedit4.
- Double clique sur son événement « OnKeyDown » et écrire dans sa procédure :
(Supprimer le begin et end de la procédure et coller tous le code source suivant)
var age : integer ;
begin
If key = vk_return then
Begin
Table1.edit;
Table1.post;
Age:=trunc((date-table1.fieldbyname(‘date_naissance’).asdatetime)/365);
Label9.caption:=inttostr(age)+’ ans’;
If age <17 then
Showmessage(‘étudiant mineur’);
If age >60 then
Showmessage(‘étudiant retrété’);
Dbedit5.setfocus ;
End;
End;
- tapez F12 et clique sur le composant Dbedit5.
- Double clique sur son événement « OnKeyDown » et écrire dans sa procédure :
If key = vk_return then
Dbedit6.setfocus ;
- tapez F12 et clique sur sur le composant Dbedit6.
- Double clique sur son événement « OnKeyDown » et écrire dans sa procédure :
If key = vk_return then
Dbcombobox1.setfocus ;
- tapez F12 et clique sur sur le composant Dbcombobox1.
- Double clique sur son événement « OnKeyDown » et écrire dans sa procédure :
If key = vk_return then
Dbedit8.setfocus ;
15- clique sur l’onglés « Consultation » du composant « pagecontrol1 » et insérer dans son cadre intérieur les
composants suivants :

Palette Composant Propriété valeur
controlebd Dbgrid1 Datasource Datasource1
Caption Previsualiser Speedbutton6
Glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer.bmp
Caption Imprimer Speedbutton7
Glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer.bmp
Supplément
Bitbtn1 Kind Bkclose
16- Pour imprimer la liste des étudiants on procède comme suite :
· Dans le menu Delphi on choisit : fichier = nouveau
· Dans la boite de dialogue qui s’affiche on choisit l’onglet « affaires » et dans ce dernier on choisit l’icône
« expert quick report » et clique sur le bouton Ok.
· Dans l’assistant qui s’affiche on clique sur le bouton lancer l’expert.
· Choisir dans la liste « alias ou répertoire » l’alias « scolarite ».
· On choisit dans la liste « nom de table » la table à imprimer (etudiant).
· On clique sur le bouton >> pour faire passer tous les champs à droite (pour les imprimer tous).
· Ensuite clique sur le bouton Terminer
17- Ensuite : on clique sur cette nouvelle fiche en évitant le clic sur le composant « quickrep1 » et dans sa propriété
« name » on donne le nom « fiche_etat_etudiant» à cette fiche.
Ensuite : choisir dans le menu Delphi : fichier = enregistrer, et dans le dossier « c:\scolarite\source » nommer l’unité :
« etat_etudiant »
18- On tape Shift+F12 pour afficher la liste des fiches et on choisit la fiche « fiche_etudiant» et on clique sur Ok.
Ensuite : pour programmer la prévisualisation de notre liste on double clique sur le bouton « previsualiser » et on écrit
dans sa procédure : fiche_etat_etudiant.quickrep1.preview ;
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 86 -
Ensuit : on tape F12 pour retourner à la fiche et pour programmer l’impression de notre liste on double clique sur le
bouton « imprimer » et on écrit dans sa procédure : fiche_etat_etudiant.quickrep1.print ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation
de la liaison entre la fiche_etudiant et la fiche_etat_etudiant et on doit cliquer sur Oui pour cette demande de
confirmation.

16- On ajoute aussi les options du filtrage et du trie dans cette fiche par l’insertion des composants suivants (toujours
dans l’onglés consultation) :
Palette Composant Propriété valeur
Label1 Caption Filtrage Standard
Edit1 Text
8- Pour faire le filtrage on double clique sur le composant edit1 et on écrit dans la procédure (onchange):
if edit1.text <> ‘’ then
begin
table1.close ;
table1.filtered :=true ;
table1.filter :=’[Nom_e]=‘ + #39 + edit1.text + ‘*’ + #39 ;
table1.active := true ;
end
else
begin
table1.close ;
table1.filtered := false ;
table1.active := true ;
end ;

17- On tape la touche F12 (retour à la fiche), et pour faire le trie de la table etudiant : clique sur le composant dbgrid1.
Ensuite : dans son inspecteur d’objet on clique sur l’onglés « événements »
Ensuite : on double clique à droite de l’événement « ontitleclick » et on introduit le code source suivant :
If column.index = 0 then
Table1.indexname :=’c1’ ;
If column.index = 1 then
Table1.indexname :=’c2’ ;
If column.index = 2 then
Table1.indexname :=’c3’ ;
If column.index = 3 then
Table1.indexname :=’c4’ ;
If column.index = 4 then
Table1.indexname :=’c5’ ;
If column.index = 5 then
Table1.indexname :=’c6’ ;
If column.index = 6 then
Table1.indexname :=’c7’ ;
If column.index = 7 then
Table1.indexname :=’c8’ ;

Remarque importante :
Le trie et le filtrage dans une table ne réussissent que si on a défini des index secondaires sur chaque champ trié ou
filtré.
Pour insérer des index secondaires dans les champs de la table etudiant il faut que cette table ne soit pas en cours
d’utilisation, donc sa propriété : active = false.
Ensuite : on lance le BDE Delphi par : (le menu Delphi) : outils = module base de données.
Ensuite : on ouvre la table par : (le menu) fichier = ouvrir = table et on choisit l’alias « scolarite » et la
table « etudiant ».
Ensuite : on clique dans le menu du BDE sur : table = restructurer.
Ensuite : on choisit dans la liste des choix « propriétés de la table » l’option « index secondaires »
Ensuite : on clique pour chaque champ sur le bouton Définir et on fait passer ce champ à droite, on clique sur le
bouton OK et on propose un nom symbolique à cet index secondaire (c1 pour le champ code_e, c2 pour le champ
nom_e,…etc.)


Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 87 -

Remarque : le champ photo ne peut pas avoir un index secondaire puisque c’est un champ de type graphique (Un
champ de type graphique ne peut être utilisé dans une recherche ou un trie ou un filtrage).
Ensuite : on clique sur le bouton enregistrer et on retourne à l’environnement Delphi.
Enfin : on réactive le composant table1 par sa propriété : active = true.

18- clique sur l’onglés « Statistiques » du composant « pagecontrol1 » et insérer dans son cadre intérieur les
composants suivants :
Palette Composant Propriété Valeur
databasename scolarite
Sql Select Doublant, count(Doublant) as nombre
from etudiant group by Doublant
BDE

Query1
Active True
controlebd DBchart1 (Insérer ce composant sur le composant « pagecontrole1 » dans la page « statistiques » )
Et double clique sur ce composant « dbchart1 »
Et clique sur l’onglé inférieur « série »
Et clique sur le bouton Ajouter
Et clique sur le graphe de la forme « sectoriel »
Et clique sur le bouton Ok
Et clique sur l’onglé supérieur « série »
Et clique sur l’onglé « source de données »
Et choisir dans la liste l’élément « dataset »
Et choisir dans la liste dataset l’élément « query1 »
Et choisir dans la liste « libellé » l’élément « doublant »
Et choisir dans la liste « sectoriel » l’élément « nombre »
A la fin clique sur Fermer
Remarque :
Pour que les statistiques affichent toujours les dernières modifications automatiquement (rafraîchissement automatique
des données du query1) : Clique sur le composant table1 et Dans son inspecteur d’objet double clique à droite de son
événement « afterpost » (cet événement se déclanche automatiquement si on enregistre des données sur notre table1).
Ensuite : écrire le code source suivant dans la procédure correspondante :
Query1.close ;
Query1.active :=true ;
19- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément etudiant (du sous menu
fichier)
Ensuite : on écrit dans la procédure : fiche_etudiant.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation
de la liaison entre la fiche_menu et la fiche_etudiant et on doit cliquer sur oui pour cette demande de confirmation.
Remarques :
1- Pour que la fiche_etudiant se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel :
- On tape : Shift + F12 et on clique sur la « fiche_etudiant » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»
2- On enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements
possibles)

FICHE MATIERE








Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 88 -

1- choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_matiere ».
Ensuite : choisir dans le menu Delphi : fichier =enregistrer, et dans le dossier «c:\scolarite\source» nommer l’unité:
«matiere»
2- Insérer de la palette win32 le composant Pagecontrol1
Clique droit sur ce composant et clique sur « nouvelle page » et écrire dans sa propriété caption « MAJ »
Clique droit sur ce composant et clique sur « nouvelle page » et écrire dans sa propriété caption « Consultation »
3- Clique sur l’onglés « MAJ » du composant « pagecontrol1 » et insérer dans son cadre intérieur les composants
suivants :
Palette Composant Propriété Valeur
Databasename Scolarite
Tablename matiere
BDE Table1
Active True
4- double clique sur le composant table1 et clique droit sur la petite fenêtre et choisir dans la liste « ajouter tous
les champs »
5- glisser les champs un par un dans la fiche dans l’ordre de haut en bas (on peut les sélectionner tous et les
glisser en même temps, c’est plus professionnel)
6- Insérer de la palette Supplément 5 composants « Speedbutton » et écrire dans la propriété de chacun
respectivement : « Ajouter » « Supprimer » « Modifier » « Engersitrer » « Annuler »
7- double clique sur le « speedbutton1 » (ajouter) et écrire dans sa procédure :
table1.append ;
// table1.append = table1.last + table1.insert = == = c’est insérer un nouveau enregistrement en fin de la table.
dbedit1.setfocus ;
8- taper F12 et double clique sur le composant « speedbutton2 » (Supprimer) et écrire dans sa procédure :
if messagedlg(‘ voulez vous supprimer cet enregistrement’ ,mtconfirmation,[mbyes,mbno],0)=mryes then
table1.delete ;
9- taper F12 et double clique sur le composant « speedbutton3 » (Modifier) et écrire dans sa procédure :
table1.edit ;
dbedit1.setfocus ;
10- taper F12 et double clique sur le composant « speedbutton4 » (Enregistrer) et écrire dans sa procédure :
table1.edit ;
table1.post ;
11- taper F12 et double clique sur le composant « speedbutton5 » (Annuler) et écrire dans sa procédure :
table1.edit ;
table1.cancel ;
12- Insérer en haut de cette page un composant « DbNavigateur1 » de la palette « ControleBD ».
Ensuite : Choisir dans sa propriété : datasource = datasource1.
Ensuite : choisir dans sa propriété VisibleButtons les boutons first, prior, next, last, refresh ; mettre visible= true.
13- Clique sur l’onglés « Consultation » du composant « pagecontrol1 » et insérer dans son cadre intérieur les
composants suivants :

Palette Composant Propriété valeur
controlebd Dbgrid1 Datasource Datasource1
Caption Previsualiser Speedbutton6
Glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer.bmp
Caption Imprimer Speedbutton7
Glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer.bmp
Supplement
Bitbtn1 Kind Bkclose
14- Pour imprimer la liste des matières on procède comme suite :
· Dans le menu Delphi on choisit : fichier = nouveau.
· Dans la boite de dialogue qui s’affiche on choisit l’onglet « affaires » et dans ce dernier on choisit l’icône
« expert quick report » et clique sur le bouton Ok.
· Dans l’assistant qui s’affiche on clique sur le bouton lancer l’expert.
· Choisir dans la liste « alias ou répertoire » l’alias « scolarite ».
· On choisit dans la liste « nom de table » la table à imprimer (matiere).
· On clique sur le bouton >> pour faire passer tous les champs à droite (pour les imprimer tous).
· Ensuite clique sur le bouton Terminer
15- Ensuite : on clique sur cette nouvelle fiche en évitant le clic sur le composant « quickrep1 » et dans sa propriété
« name » on donne le nom « fiche_etat_matiere» à cette fiche.
Ensuite : choisir dans le menu Delphi : fichier = enregistrer, et dans le dossier « c:\scolarite\source » nommer l’unité :
« etat_matiere »
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 89 -
16- On tape Shift+F12 pour afficher la liste des fiches et on choisit la fiche « fiche_matiere» et on clique sur Ok.
Ensuite : pour programmer la prévisualisation de notre liste on double clique sur le bouton « previsualiser » et on écrit
dans sa procédure : fiche_etat_matiere.quickrep1.preview ;
Ensuit : on tape F12 pour retourner à la fiche et pour programmer l’impression de notre liste on double clique sur le
bouton « imprimer » et on écrit dans sa procédure : fiche_etat_matiere.quickrep1.print ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation
de la liaison entre la fiche_matiere et la fiche_etat_matiere et on doit cliquer sur Oui pour cette demande de
confirmation.
17- On ajoute aussi les options du filtrage et du trie dans cette fiche par l’insertion des composants suivants
(toujours dans l’onglés consultation) :
Palette Composant Propriété Valeur
Label1 Caption Filtrage Standard
Edit1 Text
18- Pour faire le filtrage on double clique sur le composant edit1 et on écrit dans la procédure (onchange):
if edit1.text <> ‘’ then
begin
table1.close ;
table1.filtered :=true ;
table1.filter :=’[designation_m]=‘ + #39 + edit1.text + ‘*’ + #39 ;
table1.active := true ;
end
else
begin
table1.close ;
table1.filtered := false ;
table1.active := true ;
end ;
19- On tape la touche F12 (retour à la fiche), et pour faire le trie de la table matiere : clique sur le composant
dbgrid1.
Ensuite : dans son inspecteur d’objet on clique sur l’onglés « événements »
Ensuite : on double clique à droite de l’événement « ontitleclick » et on introduit le code suivant :
If column.index = 0 then
Table1.indexname :=’c1’ ;
If column.index = 1 then
Table1.indexname :=’c2’ ;
If column.index = 2 then
Table1.indexname :=’c3’ ;

Remarque importante :
Le trie et le filtrage dans une table ne réussissent que si on a défini des index secondaires sur chaque champ trié ou
filtré.
Pour insérer des index secondaires dans les champs de la table matiere il faut que cette table ne soit pas en cours
d’utilisation donc sa propriété : active = false.
Ensuite : on lance le BDE Delphi par : (le menu Delphi) : outils = module base de données.
Ensuite : on ouvre la table par : (le menu) fichier = ouvrir = table et on choisit l’alias « scolarite » et la table « matiere ».
Ensuite : on clique dans le menu du BDE sur : table =restructurer.
Ensuite : on choisit dans la liste des choix « propriétés de la table » l’option « index secondaires »
Ensuite : on clique pour chaque champ sur le bouton Définir et on fait passer ce champ à droite, on clique sur le
bouton OK et on propose un nom symbolique à cet index secondaire (c1 pour le champ reference_m, c2 pour le
champ designation_m,…etc.)
Ensuite : on clique sur le bouton enregistrer et on retourne à l’environnement delphi.
Enfin : on réactive le composant table1 par sa propriété : active = true.
20- Cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : double clique sur le composant « mainmenu1 » et double clique sur son élément matiere (sous menu fichier)
Ensuite : écrire dans la procédure : fiche_matiere.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation
de la liaison entre la fiche_menu et la fiche_matiere et on doit cliquer sur oui pour cette demande de confirmation.



Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 90 -
Remarques :
1- Pour que la fiche matiere se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel :
- On tape : Shift + F12 et on clique sur la « fiche_matiere » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»
2- on enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements
possibles)

FICHE PROFESSEUR








1- choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_professeur ».
Ensuite : choisir dans le menu Delphi : fichier = enregistrer, et dans le dossier « c:\scolarite\source » nommer l’unité :
« professeur »
2- Insérer de la palette win32 le composant Pagecontrol1
Clique droit sur ce composant et clique sur « nouvelle page » et écrire dans sa propriété caption « MAJ »
Clique droit sur ce composant et clique sur « nouvelle page » et écrire dans sa propriété caption « Consultation »
3- clique sur l’onglés « MAJ » du composant « pagecontrol1 » et insérer dans son cadre intérieur les
composants suivants :
Palette Composant Propriété Valeur
Databasename scolarite
Tablename professeur
BDE Table1
Active True
4- double clique sur le composant table1 et clique droit sur la petite fenêtre et choisir dans la liste « ajouter tous
les champs »
5- glisser les champs un par un dans la fiche dans l’ordre de haut en bas (on peut les sélectionner tous et les
glisser en même temps, c’est plus professionnel).
6- Insérer de la palette Supplément 5 composants « Speedbutton » et écrire dans la propriété de chacun
respectivement :
« Ajouter » « Supprimer » « Modifier » « Engersitrer » « Annuler »
7- double clique sur le « speedbutton1 » (ajouter) et écrire dans sa procédure :
table1.append ;
// table1.append = table1.last + table1.insert = == = c’est insérer un nouveau enregistrement en fin de la table.
dbedit1.setfocus ;
8- tapez F12 et double clique sur le composant « speedbutton2 » (Supprimer) et écrire dans sa procédure :
if messagedlg(‘ voulez vous supprimer cet enregistrement’ ,mtconfirmation,[mbyes,mbno],0)=mryes then
table1.delete ;
9- tapez F12 et double clique sur le composant « speedbutton3 » (Modifier) et écrire dans sa procédure :
table1.edit ;
dbedit1.setfocus ;
10- tapez F12 et double clique sur le composant « speedbutton4 » (Enregistrer) et écrire dans sa procédure :
table1.edit ;
table1.post ;
11- tapez F12 et double clique sur le composant « speedbutton5 » (Annuler) et écrire dans sa procédure :
table1.edit ;
table1.cancel ;

Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 91 -
12- Insérer en haut de cette page un composant « DbNavigateur1 » de la palette « ControleBD ».
Ensuite : Choisir dans sa propriété : datasource = datasource1.
Ensuite : choisir dans sa propriété VisibleButtons les boutons first, prior, next, last, refresh ; mettre visible= true.

13- clique sur l’onglés « Consultation » du composant « pagecontrol1 » et insérer dans son cadre intérieur les
composants suivants :

Palette Composant Propriété valeur
controlebd Dbgrid1 Datasource Datasource1
Caption Previsualiser Speedbutton6
Glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer.bmp
Caption Imprimer Speedbutton7
Glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer.bmp
Supplément
Bitbtn1 Kind Bkclose

14- Pour imprimer la liste des professeurs on procède comme suite :
a- Dans le menu Delphi on choisit : fichier = nouveau
b- Dans la boite de dialogue qui s’affiche on choisit l’onglet « affaires » et dans ce dernier on choisit
l’icône « expert quick report » et clique sur le bouton Ok.
c- Dans l’assistant qui s’affiche on clique sur le bouton lancer l’expert.
d- Choisir dans la liste « alias ou répertoire » l’alias « scolarite ».
e- On choisit dans la liste « nom de table » la table à imprimer (professeur).
f- On clique sur le bouton >> pour faire passer tous les champs à droite (pour les imprimer tous).
g- Ensuite clique sur le bouton Terminer
Ensuite : on clique sur cette nouvelle fiche en évitant le clic sur le composant « quickrep1 » et dans sa propriété
« name » on donne le nom « fiche_etat_professeur » à cette fiche.
Ensuite : choisir dans le menu Delphi : fichier = enregistrer, et dans le dossier « c:\scolarite\source » nommer l’unité :
« etat_ professeur »

15- On tape Shift+F12 pour afficher la liste des fiches et on choisit la fiche « fiche_professeur» et on clique
sur Ok.
Ensuite : pour programmer la prévisualisation de notre liste on double clique sur le bouton « previsualiser » et on écrit
dans sa procédure : fiche_etat_professeur.quickrep1.preview ;
Ensuit : on tape F12 pour retourner à la fiche et pour programmer l’impression de notre liste on double clique sur le
bouton « imprimer » et on écrit dans sa procédure : fiche_etat_professeur.quickrep1.print ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation
de la liaison entre la fiche_professeur et la fiche_etat_professeur et on doit cliquer sur Oui pour cette demande de
confirmation.

16- (toujours dans l’onglés consultation) :
Palette Composant Propriété valeur
Label1 Caption Filtrage Standard
Edit1 Text

17- Pour faire le filtrage on double clique sur le composant edit1 et on écrit dans la procédure (onchange) :

if edit1.text <> ‘’ then
begin
table1.close ;
table1.filtered :=true ;
table1.filter :=’[nom_p]=‘ + #39 + edit1.text + ‘*’ + #39 ;
table1.active := true ;
end
else
begin
table1.close ;
table1.filtered := false ;
table1.active := true ;
end ;
18- On tape la touche F12 (retour à la fiche), et pour faire le trie de la table professeur : clique sur le composant
dbgrid1.

Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 92 -
Ensuite : dans son inspecteur d’objet on clique sur l’onglés « événements »
Ensuite : on double clique à droite de l’événement « ontitleclick » et on introduit le code source suivant :
If column.index = 0 then
Table1.indexname :=’c1’ ;
If column.index = 1 then
Table1.indexname :=’c2’ ;
If column.index = 2 then
Table1.indexname :=’c3’ ;
If column.index = 3 then
Table1.indexname :=’c4’ ;
If column.index = 4 then
Table1.indexname :=’c5’ ;

Remarque importante :
Le trie et le filtrage dans une table ne réussissent que si on a défini des index secondaires les champs triés ou filtrés.
Pour insérer des index secondaires dans les champs de la table professeur il faut que cette table ne soit pas en cours
d’utilisation donc sa propriété : active = false.
Ensuite : on lance le BDE Delphi par : (le menu Delphi) : outils = module base de données.
Ensuite : on ouvre la table par : (le menu) fichier = ouvrir = table et on choisit l’alias « scolarite » et la
table « professeur».
Ensuite : on clique dans le menu du BDE sur table =restructurer.
Ensuite : on choisit dans la liste des choix « propriétés de la table » l’option « index secondaires »
Ensuite : on clique pour chaque champ sur le bouton Définir et on fait passer ce champ à droite, on clique sur le
bouton OK et on propose un nom symbolique à cet index secondaire (c1 pour le champ code_p, c2 pour le champ
nom_p,…etc.)
Ensuite : on clique sur le bouton enregistrer et on retourne à l’environnement delphi.
Enfin : on réactive le composant table1 par sa propriété : active = true.
19- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément professeur (du sous menu
fichier)
Ensuite : on écrit dans la procédure : fiche_professeur.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation
de la liaison entre la fiche_menu et la fiche_professeur et on doit cliquer sur oui pour cette demande de confirmation.
Remarques :
1- Pour que la fiche professeur se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel :
- On tape : Shift + F12 et on clique sur la « fiche_professeur » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»
2- on enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements
possibles)

FICHE SPECIALITE










1- choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_specialite ».
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 93 -
Ensuite : choisir dans le menu Delphi : fichier = enregistrer, et dans le dossier « c:\scolarite\source » nommer l’unité :
« specialite»
2- Insérer de la palette win32 le composant Pagecontrol1
Clique droit sur ce composant et clique sur « nouvelle page » et écrire dans sa propriété caption « MAJ &
Consultation »
Clique droit sur ce composant et clique sur « nouvelle page » et écrire dans sa propriété caption « Statistiques »
3- clique sur l’onglés « MAJ_Consultation » du composant « pagecontrol1 » et insérer dans son cadre intérieur les
composants suivants :
Palette Composant Propriété Valeur
Databasename scolarite
Tablename specialite
BDE Table1
Active True
Accesbd Datasource1 Dataset Table1
Databasename scolarite
Tablename classe
BDE Table2
Active True
Accesbd Datasource2 Dataset Table2
Dbgrid1 Datasource Datasource1 controlebd
Dbgrid2 Datasource Datasource2
Supplement Bitbtn1 Kind Bkclose
4- pour que la table classe soit liée par une relation maître détail avec la table specialite (la table specialite =
maître (père) et la table classe = détail (fils)) on procède comme suite :
On désactive la table classe (active = false) et dans le BDE on insère des index secondaires pour chaque champ de
cette table ( ref_classe = c1, designation_c = c2 , ref_specialité = c3)
Ensuite on retourne à la fiche_specialite et on réactive la table classe (active = true).
On clique sur le composant table2 « classe », et choisir dans sa propriété : mastersource = datasource1.
Ensuite : dans sa propriété « masterfield » on clique sur petit bouton … .
Ensuite : on choisit dans la liste en haut l’index secondaire « c3 » (c’est l’index du champ ref_specialite de la table
classe)
Ensuite : on choisit à gauche le champ «ref_specialite» et à droite le champ « ref_specialite».
Ensuite : clique sur le bouton « ajouter » ensuite sur le bouton Ok .
5- Clique sur l’onglés « Statistiques » du composant « pagecontrol1 » et insérer dans son cadre intérieur les
composants suivants :
Palette Composant Propriété Valeur
databasename scolarite
Sql Select specialite.designation_s, count(ref_classe) as nombre
from specialite, classe
where specialite.ref_specialite = classe.ref_specialite
group by specialite.designation_s
BDE

Query1
Active True
controlebd DBchart1 (Insérer ce composant sur le composant « pagecontrole1 » dans la page « statistiques » )
Et double clique sur ce composant « dbchart1 »
Et clique sur l’onglé inférieur « série »
Et clique sur le bouton Ajouter
Et clique sur le graphe de la forme « sectoriel »
Et clique sur le bouton Ok
Et clique sur l’onglé supérieur « série »
Et clique sur l’onglé « source de données »
Et choisir dans la liste l’élément « dataset »
Et choisir dans la liste dataset l’élément « query1 »
Et choisir dans la liste « libellé » l’élément « specialite.designation_s »
Et choisir dans la liste « sectoriel » l’élément « nombre »
A la fin clique sur Fermer

Remarque :
Pour que les statistiques affichent toujours les dernières modifications automatiquement (rafraîchissement automatique
des données du query1) : Clique sur le composant table1 (specialite) et Dans son inspecteur d’objet double clique à
droite de son événement « afterpost »
Ensuite : écrire le code source suivant dans la procédure correspondante :
Query1.close ;
Query1.active :=true ;


Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 94 -
Aussi:
Clique sur le composant table2 (classe) et Dans son inspecteur d’objet double clique à droite de son événement
« afterpost »
Ensuite : écrire le code source suivant dans la procédure correspondante :
Query1.close ;
Query1.active :=true ;

6- Cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément specialite (du sous menu
fichier)
Ensuite : on écrit dans la procédure : fiche_specialite.showmodal ;

Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation
de la liaison entre la fiche_menu et la fiche_specialite et on doit cliquer sur oui .
Remarques :
1- Pour que la fiche_specialite se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel :
- On tape : Shift + F12 et on clique sur la « fiche_specialite » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»
2- on enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats)

FICHE BULLETIN
1- Choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_bulletin».
Ensuite : choisir dans le menu Delphi: fichier=enregistrer, et dans le dossier « c:\scolarite\source » nommer l’unité:
«bulletin»
2- Insérer les composants suivants :
Palette Composant Propriété Valeur
Databasename Scolarite
Tablename Etudiant
BDE Table1
Active True
accesbd Datasource1 Dataset Table1
Databasename Scolarite
Tablename Resultat
Active True
mastersource Datasource1
BDE Table2
masterfield Clique sur “code_etudiant” à gauche et sur “code_e” à droite et sur Ajouter ensuite sur Ok
accesbd Datasource2 Dataset Table2
Databasename Scolarite
Tablename Matiere
BDE Table3
Active True
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 95 -
accesbd Datasource3 Dataset Table3
Databasename Scolarite
Tablename Professeur
Active True
mastersource Datasource3
BDE Table4
masterfield Clique sur “Ref_matiere” à gauche et sur “Reference_m” à droite et sur Ajouter ensuite sur Ok
Dbgrid1 Datasource Datasource1 controlebd
Dbgrid2 Datasource Datasource2
Caption Imprimer Speedbutton1
Glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer.bmp
Supplement
Bitbtn1 Kind Bkclose
databasename Scolarite
Sql select sum((devoir+composition)/3*coefficient)/sum(coefficient) as Moy_Gen
from matiere,resultat
where (ref_matiere =reference_m) and (code_etudiant = :p)
Params Clique sur « p » et choisir dans la propriété datatype : « ftinteger »
BDE Query1
Active True
controlebd dbnavigator datasource Datasource1
Label1 Caption Resultat standard
Edit1 text

3- on peut renforcer cette fenêtre par les champs calculés comme suite :
On double clique sur le composant table2 « resultat ».
Ensuite : on clique droit sur la petite fenêtre et on clique sur « ajouter tous les champs ».
Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».
Ensuite : on écrit le nom du champ : « matiere » et on choisit le type du champ : « string » et on clique sur Ok.
Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».
Ensuite : on écrit le nom du champ : « moy_20» et on choisit le type du champ : « float » et on clique sur Ok.
Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».
Ensuite : on écrit le nom du champ : « coefficient » et on choisit le type du champ : « integer » et on clique sur Ok.
Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».
Ensuite : on écrit le nom du champ : « moy_coef » et on choisit le type du champ : « Float » et on clique sur Ok.
A la fin : on ferme la petite fenêtre.
Ensuite : on clique sur composant « table2 » (resultat) et dans son inspecteur d’objet on clique sur l’onglé
événement.
Ensuite : on double clique à droite de l’événement « oncalcfield » et on écrit dans la procédure :
table3.Open;
table3.setkey;
table3.fieldbyname('reference_m’).asinteger:=table2.fieldbyname('ref_matiere').asinteger;
if table3.gotokey then
begin
table2.fieldbyname('matiere').asstring:=table3.fieldbyname('designation_m').asstring;
table2.fieldbyname('coefficient').asinteger:=table3.fieldbyname('coefficient').asinteger;
table2.fieldbyname('moy_20').asfloat:=
(table2.fieldbyname('devoir').asfloat+table2.fieldbyname('composition').asfloat)/3;
table2.fieldbyname('moy_coef').asfloat:=
table2.fieldbyname('moy_20').asfloat*table2.fieldbyname('coefficient').asinteger;
query1.close;
query1.parambyname('p').asinteger:=table1.fieldbyname('code_e').asinteger;
query1.active:=true;
if (query1.fieldbyname('moy_gen').asfloat >=0) and (query1.fieldbyname('moy_gen').asfloat <5) then
edit1.text:='Blâme';
if (query1.fieldbyname('moy_gen').asfloat >=5) and (query1.fieldbyname('moy_gen').asfloat <7) then
edit1.text:='Avertissement';
if (query1.fieldbyname('moy_gen').asfloat >=7) and (query1.fieldbyname('moy_gen').asfloat <10) then
edit1.text:='Rien';
if (query1.fieldbyname('moy_gen').asfloat >=10) and (query1.fieldbyname('moy_gen').asfloat <12) then
edit1.text:='Tableau d''honneur';
if (query1.fieldbyname('moy_gen').asfloat >=12) and (query1.fieldbyname('moy_gen').asfloat <14) then
edit1.text:='Encouragement';
if (query1.fieldbyname('moy_gen').asfloat >=14) and (query1.fieldbyname('moy_gen').asfloat <=20) then
edit1.text:='Félicitation';
end;
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 96 -
4- On veut ajouter le nom du professeur dans la table résultat; mais, on ne peut pas le faire comme champ calculé
puisque une matiére a plusieurs enseignants possibles, donc la connaissance (la saisie) de la reference de matiére
peut nous faire connaître sa désignation et son coefficient; mais on ne peut pas connaître le nom de son enseignant
puisque il y a plusieurs possibilités. Dans ce cas et pour plus de souplesse dans la programmation, la méthode de
conception Merise accépte de faire des rédendances. Dans notre cas on va recréer le champ " nom du professeur "
dans la table résultat pour indiquer l'enseignant de chaque matiére et cela en procédant comme suite :
· ·· · fermer le logiciel par le menu delphi : fichier = tous fermer; cela assure que la table resultat ne sera pas en
cours d'utilisation.
· ·· · lancer le BDE Delphi par : (le menu Delphi) : Outils = Module base de données.
· ·· · ouvrir la table resultat par : (le menu BDE) Fichier = Ouvrir = table et on choisit l’alias « scolarite » et la
table « resultat ».
· ·· · cliquer dans le menu du BDE sur : table = restructurer.
· ·· · Ecrire à la fin des champs notre nouveau champ "professeur" avec comme type "A" et taille "20".
· ·· · cliquer sur le bouton enregistrer et retourner à l’environnement Delphi.
· ·· · Réouvrir le logiciel "scolarité" par le menu Delphi : Fichier = Ouvrir un projet.
· ·· · Choisir dans le menu delphi : Fichier = Nouvelle fiche.
· ·· · dans l’inspecteur d’objet de la fiche, écrire dans la propriété « name » le nom : « fiche_liste_professeur».
· ·· · choisir dans le menu Delphi: fichier=enregistrer, et dans le dossier « c:\scolarite\source » nommer l’unité:
«liste_professeur».
· ·· · insérer dans cette fiche les composants suivants :
Palette Composant Propriété Valeur
Databasename scolarite
Tablename professeur
BDE Table1
Active True
Accesbd Datasource1 Dataset Table1
controleBD Dbgrid1 Datasource Datasource1
· ·· · Pour avoir une ligne de sélection permanente dans le Dbgrid1 qui indique l’enregistrement résultat de la
recherche :
Cliquer à gauche de la propriété « + Options » du dbgrid1 (éxactement sur la case +).
Choisir dans la sous propriété : DGRowSelect =true.
Choisir dans la sous propriété : DGAlwaysShowSelection =true.
· ·· · Taper Shift + F12 et on retourne à la "fiche_bulletin".
· ·· · Cliquer sur le composant "dbgrid2" et choisir son événement "onkeydown" et écrire dans sa procédure :
If key = vk_return then
begin
Fiche_liste_professeur.showmodal;// pour afficher la liste des professeurs et en choisir un.
Table2.edit; // préparer la table résultat pour écrire le nom du professeur.
Table2.fieldbyname('professeur').asstring:= Fiche_liste_professeur.Table1.fieldbyname('nom').asstring;
Table2.post;
End ;
5- on tape F12 pour retourner à la fiche et on double clique sur le composant « query1 ».
Ensuite : clique doit sur la petite fenêtre et clique dans le menu contextuel sur : « ajouter tous les champs ».
Ensuite : glisser le champ « moy_gen» de la requête vers le bas de la fiche, à la fin fermer la petite fenêtre.
6- le « dbgrid2 » affiche le champ « code_etudiant » (de la table resultat) qui contient bien sûr le même code de
l’étudiant actuelle (puisque il y’a une liaison maître_détail entre la table resultat et la table etudiant par leurs champs
communs code_etudiant et code_e), donc ce champ répétera pour tous les enregistrements du « dbgrid2 » le même
code étudiant, il vaut mieux alors de ne pas afficher ce dernier dans le « dbgrid2 ». pour supprimer ce champ :
- double clique sur le « dbgrid2 ».
- clique en haut de la petite fenêtre sur le bouton « ajouter tous les champs »
- supprimer le champ « code_etudiant » et fermer la petite fenêtre.
(Le champ « code_etudiant » ne sera pas supprimé de la table « resultat » mais seulement il ne sera pas affiché)
7- pour préparer l’impression de notre bulletin on procède comme suite :
On insère une nouvelle fiche à notre logiciel par le choix dans le menu Delphi de : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom: « fiche_etat_bulletin ».
Ensuite : (le menu Delphi): fichier =enregistrer, et dans le dossier « c:\scolarite\source » nommer l’unité:
«etat_bulletin ».
Ensuite : on insère dans cette fiche un composant « quickrep1 » de la palette « qreport ».
Ensuite : on tape F12 et en haut de l’unité on écrit dans la liste «uses» le nom «bulletin» et on compile Ctrl+F9 pour
assurer la liaison entre la fiche_bulletin et la fiche_etat_bulletin.
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 97 -
Nb : par fois Delphi répète quelques unités de la partie uses si on écrit une nouvelle unité dans cette partie, donc on
doit supprimer les unités dupliquées si Delphi signal ce problème de répétition après la compilation du logiciel.
Ensuite : dans l’inspecteur d’objet du quickrep1 on choisit dans la propriété : dataset = « fiche_bulletin.table2 »
Ensuite : dans l’inspecteur d’objet de ce composant on écrit dans la propriété : zoom = 70
Ensuite : choisir dans sa propriété Bands: hastitle=true; hascolumnheader=true; hasdetail=true; hassummary= true.
Ensuite : on insère les composants suivants de la palette « qreport » sur les bandes de ce quickrep1 comme suite:



bande Composant Propriété valeur
qrlabel1 caption Ministère de l’éducation nationale
qrlabel2 caption direction de l’éducation Sétif
Qrlabel3 caption lycée Kirouani
Qrlabel4 caption BULLETIN DE SCOLARITE
Qrlabel5 caption nom
dataset fiche_bulletin.table1 qrdbtext1
datafield Nom_e
Qrlabel6 caption prenom
dataset fiche_bulletin.table1 Qrdbtext2
datafield Prenom_e
Qrlabel7 caption date & lieu de naissance
dataset fiche_bulletin.table1 Qrdbtext3
datafield Date_naissance
Qrlabel8 caption à
dataset fiche_bulletin.table1 Qrdbtext4
datafield Lieu
Qrlabel9 caption classe
dataset fiche_bulletin.table1 Qrdbtext5
datafield Ref_classe
Qrlabel10 caption doublant
dataset fiche_bulletin.table1
Titre
(agrandir la hauteur
de cette bande)
Qrdbtext6
datafield doublant
Qrlabel11 caption Matiere
Qrlabel12 caption Devoir
Qrlabel13 caption composition
Qrlabel14 caption Moy_20
Qrlabel15 caption coefficient
Qrlabel16 caption Moy_coef
Qrlabel17 caption professeur
Entête de colonnes




Qrlabel18 caption observation
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 98 -
dataset fiche_bulletin.table2 Qrdbtext7
datafield Matiere
dataset fiche_bulletin.table2 Qrdbtext8
datafield Devoir
dataset fiche_bulletin.table2 Qrdbtext9
datafield composition
dataset fiche_bulletin.table2 Qrdbtext10
datafield Moy_20
dataset fiche_bulletin.table2 Qrdbtext11
datafield coefficent
dataset fiche_bulletin.table2 Qrdbtext12
datafield Moy_coef
dataset fiche_bulletin.table2 Qrdbtext13
datafield professeur
dataset fiche_bulletin.table2
Detail
Qrdbtext14
datafield observation
Qrlabel19 caption Moyenne générale
dataset fiche_bulletin.query1 Qrdbtext15
datafield moy_gen
Qrlabel20 caption Resultat
Resumé
(agrandir la hauteur
de cette bande)
Qrlabel21 caption
Ensuite : on tape Shift + F12 et on affiche la fiche « fiche_bulletin »
Ensuite : on double clique sur le bouton « imprimer » et on écrit dans sa procédure :
Fiche_etat_bulletin.qrlabel21.caption := edit1.text ;
Fiche_etat_bulletin.quickrep1.preview ; // le bouton imprimer éxiste en haut de la fenêtre de prévisualisation.
En fin : on enregistre tous le travail par : (le menu Delphi) : fichier = tout enregistrer

8- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant «mainmenu1» et double clique sur son élément bulletin (sous menu
Edition)
Ensuite : on écrit dans la procédure : fiche_bulletin.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation
de la liaison entre la fiche_menu et la fiche_bulletin et on doit cliquer sur oui pour cette demande de confirmation ; on
recompile par Ctrl + F9 pour faire la liaison aussi entre la fiche_bulletin et la fiche_etat_bulletin et on doit cliquer sur
oui aussi pour cette demande de confirmation.

Remarques :
1- Pour que la fiche bulletin se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel :
- On tape : Shift + F12 et on clique sur la « fiche_bulletin » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»

2- on enregistre notre travail par le menu Delphi : fichier = tout enregistrer.

Remarque importante:
Pour contrôler le format d’affichage des nombres réels (champ de type float) dans une BD (limiter le nombre de chiffres
après la virgule) on procède comme suite :
- double clique sur le composant « table2 ».
- clique sur le champ à formater (pour nous on va manipuler les deux champs «moy_20» et «moy_coef»)
- Écrire dans sa propriété :

(# Représente un chiffre, donc 2 chiffres avant et après la virgule)
- Ensuite double clique sur le composant « query1 ».
- clique sur le champ à formater (pour nous on va manipuler le champ «moy_gen»)
- Écrire dans sa propriété :

+ Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements
possibles)

Display format
##.##
Display format
##.##
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 99 -
LA FICHE CONSULTATION ETUDIANT















1- choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom :
« fiche_consultation_etudiant».
Ensuite : (le menu Delphi): fichier = enregistrer, et dans le dossier « c:\scolarite\source » nommer l’unité:
«consultation_etudiant»
2- Insérer les composants suivants :
Palette Composant Propriété Valeur
supplement bitbtn kind bkclose
standard 1 label Caption Choisir la classe
databasename scolarite
tablename cla sse
BDE Table1
active true
Accésbd Datasource1 dataset Table1
listesource 1 datasource
listefield Ref_classe; designation_c
controlebd 1 dblookupcombobox
keyfield Ref_classe
databasename Scolarite
Sql select * from etudiant where ref_classe = :p
Params Clique sur « p » et choisir dans la propriété datatype : « ftinteger »
BDE Query1
Active True
Accésbd Datasource2 dataset Query1
supplement Speedbutton1 glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\find.bmp
standard 2 l abel Caption Choisir la specialite
databasename Scolarite
tablename specialite
BDE Table2
active true
Accésbd Datasource3 dataset Table2
listesource 3 datasource
listefield Ref_specialite; designation_s
2 dblookupcombobox
keyfield Ref_specialite
controlebd
Dbgrid1 datasource Datasource2
supplement Speedbutton2 glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\find.bmp
3 label Caption Etudiant doublant
text
standard
Combobox1
Items Oui
Non
supplement Speedbutton3 glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\find.bmp
databasename Scolarite
Sql select *
from etudiant t1,classe t2
where (t1.ref_classe = t2.ref_classe)
and (t2.ref_specialite = :p)
Params Clique sur « p » et choisir dans la propriété datatype : « ftinteger »
Query2
Active True
databasename Scolarite
Sql select * from etudiant where doublant = :p
Params Clique sur « p » et choisir dans la propriété datatype : « ftstring »
BDE
Query3
Active True
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 100 -
3- double clique sur le composant « speedbutton1 » et écrire :
query1.close;
query1.parambyname('p').asinteger:=table1.fieldbyname('ref_classe').asinteger;
query1.active:=true;
datasource2.dataset:=query1;

4- tapez F12 et double clique sur le composant « speedbutton2 » et écrire:
query2.close;
query2.parambyname('p').asinteger:=table2.fieldbyname('ref_specialite').asinteger;
query2.active:=true;
datasource2.dataset:=query2;

5- tapez F12 et double clique sur le composant « speedbutton3 » et écrire:
query3.close;
query3.parambyname('p').asstring:= combobox1.text ;
query3.active:=true;
datasource2.dataset:=query3;

6- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : SHIFT + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément etudiant (du sous menu
consultation)
Ensuite : on écrit dans la procédure : fiche_consultation_etudiant.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation
de la liaison entre la fiche_menu et la fiche_consultation_etudiant et on doit cliquer sur oui pour cette demande de
confirmation.

Remarques :
1- Pour que la fiche_consultation_etudiant se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du
logiciel :
- On tape : SHIFT + F12 et on clique sur la « fiche_consultation_etudiant » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»
2- on enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles)

FICHE STATISTIQUES DES ETUDIANTS

1- choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name»le nom:«fiche_statistiques_etudiant».
Ensuite:(le menu Delphi): fichier =enregistrer, et dans le dossier « c:\scolarite\source » nommer
l’unité:«statistiques_etudiant»
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 101 -
2- Insérer les composants suivants :
Palette Composant Propriété Valeur
databasename scolarite
tablename specialite
BDE Table1
Active true
Accèsbd Datasource1 Dataset Table1
databasename scolarite
Sql select t1.designation_s,count(t3.code_e)as nombre
from specialite t1, classe t2, etudiant t3
where (t1.ref_specialite = t2.ref_specialite)
and (t2.ref_classe = t3.ref_classe)
group by t1.designation_s
Query1
Active True
databasename scolarite
Sql select t1.designation_c,count(t2.code_e)as nombre
from classe t1, etudiant t2
where (t1.ref_classe = t2.ref_classe)
and(t1.ref_specialite = :p)
group by t1.designation_c
Params Clique sur « p » et choisir dans la propriété datatype : « ftinteger »
Query2
Active True
databasename scolarite
Sql select Doublant,count(Doublant)as nombre
from etudiant
group by doublant
BDE
Query3
Active True
supplement bit btn kind bkclose
Pagecontrol1
Clique droit sur ce composant et
clique sur « nouvelle page »
Caption Par Specialité
Clique droit sur ce composant et
clique sur « nouvelle page »
Caption Par Groupe
32 win
Clique droit sur ce composant et
clique sur « nouvelle page »
Caption Par Resultat
Dbgrid1(dans la page« Par Groupe») Datasource Datasource1 Controlebd
dBchart1 (Insérer ce composant sur le composant « pagecontrole1 » dans la page « Par Specialité» )
Et double clique sur ce composant « dbchart1 »
Et clique sur l’onglé inférieur « série »
Et clique sur le bouton Ajouter
Et clique sur le graphe de la forme « sectoriel »
Et clique sur le bouton Ok
Et clique sur l’onglé supérieur « série »
Et clique sur l’onglé « source de données »
Et choisir dans la liste l’élément « dataset »
Et choisir dans la liste dataset l’élément « query1 »
Et choisir dans la liste « libellé » l’élément « désignation_s »
Et choisir dans la liste « sectoriel » l’élément « nombre »
A la fin clique sur Fermer
Controlebd dBchart2 (Insérer ce composant sur le composant « pagecontrole1 » dans la page « Par Groupe»)
Et double clique sur ce composant « dbchart2 »
Et clique sur l’onglé inférieur « série »
Et clique sur le bouton Ajouter
Et clique sur le graphe de la forme « sectoriel »
Et clique sur le bouton Ok
Et clique sur l’onglé supérieur « série »
Et clique sur l’onglé « source de données »
Et choisir dans la liste l’élément « dataset »
Et choisir dans la liste dataset l’élément « query2 »
Et choisir dans la liste « libellé » l’élément « désignation_c »
Et choisir dans la liste « sectoriel » l’élément « nombre »
A la fin clique sur Fermer
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 102 -
Controlebd dBchart3 (Insérer ce composant sur le composant « pagecontrole1 » dans la page « Par Resultat»)
Et double clique sur ce composant « dbchart3 »
Et clique sur l’onglé inférieur « série »
Et clique sur le bouton Ajouter
Et clique sur le graphe de la forme « sectoriel »
Et clique sur le bouton Ok
Et clique sur l’onglé supérieur « série »
Et clique sur l’onglé « source de données »
Et choisir dans la liste l’élément « dataset »
Et choisir dans la liste dataset l’élément « query3 »
Et choisir dans la liste « libellé » l’élément « Doublant »
Et choisir dans la liste « sectoriel » l’élément « nombre »
A la fin clique sur Fermer

3- Dans l’événement "Afterscroll" du composant table1 on écrit :
query2.close;
query2.parambyname('p').asinteger:=table1.fieldbyname('ref_specialite').asinteger;
query2.active:=true;

Remarque :
Pour que la fiche statistiques etudiant affiche toujours les dernières modifications automatiquement (rafraîchissement
automatique des données du query1 et query2 et query3) : Clique sur la fiche_statistiques_etudiant
Dans son inspecteur d’objet double clique à droite de l’événement « onactivate »
Ensuite : écrire le code source suivant dans la procédure correspondante :
Query1.close ;
Query1.active :=true ;
Query2.close ;
Query2.active :=true ;
Query3.close ;
Query3.active :=true ;

4- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément scolarité (sous menu
statistiques)
Ensuite : on écrit dans la procédure : fiche_statistiques_etudiant.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation
de la liaison entre la fiche_menu et la fiche_statistiques_etudiant et on doit cliquer sur oui pour cette demande de
confirmation.

Remarques :
1- Pour que la fiche statistique etudiant se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du
logiciel :
- On tape : Shift + F12 et on clique sur la « fiche_statistique_etudiant » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»

2- on enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles)









Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 103 -
FICHE IMPRESSIONS
























1- choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name»le nom:«fiche_liste_etudiant».
Ensuite:(le menu Delphi): fichier =enregistrer, et dans le dossier « c:\scolarite\source » nommer l’unité:« liste_etudiant»
2- Insérer les composants suivants :
Palette Composant Propriété Valeur
Databasename scolarite
Tablename etudiant
BDE Table1
Active True
Accesbd Datasource1 Dataset Table1
controleBD Dbgrid1 Datasource Datasource1
Label1 Caption Filtrage Standard
Edit1 Text
Caption Imprimer certificat scolarite Speedbutton1
Glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer.bmp
Caption Imprimer carte etudiant Speedbutton2
Glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer.bmp
Supplément
Bitbtn1 Kind Bkclose
3- Pour faire le filtrage on double clique sur le composant edit1 et on écrit dans la procédure (onchange):
if edit1.text <> ‘’ then
begin
table1.close ;
table1.filtered :=true ;
table1.filter :=’[Nom_e]=‘ + #39 + edit1.text + ‘*’ + #39 ;
table1.active := true ;
end
else
begin
table1.close ;
table1.filtered := false ;
table1.active := true ;
end ;
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 104 -
4- pour préparer l’impression du CERTIFICAT DE SCOLARITE et de la carte etudiant on procède comme suite :
On insère une nouvelle fiche à notre logiciel par le choix dans le menu Delphi de : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom: « fiche_etat_liste_etudiant ».
Ensuite : (le menu Delphi): fichier =enregistrer, et dans le dossier « c:\scolarite\source » nommer l’unité:
«etat_liste_etudiant ».
5- pour imprimer le certificat de scolarite on insère dans cette fiche un composant « quickrep1 » de la palette
« qreport ».
Ensuite : on tape F12 et en haut de l’unité on écrit dans la liste «uses» le nom «liste_etudiant» et on compile Ctrl+F9
pour assurer la liaison entre la fiche_liste_etudiant et la fiche_etat_liste_etudiant.
Nb : par fois Delphi répète quelques unités de la partie uses si on écrit une nouvelle unité dans cette partie, donc on
doit supprimer les unités dupliquées si Delphi signal ce problème de répétition après la compilation du logiciel.
Ensuite : dans l’inspecteur d’objet de ce composant on écrit dans la propriété : zoom = 70
Ensuite : choisir dans sa propriété Bands: hastitle =true;
Ensuite : on agrandis la largeur de la bande titre et dans cette bande on insère les composants suivants de la palette
« qreport » :
bande Composant Propriété valeur
qrlabel1 caption Ministère de l’éducation nationale
qrlabel2 caption direction de l’éducation Sétif
Qrlabel3 caption lycée Kirouani
Qrlabel4 caption CERTIFICAT DE SCOLARITE
Qrlabel5 caption J’atteste, mois le directeur du lycée, que l’etudiant (e)
Qrlabel6 caption nom
dataset fiche_liste_etudiant.table1 Qrdbtext1
datafield Nom_e
Qrlabel7 caption prenom
dataset fiche_liste_etudiant.table1 Qrdbtext2
datafield Prenom_e
Qrlabel8 caption date & lieu de naissance
dataset fiche_liste_etudiant.table1 Qrdbtext3
datafield Date_naissance
Qrlabel9 caption à
dataset fiche_liste_etudiant.table1 Qrdbtext4
datafield Lieu
Qrlabel10 caption A suivi ses études cette année scolaire dans :
Qrlabel11 caption classe
dataset fiche_liste_etudiant.table1 Qrdbtext5
datafield Ref_classe
Titre
Qrlabel12 caption Cette attestation n’est livrée que pour servir à ce que de droit
Ensuite : on tape Shift + F12 et on affiche la fiche « fiche_liste_etudiant »
Ensuite : on double clique sur le bouton « imprimer certificat scolarite » et on écrit dans sa procédure :
Fiche_etat_liste_etudiant.quickrep1.preview ;
// le bouton imprimer éxiste en haut de la fenêtre de prévisualisation.
En fin : on enregistre tous le travail par : (le menu Delphi) : fichier = tout enregistrer
6- pour imprimer la CARTE ÉTUDIANT on insère dans la fiche_etat_liste_etudiant un composant « quickrep2 » de la
palette « qreport ».
Ensuite : dans l’inspecteur d’objet de ce composant on écrit dans la propriété : zoom = 70
Ensuite : choisir dans sa propriété Bands: hastitle =true;
Ensuite : on double clique sur ce composant « quickrep2 »
Choisir dans la fenêtre la liste : taille de papier = « taille personnalisée »
Écrire : largeur = 140 et longueur = 100 et clique sur Ok
Ensuite : on agrandis la largeur de la bande titre et dans cette bande on insère les composants suivants :
bande Composant Propriété valeur
qrlabel13 caption Ministère de l’éducation nationale
Qrlabel14 caption direction de l’éducation Sétif
Qrlabel15 caption lycée Kirouani
Qrlabel16 caption CARTE ETUDIANT
Qrlabel17 caption nom
dataset fiche_liste_etudiant.table1 Qrdbtext6
datafield Nom_e
Titre
Qrlabel18 caption prenom
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 105 -
dataset fiche_liste_etudiant.table1 Qrdbtext7
datafield Prenom_e
Qrlabel19 caption date & lieu de naissance
dataset fiche_liste_etudiant.table1 Qrdbtext8
datafield Date_naissance
Qrlabel20 caption à
dataset fiche_liste_etudiant.table1 Qrdbtext9
datafield Lieu
Qrlabel21 caption classe
dataset fiche_liste_etudiant.table1 Qrdbtext10
datafield Ref_classe
Qrlabel22 caption photo
dataset fiche_liste_etudiant.table1 Qrdbimage1
datafield photo
Ensuite : on tape Shift + F12 et on affiche la fiche « fiche_liste_etudiant »
Ensuite : on double clique sur le bouton « imprimer carte etudiant » et on écrit dans sa procédure :
Fiche_etat_liste_etudiant.quickrep2.preview ;
// le bouton imprimer éxiste en haut de la fenêtre de prévisualisation.
En fin : on enregistre tous le travail par : (le menu Delphi) : fichier = tout enregistrer

Remarque importante :
Pour imprimer la certificat de scolarité ou la carte étudiant de l’étudiant en cours (étudiant sélectionné) on ne choisit rien
dans la propriété « dataset » du composant « quickrep » (ie : cette propriété doit rester vide), cela aura comme résultat
que ces imprimées concerneront à chaque fois l’étudiant sélectionné.
7- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément impressions (du sous
menu états)
Ensuite : on écrit dans la procédure : fiche_liste_etudiant.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation
de la liaison entre la fiche_menu et la fiche_liste_etudiant et on doit cliquer sur oui pour cette demande de
confirmation ; on recompile par Ctrl + F9 pour faire la liaison aussi entre la fiche_liste_etudiant et la
fiche_etat_liste_etudiant et on doit cliquer sur oui aussi pour cette demande de confirmation.

Remarques :
1- Pour que la fiche liste etudiant se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel :
- On tape : Shift + F12 et on clique sur la « fiche_liste_etudiant» et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»
2- on enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles)


FICHE MOT DE PASSE









1-choisir dans le menu Delphi : fichier = nouveau = dialogue = dialogue de mot de passe.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name» le nom: « fiche_passe ».
Ensuite : (le menu Delphi) : fichier =enregistrer, et dans le dossier « c:\scolarite\source » nommer l’unité : « passe »
2- insérer un composant « table1 » (palette BDE) et manipuler ces propriétés :
Databasename = scolarite table name = protection active = true.
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 106 -
3- Double clique sur le bouton Ok et écrire dans sa procédure :
if password.text=table1.fieldbyname('password').asstring then
fiche_menu.showmodal
else
begin
showmessage('mot de passe incorrecte');
password.clear;
//le composant password est un simple composant Edit; donc password.clear; veut dire vider son texte.
password.setfocus;
end;

3- double clique sur le Bouton Annuler et écrire dans sa procédure : application.terminate ;

Remarques importantes:
a- Pour que la fiche_passe se lance la première lors de chaque éxécution du logiciel on choisit dans le menu Delphi :
Projet = options = dans l’onglés « fiche » = dans la liste « fiche principale » = choisir : « fiche_passe » = Ok
b- il faut ajouter les deux unités : messages, dialogs, dans la liste uses de l’unité « passe »
Nb : par fois Delphi répète quelques unités de la partie uses si on écrit une nouvelle unité dans cette partie, donc on
doit supprimer les unités dupliquées si Delphi signal ce problème de répétition après la compilation du logiciel.
+ Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles)

FICHE PROTECTION

















1- choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name»le nom:« fiche_protection ».
Ensuite : (le menu Delphi) : fichier =enregistrer, et dans le dossier « c:\scolarite\source » nommer l’unité:« protection»

2- Insérer les composants suivants :
Palette Composant Propriété Valeur
1 bitbtn kind bkclose supplement
2 bitbtn kind bkok
1 label caption Ancien mot de passe
text 1 edit
passwordchar *
2 label caption Nouveau mot de passe
text 2 edit
passwordchar *
3 label caption confirmation
text
standard
3 edit
passwordchar *
databasename scolarite
tablename protection
BDE 1 table
Active True



Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 107 -
3- double clique sur le composant « BitBtn2 » et écrire dans sa procédure:
If edit1.text = table1.fieldbyname(‘password’).asstring then
If edit3.text = edit2.text then
Begin
Table1.edit;
Table1.fieldbyname(‘password’).asstring:=edit2.text;
Table1.post;
Showmessage(‘ la modification du mot de passe est effectuée ’)
End
Else Showmessage(‘ la confirmation du mot de passe est incorrecte ’)
Else Showmessage(‘ l’’ancien mot de passe est incorrecte ’) ;

4- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément protection (du sous menu
outils)
Ensuite : on écrit dans la procédure : fiche_protection.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation
de la liaison entre la fiche_menu et la fiche_protection et on doit cliquer sur Oui pour cette demande de confirmation.

Remarques :
1- Pour que la fiche protection se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel :
- On tape : Shift + F12 et on clique sur la « fiche_protection » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»
2- on enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements
possibles)

FICHE ARCHIVAGE













1- choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name» le nom:« fiche_archivage ».
Ensuite : (le menu Delphi) : fichier =enregistrer, et dans le dossier « c:\scolarite\source » nommer l’unité:« archivage»


Palette Composant Propriété Valeur
name fichier FileListBox1
Mask *.db
DirectoryListBox1 name driverlist
name driver DriveComboBox1
Dirlist driverlist
Filelist fichier
win3.1
FilterComboBox1
filter *.db
BitBtn1 kind bkclose
caption archiver
supplement
Speedbutton1
glyph C:\Program Files\Fichiers communs\Borland shared\Images\Buttons\floppy.bmp
standard Label1 caption lecteur
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 108 -
2- tapez F12 et dans la liste uses de l’unité archivage Il faut ajouter l’unité : ShellAPI, .
3- tapez F12 pour revenir à la fiche et Insérer les composants suivants :

4- Double clique sur le composant speedbutton1 et écrire dans sa procédure :
if CopyFolder('c:\scolarite\base', driverlist.Directory) then
ShowMessage(‘Archivage effectué avec succès') else
ShowMessage('Archivage non effectué');

5- il faut inserer avant la procedure BitBtn4Click la fonction suivante :
function CopyFolder(FromFld, ToFld: string): boolean;
var fos: TSHFileopStruct;
begin
FillChar(fos, SizeOf(fos),0);
with fos do
begin
wFunc := FO_COPY;
pFrom := PChar(FromFld+#0);
pTo := PChar(ToFld+#0);
fFlags := FOF_SILENT or FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;
end;
Result := ShFileOperation(fos)=0;
end;

6- pour avoir un bon interface on doit cacher les deux composants «FileListBox1» et «FilterComboBox1»comme suite:
- clique par le bouton droit de la sourie sur le composant : « FileListBox1 » nommé « fichier » et choisir dans le menu
contextuel : « mettre en arrière plan » et mettre ce composant au-dessous du « DirectoryListBox1 » (driverlist).
- aussi, clique par le bouton droit de la sourie sur le composant : « FilterComboBox1» et choisir dans le menu
contextuel : « mettre en arrière plan » et mettre ce composant au-dessous du « DirectoryListBox1 » (driverlist).

7- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément archivage (du sous menu
outils)
Ensuite : on écrit dans la procédure : fiche_archivage.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation
de la liaison entre la fiche_menu et la fiche_archivage et on doit cliquer sur Oui pour cette demande de confirmation.

Remarques :
1- Pour que la fiche archivage se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel :
- On tape : Shift + F12 et on clique sur la « fiche_archivage » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»
2- on enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles)
+ Cette fiche necessite la création d'un dossier dans disque dur (nommé par exemple : archive2007) qui sera le
dossier ou on va archiver notre base de données.

FICHE CLOTURE









1- choisir dans le menu Delphi : fichier = nouvelle fiche.
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name» le nom:« fiche_Cloture».
Ensuite : (le menu Delphi) : fichier =enregistrer, et dans le dossier « c:\scolarite\source » nommer l’unité:« Cloture»
Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 109 -
2- Insérer les composants suivants :
Palette Composant Propriété Valeur
caption Vider Table Resultats 1 speedbutton
gl yph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\trash.bmp
supplement
Bitbtn1 kind bkclose
Databasename scolarite
Tablename resultat
BDE

Table1

Active True
controleBD Dbgrid1 Datasource Datasource1

3- double clique sur le « speedbutton1 » et écrire dans sa procédure :
While not (table1.eof) do
table1.delete ;
showmessage('la table resultats est vidée');
En fin : on enregistre tous le travail par : (le menu Delphi) : fichier = tout enregistrer

2- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément Cloture (du sous menu
outils)
Ensuite : on écrit dans la procédure : fiche_cloture.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation
de la liaison entre la fiche_menu et la fiche_cloture et on doit cliquer sur Oui pour cette demande de confirmation.

Remarques :
1- Pour que la fiche cloture se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel :
- On tape : Shift + F12 et on clique sur la « fiche_cloture » et on clique sur Ok.
- On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).
- On choisit dans sa propriété : « position = poScreenCenter»
2- on enregistre notre travail par le menu Delphi : fichier = tout enregistrer.
+ Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements
possibles)

FICHE A PROPOS










1- on peut insérer cette fiche par le menu Delphi :
Fichier = nouveau = fiche = boite à propos = Ok
Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name»le nom:«fiche_apropos».
Ensuite : (le menu Delphi): fichier=enregistrer, et dans le dossier « c:\scolarite\source » nommer l’unité:« apropos »
Ensuite : on écrit le texte qu’on veut dans les label et modifier la couleur et la taille des labels par leurs propriété
« FONT ». (Cette fiche est la carte visite du logiciel).

2- cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite :
On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.
Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément « a propos » (du sous
menu « ? »)

Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité
- 110 -
Ensuite : on écrit dans la procédure : fiche_apropos.showmodal ;
Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation
de la liaison entre la fiche_menu et la fiche_apropos et on doit cliquer sur oui pour cette demande de confirmation.

L’image de Logo :
1- dans la propriété picture du composant « image1 » on clique sur le bouton Charger et chercher l’image voulue.
(Delphi propose quelques images dans :
« C:\Program Files\Fichiers communs\Borland Shared\Images\Splash\256Color ».
2- en fin clique sur Ouvrir ensuite sur Ok
3- pour que l’image occupe toute la surface de son cadre on modifie sa propriété : Autosize = true.
4- pour que l’image s’agrandie si elle a une taille plus petite que la surface de son cadre on modifie sa propriété :
Stretch = true.
+ Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous le traitements possibles)

- 111 -


























Apprendre Delphi7 par l’exemple Chapitre 4 : trucs & Astuces
- 112 -
CRÉER UNE INSTALLATION
Lorsque vous commencerez à faire des logiciels assez grand, vous aurez sûrement envie de créer un programme
d'installation (pour tous type de logiciels, qu'il soit réalisé en Delphi, en C++ Builder, en Java…)
On va montrer comment créer un programme d'installation pour le Logiciel Gestion Commerciale :
1- Télécharger Inno Setup
Il existe de nombreux outils permettant de créer une installation : InstallShield , Inno Setup …
2- Créer une nouvelle installation
Cochez l’option : "Create a new script file using the Script Wizard" :












Cliquez sur OK. Ne cochez pas la case, cliquez sur Next,












Vous devez rentrer le nom de votre programme, Choisir le dossier d'installation du programme.
le nom de votre programme avec le numéro de version, Laisser cocher la case "Allow user to change the
le nom du créateur ainsi que le site web du programme. application directory". Cela permettra à
l'utilisateur de changer le chemin d'installation.







les fichiers à empaqueter.
le chemin de l'exécutable (le .exe du logiciel).
Donc : c:\commerce\source\commerce.exe
en-dessous, laisser cochée la case :
elle permet de laisser la possibilité à l'utilisateur de démarrer
le programme automatiquement à la fin de l'installation.
La case "The application doesn't have a main executable file"
ne sera généralement pas cochée. Elle ne sert que pour
les programmes ne possédant pas de .exe principal.
les "Other application files". Vous devez indiquer tous
On vous demande le
nom du dossier dans le
menu démarrer.
Apprendre Delphi7 par l’exemple Chapitre 4 : trucs & Astuces
- 113 -
les fichiers dont a besoin votre programme pour fonctionner.
( les DLL dont a besoin le programme, les images, les sons etc...)
Allow user to change Start Menu folder name : l'utilisateur peut changer le nom du dossier du menu démarrer.
Allow user to disable Start Menu folder creation : l'utilisateur peut désactiver la création des raccourcis dans le
menu démarrer.
Create an Internet Shortcut in the Start Menu folder : un lien vers votre site web sera ajouté au Menu Démarrer
Create an Uninstall icon in the Start Menu folder : ajoute une icône de désinstallation dans le menu démarrer.
Allow user to create a desktop icon : laisse la possibilité à l'utilisateur de créer un raccourci sur le bureau. Allow
user to create a Quick Launch icon : l'utilisateur peut créer un raccourci dans la barre Quick Launch. C'est une barre
de raccourcis située juste à droite du menu Démarrer.










Les fichiers texte à afficher avant et après l'installation
(ainsi que la license du programme).
Vous pouvez indiquer n'importe quel fichier .txt
(ou .rtf si vous voulez faire un peu de mise en forme
comme mettre de la couleur, du gras...). Par
exemple, vous pourriez indiquer les bugs connus
de votre programme, les améliorations apportées
par la nouvelle version etc.
La partie "License File" sera utile notamment si
vous distribuez votre programme sous
license libre (GNU / GPL) comme ça se fait le plus
souvent pour les programmes Open Source.










Le premier champ permet d'indiquer dans quel dossier
devra être créé le programme d'installation.
Ensuite, on vous demande le nom du programme d'installation.
Le troisième champ permet de choisir un fichier
d'icône (.ico) personnalisé pour l'installation.
le 4ème champ permet de protéger l'installation
par mot de passe. Seuls ceux qui connaissent
le mot de passe pourront installer votre programme.
La fenêtre suivante est la dernière :
vous n'avez plus qu'à cliquer sur Finish !
Les langues disponibles dans le programme
d'installation.
Si vous cochez plusieurs langues, on
demandera la langue désirée au début de
l'installation.

Compiler l'installation, cliquez sur Oui
Au bout de quelques secondes,
le programme d'installation a été généré !
Apprendre Delphi7 par l’exemple Chapitre 4 : trucs & Astuces
- 114 -
CONCEPTION DES FICHIERS HELP POUR LES LOGICIELS

On procède en 3 étapes :

I. DANS L’EDITEUR DE TEXTE MICROSOFT WORD :
1- On insére le nombre de pages nécessaire à notre fichier d’aide (à savoir le nombre de fiches du logiciel qu’on
veut éxpliquer).
L’insertion d’une nouvelle page se fait comme suite :
Choisir dans le menu Word : insertion = saut = Osaut de page = Ok.
2- On écrit en suite dans chaque page l'explication du fonctionnement d'une fiche du logiciel.
3- En haut de chaque page il faut écrire un mot clé qui va être indexé ensuite par le fichier d’aide, l’indexation se
fait par l’insertion dU symbole # pour indexer une page d’éxplication ( appelée Map ) attribuée à une fiche ou un
message de dialogue.
Donc on suit les étapes suivantes :
· ·· · On pose le curseur devant le mot clé d’une page choisie :
Exemple : pour la page d’explication de la fiche Client on ecrit dans la premier ligne de la page le titre : Client
ensuite on met le surseul du claveir avant ce mot.
· ·· · Dans le menu on choisit : insertion = note de bas de page.
· ·· · Une boite de dialogue s’affiche ou on écrit dans sa zone de texte « personnalisé » le symbole # et on ferme
cette boite par Insérer.
· ·· · Le curseur se pointe automatiquement en bas de page précédé par le symbole choisi (#), on écrit le mot
identificateur de cette page d’aide (généralement ça sera le mot clé de la page, donc pour notre exemple on
ecrit Client).
· ·· · On répète ce procédé pour toute les pages du fichier d‘aide.
4- On fini l’opération en enregistrant ce fichier Word avec format RTF (rich text format) (format text riche).

II. DANS LE COMPILATEUR HCW :
1- Dans cette étape on doit lancer le compilateur HCW.EXE proposé par l’environnement Delphi pour formater et
compiler notre fichier Help (chemin de ce fichier : c:\program files\borland\delphi7\help\tools).
2- On choisit dans son menu : file = new et on choisit le type du fichier Help (pour nous on choisit : Help Project)
Et on donne un nom à ce projet (l’extension sera par défaut HLP).
3- Une fenêtre d’édition du Help s’affiche et on manipule les Boutons à droite comme suite :
· ·· · Clique sur le bouton FILE ou on se pointe vers le fichier RTF contenant le texte d’aide crée en Word et cela
en cliquant sur le bouton ADD (possibilité d’addition de plusieurs fichiers d’aide RFT).
· ·· · Clique sur le bouton MAP ou on va indexer les pages d’éxplication des fiches et messages de dialogue, et
cela en cliquant pour chaque Map sur le bouton ADD et on insère dans la zone « Topic ID » le mot clé du Map
(l’un des mot clés d’indexation écrit dans les bas de pages en Word qu’on les a précédé par les symboles #.
Pour notre page d’exemple on ecrira : Client) ; et dans la zone « Mapped numeric value » on insére un numéro
de cette page d’aide (un nombre entier >=1).
· ·· · En fin on compile notre fichier en cliquant sur le bouton : SAVE AND COMPILE et notre fichier Help final
sera généré (il faut que le compilateur indique 0 notes (pas d’erreurs de compilation)).

III. DANS NOTRE LOGICIEL DELPHI :
1- On fait la liaison entre notre logiciel et notre fichier Help en insérant la commande suivante dans l’événement
« oncreate » du menu principal :
application.helpfile :=’c:\mes documents\Tp.hlp’ ;
{En supposant que le fichier Help été enregistré sous le nom Tp.hlp dans le dossier mes documents}.
2- Pour lier un bouton d’aide à une page d’aide (Map) on écrit dans son événement « Onclick » :
application.helpcommand(help_context,5) ;
//5 est le numéro de la page d’aide (Map) liée à ce bouton d’aide
Cette instruction peut être utilisée aussi dans le menu : ? = Aide.
3- pour lier une fiche à sa page help correspendante :
· ·· · On clique sur cette fiche en évitant tous ses composants.
· ·· · On écrit dans sa propriété : « helpcontext » le numéro de sa page d’aide (exemple 10), cette page (10)
s’affichera lors de l’éxécution du logiciel si on tape dans cette fiche sur la touche F1.
· ·· · Aussi on modifi la propriété KeyPreview = true.
4- Pour lier un message dialogue à une page d’aide (Map) on écrit ce message comme suite :
Messagedlg(‘je vous propose un Help’, MTinformation, [MBKO], 25) ;
{25 est le numéro de page d’aide (Map) liée à ce message de dialogue}
Apprendre Delphi7 par l’exemple Chapitre 4 : trucs & Astuces
- 115 -

SKIN DATA
C'est un utilitaire qui aide a modifier l'interface d'un logiciel (améliorer la partie visuelle du logiciel)
- on doit avant telecharher ce composant d'un site web quelconques (plusieurs sites de developpement
proposent ce composant avec une grande variétés d'interfaces possible).
- Après on doit installer ce composant pour que Delphi pourra l'utiliser (après l'installation de ce composant, il
apparaît a la fin de la palette des composants comme un objet a inserer dans une fiche du votre
application).
- Il vaut mieu inserer le composant skindata dans la premiére fiche lancée du logiciel qui sera generalement la
fiche de mot de passe, cela assure la modification de l'interface de tous les autres fiches suivantes.
- Après l'insertion de ce composant on choisi le modele d'interface voulu dans sa propriété
-

(on trouve tous les modeles proposés par skindata dans le dossier skins du chamin d’installation de skindata)
- On suite on choisi dans la propriété :
On lance l'execution et tous le logiciel changera d'interface.


La forme de la fiche
après avoir utiliser le
composant SKINDATA
Clic Ici
Apprendre Delphi7 par l’exemple Chapitre 4 : trucs & Astuces
- 116 -
QUELQUES MODÈLES





























































Une fiche avec le
modele STEEL
Une fiche avec le
modele DEEP
Une fiche avec le
modele RealOne

Une fiche avec le
modele MSN


- 117 -

































































































Apprendre Delphi7 par l’exemple Annexe
- 118 -
LES COMPOSANTS DELPHI LES PLUS UTILISÉS

COMPOSANT PROPRIETE EVENEMENTS
STANDARD
MAINMENU
Création d’un menu
principal


Items : (ou bien double clique sur le MainMenu) pour afficher
l’éditeur du menu principal.
Images : pour lier un composant image (avec sa gamme des
icônes) au MainMenu.
Pour chaque élément du menu :
Caption : pour donner un nom à l’élément.
Imageindex : pour lier une image à cet élément.
Shortcut : affecter un raccourci clavier à cet élément.
Onclick : pour chaque élément
du menu principal on
introduit dans cet événement
le code source adéquat.
POPUPMENU
Création d‘un menu
turbo
Items : (ou double clique sur le PopupMenu) pour afficher
l’éditeur du menu turbo.
Images : pour lier un composant image (avec sa gamme des
icônes) aux PopupMenu.
Pour chaque élément du menu :
Caption : pour donner un nom à l’élément.
Imageindex : pour lier une image à cet élément.
Shortcut : affecter un raccourci clavier à cet élément.
Onclick : pour chaque élément
du menu turbo on introduit
dans cet événement le code
source adéquat.
LABEL
Éclaircir l’interface


Caption : pour donner un nom d’interface au composant.
Font : pour manipuler le format du texte.
Onclick
Onmousemove.
EDIT
Zone de saisie


Font : pour manipuler le format du texte.
Text : représente le texte saisie (propriété à manipuler)
Onchange
Onkeydown.
BUTTON
Bouton d’action
encapsulant un code
source
Caption : pour donner un nom d’interface au bouton
Font : pour manipuler le format du texte.
Hint : pour introduire le texte d’aide.
Showhint : pour afficher le texte d’aide.
Popupmenu : assure la liaison avec un PopupMenu.
Onclick
Onkeydown
Onmousemove
CHECKBOX
Case à cocher (choix
libre)
Caption : pour donner un texte d’interface au bouton
Checked : contrôle l’état (cocher ou décocher)
Onclick
Onmousemove.
RADIOBUTTON
Case à option (choix
exclusif)
Caption : pour introduire le texte d’interface.
Checked : pour voir si le composant est coché ou non
Onclick
Onmousemove.
COMBOBOX
Liste déroulante de choix
Items : pour introduire les éléments de la liste ligne par ligne.
Text : contient la valeur choisie parmi celles de la liste
Onchange
Onclick
Onkeydown.
SUPPLEMENT
BITBTN
Bouton autoprogrammé
Kind : choisir le comportement du bouton.
(bkclose pour fermer une fiche)
Onclick
Onkeydown
Onmousemove
SPEEDBUTTON
Bouton d’action favorisé

Gliph : affecter une image (icône) à ce bouton.
Hint : introduire un texte d’aide au bouton.
Showhint : afficher le texte d’aide

Onclick
Onmousemove
IMAGE
Image d’ariere plan ou
de logo
Stretch : la taille de l’image sera égale la taille du cadre
Autosize : agrandir l’image a la taille de son cadre.
Align : l’image occupera tous l’espace de la fenetre (alclient)
Picture : choisir une image dans le disque dur.


Apprendre Delphi7 par l’exemple Annexe
- 119 -
WIN32
PAGECONTROL
Propose des pages à
onglets
Clique par le bouton droite de la sourie sur le composant et
choisir dans le menu turbo « nouvelle page ».on clique sur le
cadre intérieur de chaque page « tabsheet » et on introduit
dans sa propriété « caption » le nom de la page.
Onchange
Onmousemove
IMAGELIST
Liste d’icônes à
introduire dans un menu
ou une barre d’outils.
Double clique sur le composant et dans la boite de dialogue
qui s’affiche on clique sur le bouton «ajouter » pour insérer
une nouvelle image à la gamme déjà choisie. à la fin il faut
supprimer le double flou de chaque image par le bouton
« supprimer ».
Onchange
ANIMATE
Propose des effets
d’animation
CommonAVI : cette propriété propose une liste des effets
d’animation.
Active : cette propriété provoque le lancement l’animation
(active :=true)
Onstart
Onstop
DATETIMEPICKER
Pointeur vers une date
Ce composant contrôle la date sous forme d’un calendrier, la
date choisie sera dans sa propriété « date ».
Onchange
Onclick
Onkeydown.
TOOLBAR
Création d’une barre
d’outils
Ce composant se place automatiquement dans la partie haute
(entête) de la fiche, mais on peut manipuler sa position par la
propriété « Align ». Pour ajouter un nouveau bouton on clique
par le bouton droite de la sourie sur ce composant et on choisit
sur le menu turbo l’élément « nouveau bouton », à la fin on
fait la liaison entre une gamme d’images préparée dans le
composant «imagelist» et la barre d’outils par sa propriété
«images»
Onclick
OnMouseMove.
SYSTEME
TIMER
Boucle chronologique
Ce composant assure la répétition d’une action dans un
intervalle de temps fixé par la propriété « interval ». Par le
double clic sur ce composant on pourra créer une procédure
« Ontimer » qui contiendra les instructions à répéter
consécutivement.
OnTimer
MEDIAPLAYER
Animation multimédia
Filename : cette propriété assure la liaison entre ce composant
et un fichier vidéo, audio…. Qu’on va utiliser.
Devisetype : représente le type du fichier multimédia à
manipuler. L’instruction qui déclenche l’effet multimédia est:
Mediaplayer1.play ;
Onclick
ACCEESBD
DATASOURCE
Composant intermédiaire
d’accès BD
Dataset : représente la source de données (table, requête SQL
…) liée avec ce composant.
OnDataChange
OnUpDateData
BDE
TABLE
Composant d’accès à une
table d’une BD
Databasename : représente l’alias de la table
Tablename : la table à manipuler.
Name : le nom de programmation de la table.
Active :=true pour activer la connexion à la BD.
Beforeopen, Afteropen
Beforeedit, Afteredit
Beforeinsert, Afterinsert…
QUERY
Requête SQL


Databasename : l’alias de la (les) table(s) qu’on va manipuler
dans la requête.
SQL : cette propriété lance une petite fenêtre d’édition du
script SQL de cette requête.
Params : pour donner le type de chaque paramètre.
Active :=true pour activer la requête.
Beforeopen, Afteropen
Beforeedit, Afteredit
Beforeinsert, Afterinsert
……..
Apprendre Delphi7 par l’exemple Annexe
- 120 -
CONTROLBD
DBGRID
Affichage de la source de
données (champs et
enregistrements)
Datasouce : cette propriété sera liée avec le composant
DATASOURCE représentant la source de données à afficher.
OnColExit
OntTitleClick
DBNAVIGATEUR
Représente les
principaux opérations de
manipulation des BD.
Datasouce : cette propriété sera liée avec le composant
DATASOURCE représentant la source de données à
contrôler.
Beforeaction
onclick
DBEDIT
Affiche un champ d’une
source de données.
Datasource : représente la source de données.
Datafield : représente le champ de données à afficher.
Onchange
Onkeydown.
DBCOMBOBOX
Affiche un champ d’une
source de données et
propose une liste de
valeurs à introduire.
Datasource : représente la source de données.
Datafield : représente le champ de données à afficher.
Items : contient la liste des valeurs à proposer à introduire
dans la BD.
Onchange
Onclick
Onkeydown.
DBLOOKUPCOMBOBOX
Afficher un champ d’une
source de données et
proposer une liste de
valeurs à introduire à la
BD d’une autre source
Datasource : représente la source de données.
Datafield : représente le champ de données à afficher.
Listesource : la source des données de la liste.
Listefield : le(s) champ(s) dans la liste
Keyfield : le champ qu’on affichera sa valeur.
Onclick
Onkeydown.
DBCHART
Représentation graphique
d’une source de données.
On double clique sur ce composant et dans la boite de
dialogue qui s’affiche on clique sur le bouton ajouter de
l’onglet série (inférieur) pour choisir le type de la
représentation graphique, et dans l’onglet série (supérieur) On
choisit dans le sous onglet source de données dans la liste
l’élément « dataset » et on fait la liaison avec notre data
source et on choisit le champ d’étiquettes « libellés » et le
champ de quantifications « sectorielle »
OnClick
OnZoom
QREPORT
QUICKREP
Etat d’impression


Bands : pour introduire les bandes dans l’état
Dataset : représente la source de données à imprimer
Zoom : contrôle la taille de l’état à la conception
Onpreview
Beforeprint
QRLABEL
Interface de l’état


Caption : insertion du texte à imprimer (texte fixe).
Font : pour manipuler le format du texte à imprimer.
Onprint
QRDBTEXT
Imprimer les données
d’un champ d’une BD
Datasource : représente la source de données.
Datafield : représente le champ de données à afficher.
Onprint
QRSHAPE
Formes d’encadrement
Ce composant aide à encadrer les éléments de l’état
d’impression pour mieux les présenter. Sa propriété « shape »
nous donne le choix du style d’encadrement.

DIALOGUES
OPENDIALOG
Boite dialogue ouvrir


Ce composant utilise les DLL Windows pour afficher la boite
de dialogue standard d’ouverture d’un fichier. La propriété
« filename » donne le nom et l’emplacement du fichier ouvré.
Onclose
Onshow
FONTDIALOG
Boite dialogue police


utilise les DLL Windows pour afficher la boite de dialogue
standard de manipulation de la police d’écriture. La propriété
« font » donne les paramètres de la police choisie.
Onclose
Onshow
COLORDIALOG
Boite dialogue couleur
utilise les DLL Windows pour afficher la boite de dialogue
standard de manipulation de la couleur. La propriété « color »
donne les paramètres de la couleur choisie.
Onclose
Onshow

SOMMAIRE
Chapitre 1 : Introduction à Delphi7...........................................................................................................4 Leçon1 : Delphi7, généralités ......................................................................................................................5 Leçon2 : Les premiers pas...........................................................................................................................9 TP1 : Jeu de couleurs .....................................................................................................................................9 TP2 : Calcul de la moyenne .........................................................................................................................11 TP3 : Calcul du factoriel ..............................................................................................................................12 TP4 : Chargement d’une image ...................................................................................................................13 Leçon3 : Avancer plus ...............................................................................................................................14 TP1 : Interface des couleurs.........................................................................................................................14 TP2 : Lancement d’un exécutable à partir d’une fiche Delphi ...................................................................16 TP3 : Les commentaires ..............................................................................................................................16 TP4 : La manipulation de l’interface par clavier .........................................................................................17 Leçon4 : Messages, Multimedia et autres ...............................................................................................18 TP1 : Les messages de dialogue ..................................................................................................................18 TP2 : Les fichiers multipedia.......................................................................................................................19 TP3 : Les animations ...................................................................................................................................19 TP4 : Les boucles de temps .........................................................................................................................20 TP5 : Dessiner une fonction.........................................................................................................................20 TP6 : Barre de progression ..........................................................................................................................20 Leçon5 : Menu principal et barres d’outils ............................................................................................21 TP1 : Le menu principal ..............................................................................................................................21 TP2 : Les barres d’outils ..............................................................................................................................22 Leçon6 : La programation des bases de données....................................................................................23 TP1 : Création d’un alias de base de données..............................................................................................23 TP2 : Création d’une table ...........................................................................................................................24 TP3 : Connexion et affichage d’une base de données dans une fiche Delphi .............................................25 TP4 : Les champs calculés et les boucles dans une BD (exemple : facture) ...............................................25 TP5 : Les champs calculés et les boucles dans une BD (exemple : Bulletin) .............................................28 TP6 : Le DBNavigateur ...............................................................................................................................29 Leçon7 : Les index secondaires et leurs utilisation .................................................................................30 TP1 : La création des index secondaires......................................................................................................30 TP2 : Le trie d’une table .............................................................................................................................31 TP3 : le filtrage d’une table ........................................................................................................................32 TP4 : la recherche simple dans une table ....................................................................................................33 TP5 : les relations maitre-detail ..................................................................................................................33 Leçon8 : Introduction aux requetes SQL ...............................................................................................35 Présentation generale ..................................................................................................................................35 TP1 : Les requetes SQL les plus utilisées ...................................................................................................36 TP2 : La consultation par des requetes parametrées....................................................................................38 TP3 : Les graphes.........................................................................................................................................39 Leçon9 : Les états d’impression ...............................................................................................................40 Introduction .................................................................................................................................................40 TP1 : imprimer les enregistrements d’une table (liste des produits) ...........................................................41 Leçon10 : Delphi est un RAD....................................................................................................................43 TP1 : une fiche simple d’impression d’une table ........................................................................................43 TP2 : Une fiche simple de connexion et d’affichage et d’impression d’une table .....................................44 TP3 : Une fiche maitre-detail entre deux tables ..........................................................................................45 TP4 : TP Exemplaire ..................................................................................................................................45 -2-

Chapitre 2 : Logiciel gestion commerciale...............................................................................................46 Préparation du Logiciel ...............................................................................................................................47 Fiche Menu .................................................................................................................................................48 Fiche Produit................................................................................................................................................50 Fiche Client .................................................................................................................................................52 Fiche Fournisseur ........................................................................................................................................54 Fiche Facture Achat ....................................................................................................................................56 Fiche Facture Vente ....................................................................................................................................61 Fiche Consultation Achats ..........................................................................................................................67 Fiche Consultation Ventes ..........................................................................................................................69 Fiche Statistiques Reglement.......................................................................................................................71 Fiche Mot de Passe .....................................................................................................................................72 Fiche Protection ...........................................................................................................................................73 Fiche Archivage ..........................................................................................................................................74 Fiche Inventaire ..........................................................................................................................................75 Fiche Cloture ...............................................................................................................................................77 Fiche À propos ............................................................................................................................................79 Chapitre 3 : Logiciel gestion scolarité......................................................................................................80 Préparation du Logiciel ...............................................................................................................................81 Fiche Menu .................................................................................................................................................82 Fiche Etudiant ..............................................................................................................................................83 Fiche Matiére ..............................................................................................................................................87 Fiche Professeur ..........................................................................................................................................90 Fiche Spécialité ...........................................................................................................................................92 Fiche Bulletin ..............................................................................................................................................94 Fiche Consultation Etudiant ........................................................................................................................99 Fiche Statistiques des Étudiants ................................................................................................................100 Fiche Impression........................................................................................................................................103 Fiche Mot de Passe ...................................................................................................................................105 Fiche Protection .........................................................................................................................................106 Fiche Archivage ........................................................................................................................................107 Fiche Cloture .............................................................................................................................................108 Fiche À propos ..........................................................................................................................................109 Chapitre 4 : Trucs & astuces .................................................................................................................111 Créer une installation .................................................................................................................................112 Conception des fichiers help pour les logiciels..........................................................................................114 Le skin Data ..............................................................................................................................................115 Annexe ......................................................................................................................................................117 Les composants de base (Propriétés et venements) ...................................................................................118

-3-

-4-

Apprendre Delphi7 par l’exemple

Chapitre 1 : Introduction à Delphi7

LEÇON 1 : DELPHI7, GÉNÉRALITÉS
1- INTRODUCTION
Delphi est un environnement de programmation visuel orienté objet permettant de développer des applications sous Windows. Il représente la suite logique de la famille turbo Pascal avec ses nombreuses versions (précisément le pascal objet). Delphi est un outil moderne, puissant, faisant appel à une conception visuelle des applications, à la programmation orientée objet, à une bibliothèque de composants très riche (la VCL: Visual Components Library), aux fichiers DLL (Dynamic Link Library) et API (Application Programming Interface) de Windows; Delphi se classe comme l’un des meilleurs environnement de développement rapide des applications (RAD) dans le monde informatique. Delphi, c’est aussi un produit qui évolue avec le temps. Chaque nouvelle version possède son lot de nouveautés. Voici les versions successives : Delphi 1 est le premier environnement pascal RAD sous Windows 3.11 (visuel). Delphi 2 marque le passage au mode 32 bits avec Windows 95. Delphi 3 supporte déjà les Active X, ainsi que l’aide à la saisie dynamique. Delphi 4 propose les tableaux dynamiques. Delphi 5 ouvre l’accès natif aux bases de données ADO et interbase. Delphi 6 introduit dbExpress et les composants portables de la CLX. Et en fin, Delphi 7, Delphi 8 et récemment Delphi 2006 et 2007 qui sont sans doute les versions les plus enrichies de toute l’histoire du produit.

2- ENVIRONNEMENT DELPHI Démarrage de Delphi
Vous pouvez démarrer Delphi de plusieurs façons : • Double-cliquer sur l’icône Delphi (si vous avez créé un raccourci). • Choisir Programmes Borland Delphi 7 Delphi 7 dans le menu Démarrer de Windows. • Choisir Exécuter dans le menu Démarrer de Windows, puis entrer Delphi32. • Double-cliquer sur Delphi32.exe dans le répertoire Delphi\Bin.

L’EDI
Lorsque vous démarrez Delphi pour la première fois, vous voyez apparaître quelques-uns des principaux outils proposés dans l’EDI (environnement de développement intégré). Dans Delphi, l’EDI comprend des barres d’outils, des menus, la palette de composants, l’inspecteur d’objets, l’arborescence d’objets, l’éditeur de code, l’explorateur de code, le gestionnaire de projet et bien d’autres outils. La vue arborescente de l’objet affiche une représentation hiérarchique des relations parent enfant des composants. La barre des menus et les barres d’outils permettent d’accéder à tout un ensemble de fonctions qui vous aident à écrire vos applications. La palette de composants contient des composants (visuels ou non) prêts à être utilisés dans vos projets, regroupées par familles (pages à onglets). C’est la VCL de Delphi. L’éditeur de code, ou l’unité, permet d’afficher et de modifier le code source de votre application. La saisie du code source est assistée (semi-automatique). Le concepteur de fiche contient une fiche vierge pour démarrer la conception de l’interface utilisateur de votre application. C’est le support des composants utilisés. Une application peut comporter plusieurs fiches (fenêtres). La bascule fiche/unité se fait par la touche F12 L’inspecteur d’objets permet de changer des propriétés et d’utiliser le gestionnaire d’événements de l’objet sélectionné. On affiche l’inspecteur d’objet par F11 ou ENTREE L’explorateur de code montre les classes, variables et routines de votre unité et vous permet de naviguer rapidement.

-5-

Apprendre Delphi7 par l’exemple

Chapitre 1 : Introduction à Delphi7

Les barres d’outils de Delphi permettent un accès rapide aux opérations et aux commandes les plus utilisées. La plupart des opérations accessibles dans les barres d’outils se retrouvent dans les menus déroulants.

De nombreuses opérations possèdent des équivalents clavier ainsi que des boutons dans la barre d’outils. Lorsqu’un raccourci clavier est disponible, il est toujours inscrit à côté de la commande dans le menu déroulant. Voir la liste des unités (Ctrl +F12) voir la liste des fiches (Shift + F12) Basculer Unité/Fiche (F12) Nouvelle Fiche Exécuter (F9) Ajouter un fichier au projet Retirer un fichier du projet Ouvrir un projet Tout enregistrer (Le projet et les fichiers associés) Enregistrer (enregistrer uniquement la fiche actuelle) Ouvrir un fichier (fiche ou projet) Nouveau (fenêtre de choix: Application, console, fiche, …etc.)

L’inspecteur d’objet
Chaque composant possède des attributs spécifiques (propriétés, événements et méthodes) vous permettant de contrôler votre application. Utilisez l’inspecteur d’objets pour définir des propriétés de conception, créer des gestionnaires d’événements, filtrer la visibilité des propriétés et des événements, ce qui établira le lien entre l’apparence visuelle de votre application et le code qui la fait s’exécuter. Vous pouvez changer la manière dont un composant s’affiche (propriétés) et se comporte (événements) dans votre application en utilisant l’inspecteur d’objets. Lorsqu’un composant est sélectionné sur la fiche, ses propriétés et ses événements sont affichés dans l’inspecteur d’objets. L’arborescence d’objets, l’inspecteur d’objets et le concepteur de fiche fonctionnent ensembles. Quant vous cliquez sur un objet de votre fiche, la focalisation change à la fois dans l’arborescence et dans l’inspecteur d’objets et réciproquement. Appuyez sur ALT-SHIFT-F11 pour passer la focalisation à l’arborescence d’objets. Utiliser cette liste déroulante pour sélectionner un objet. Si un objet est sélectionné, les membres de sa classe (propriétés et événements )seront affichés. Sélectionnez une propriété et changez sa valeur dans la colonne de droite.

-6-

comme s'il avait une fiche associée. et encore bien d'autres choses. Le schéma ci-dessous représente la transformation d'un projet en application.pas ».pas ). …). ce qui doit se passer dans certaines situations (lorsqu'on clique sur un bouton par exemple). mais certaines unités n'ont pas. Cette fiche. Ceci est utile par exemple pour rassembler des morceaux de programme qui n'ont aucun rapport avec une quelconque fiche. Ce projet comporte deux fiches (avec les unités associées) ainsi qu'une unité seule : -7- . Chaque fiche est stockée dans un fichier comportant l'extension 'DFM' (exemple : bulletin.dfm ». Un projet non compilé (c'est-à-dire avant sa transformation en logiciel). contient ces fenêtres (à l'état non compilées également) : les fiches. mais il n'en a pas : il n'y a pas de fichier nommé identiquement. Le fichier qui contient cette unité porte l'extension 'PAS'. Chaque fiche a son unité correspondante. qui contiendra tout ce qui se rapporte à cette fiche : ce qu'elle contient (boutons.pas » est un bien mauvais choix !). Une sage habitude est de consacrer complètement un répertoire (dossier) à chaque application qu'on souhaite programmer (chaque projet). Ces fichiers sont la forme compilée des fichiers de même nom qui portent les extensions 'PAS' et 'DFM' : un 'PAS' (avec son 'DFM' associé s'il y en a un) est transformé en 'DCU' lors de la compilation. essayez de vous habituer à ces abus de langage). voire la figure suivante : Figure : la nomination des fches & unités Il est également possible d'utiliser des unités qui n'ont pas de fiche associée. Chaque unité est stockée dans un fichier comportant l'extension 'PAS' (exemple : bulletin. Par exemple. sera transformée en fenêtre. menus. La fiche et son unité associée portent le même nom (mais pas la même extension) (Delphi ne demande ce nom d’enregistrement qu'une seule fois et l'utilise automatiquement pour l'unité et la fiche. Chaque projet compilé devient une application. et souvent plus). Pensez en outre à donner des noms descriptifs. son unité associée sera stockée dans le fichier nommé « bulletin. avec les éléments que vous devez désormais connaître. Ce répertoire contiendra tous les fichiers constituant le projet (le nombre de fichiers augmentera au fur et à mesure que le projet s'étoffera). « unit1. Un projet sous Delphi est constitué d'un fichier-projet (portant l'extension 'DPR'). Lors de la compilation du projet (transformation en application). Ce fichier est nommé avec le même nom de base que celui du fichier projet (fichier DPR). Un projet se compose d'un certain nombre de fichiers. c’est la partie visuelle d’une application. ou au moins significatifs lors des enregistrements des unités ou des fiches (Ainsi. de fiche associée (il y a toujours au moins autant d'unités que de fiches dans un projet. d'unités et de fiches. mais avec l'extension 'DFM'. ainsi vous n'avez aucun risque de vous tromper). A chaque fiche est adjointe une (et une seule) unité. c'est-à-dire un texte écrit en langage Pascal. Un fichier 'EXE' est enfin créé si la compilation atteint son terme (si tous les fichiers 'DCU' ont pu être créés).Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 3. lors de la compilation du projet en application. d'autres fichiers seront créés : des fichiers DCU (fichiers portant l'extension 'DCU'. si une fiche est stockée dans le fichier nommé « bulletin.dfm ).NOTIONS DE PROJET DELPHI ET DE SES FICHIERS Un projet est l'état non compilé d'une application (Application = Logiciel). comme on l'a vu ci-dessus.

Ces notions seront abordées plus loin dans ce guide. DFM DCU ~??? EXE RES DOF DSK CFG -8- . Enfin.. (RESsource) Fichier contenant les ressources de l'application. Ce fichier est le résultat final de la compilation et fonctionne sous Windows exclusivement. . tel son icône. copier ce fichier est souvent suffisant. . Fichier exécutable de l'application. sa position.DOF. ~PAS.PAS et d'un . Le tableau suivant donne une liste aussi complète que possible des fichiers pouvant être rencontrés dans le répertoire d'un projet Delphi : Extension du fichier DPR PAS Description et Commentaires (Delphi PRoject) Contient l'unité principale du projet (PAScal) Contient une unité écrite en Pascal.Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 Figure : un projet Delphi.OPT.DFM deviennent des fichiers texte qu'il est possible de visualiser et de modifier. tandis que le . ~DC. . les options d'affichage de Delphi pour ce projet.RES.PAS correspondant contient toutes les informations relatives au fonctionnement de cette fiche. La même manipulation est plus délicate mais possible sous Delphi 2 à 4. ces fichiers contiennent les options du projet. (Delphi Compiled Unit : Unité compilée Delphi) Forme compilée et combinée d'un . sans le signe tilde (~) Exemple : « optionsaffich. Peut avoir un .DFM contient la structure de la fiche (ce qu'elle contient. .DSM sont créés dans certaines circonstances. Vous n'avez pas à vous souciez de ces fichiers. ~DFM.pas ».DFM correspondant (Delphi ForM : fiche Delphi) Contient une fiche (une fenêtre). Fichiers d'options : suivant les versions de Delphi. ~DPR.CFG. Le . les . pouvant être effacés pour faire place propre. Ce fichier peut être édité avec l'éditeur d'images de Delphi. sa taille. ~DF. . .DSK. ~DCU sont créés : ce sont des copies de sauvegarde (des versions plus anciennes) des fichiers portant le même nom. …).DFM optionnel Tous les fichiers dont l'extension commence par ~ sont des fichiers de sauvegarde. du source à l’execution. Lors des enregistrements successifs d'un projet.. d'autres fichiers ayant le même nom que le fichier projet (celui qui porte l'extension DPR) mais avec l'extension .~PA » est une copie de sauvegarde de « optionsaffich. Pour distribuer le logiciel. ~PA. d'autres fichiers avec des extensions ~DP. Sous Delphi 5.

Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 LEÇON 2 : LES PREMIERS PAS TP 1 : JEU DE COULEURS Interface Étapes : Inserer le premier bouton dans la fiche comme suite : 1 Clic sur le composant Button 2 Clic dans la fiche sur la place ou on veut inserer ce bouton 3 Ecrire dans la propriété caption le nom apparant de ce boutton (exemple : Bleu) -9- .

Delphi. ou taper les premières lettres de l’élément voulu (exemple : co pour ecrire color) et lorsqu’il sera sélectionné dans la liste on tape Entrée pour que Delphi l’écrit dans l’instruction.10 - . l’étape précédente peut être présentée comme suite : 1-insérer les composants suivants de la palette Standard : Composant Propriété Valeur Button1 Caption bleu Button2 Caption rouge Button3 Caption vert 2-double clique sur le bouton1 (Bleu) et écrire dans la procédure : Form1.taper F12 pour revenir à la fiche et double clique sur le bouton3 (Vert) et écrire dans la procédure : Form1.taper F12 pour revenir à la fiche et double clique sur le bouton2 (Rouge) et écrire dans la procédure : Form1. grâce à son assistant de saisie semi-automatique.Lancer l’éxécution par la touche F9. leurs propriétés à manipuler (dans leurs inspecteurs d’objets) et enfin les valeurs à donner à ces propriétés. 4.color:=CLGreen.Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 Remarque de base Pour simplifier la présentation des étapes de création des interfaces des exemples suivants. . Donc. 3. Une Valeur adéquate pour la propriété (cl : veut dire couleur) Une de ses propriétés ou méthodes Le nom de l’objet Remarque Si vous écrivez : Form1.Color:=CLBlue. on présente les objets à insérer sur une fiche par un tableau contenant : les noms des composants. et on peut soit choisir dans liste la propriété ou méthode voulue. ou par le bouton . vous propose la liste des membres (propriétés et méthodes) de la classe saisie (Form1). Et verifier le bon fonctionnement de la fiche. 5.color:=CLRed.

comp. Remarque 2 : Le Casting = c’est aussi la conversion de type dans une affectation ou un test. .une autre solution possible (à écrire dans la procédure du bouton1 “calcul”) (Supprimer le begin et end de la procédure et coller tous le code source suivant) Var dev.text). Exemple: Edit3.le casting=changement de type =conversion de type (strtofloat.text) + strtofloat(edit2. inttostr.) 2.11 - . ou par le bouton Remarque 1: 1.text))/3) .text)<10 then Showmessage(‘étudiant ajourné’) Else Showmessage(‘étudiant admis’) . edit3. floattostr.Lancer l’éxécution par la touche F9.text))/3). 3. moy:= (dev+comp)/3. Begin dev:= strtofloat(edit1. Et verifier le bon fonctionnement de la fiche.moy :real .double clique sur le bouton1 (calcul) et écrire dans la procédure : edit3. .text:= floattostr(moy).text :=floattostr((strtofloat(edit1. If strtofloat(edit3. strtoint …. End . comp:= strtofloat(edit2.text:= floattostr ((strtofloat (edit1.text).Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 TP 2 : CALCUL DE LA MOYENNE Interface Étapes : 1-insérer les composants suivants de la palette Standard : Composant Edit1 Edit2 Edit3 Label1 Label2 Label3 Button1 Propriété text text text Caption Caption Caption Caption Valeur Devoir Composition Moyenne Calcul 2.text) + strtofloat (edit2.

fact :integer.Lancer l’éxécution par la touche F9. Et verifier le bon fonctionnement de la fiche. 3. edit2.b. end. if a>=0 then begin fact:=1. for b:=1 to a do fact:=fact*b. Begin a:= strtoint(edit1. .text).text:= inttostr (fact).Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 TP3 : CALCUL DU FACTORIEL Interface: Étapes 1-insérer les composants suivants de la palette standard: Composant Edit1 Edit2 Label1 Label2 Button1 Propriété Text Text Caption Caption Caption Valeur Nombre Factoriel Calcul 2-double clique sur le bouton1 (calcul) et écrire dans la procédure : (Supprimer le begin et end de la procédure et coller tous le code source suivant) var a.12 - . ou par le bouton . End Else Showmessage ('pas de factoriel pour un nombre négatif').

pour que l’image occupe toute la surface de son cadre on modifie sa propriété : Clic ici pour choisir la valeur True 5.Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 TP4 : CHARGEMENT D’UNE IMAGE Interface: Étapes 1.insérer un composant image de la palette « supplément ». on clic sur le bouton : Pour chercher l’image voulue dans le disque dur.dans la fenetre qui s’affiche.dans la nouvelle fenetre. 3.pour que l’image s’agrandie si elle a une taille plus petite que la surface de son cadre on modifie sa propriété : Clic ici pour choisir la valeur True Aussi modifier sa propriété : Clic ici pour choisir la valeur Pour que cette image aucupe tous l’espace de la fenetre actuelle. alClient .13 - .choisir dans son inspecteur d’objet la propriété : Clic ici 3. et après avoir selectioner l’image voulue on clic sur le bouton : Ensuite sur le bouton : 4. 2.

3.color:=clred. 5.Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 LEÇON 3 : AVANCER PLUS TP1 : INTERFACE DE COULEURS Interface : Étapes : Partie1 : 1. Et verifier le bon fonctionnement de la fiche.insérer les composants suivants de la palette standard: Composant Radiobutton1 Radiobutton2 Radiobutton3 Propriété Caption Caption Caption Valeur Bleu Rouge Vert 2.insérer un composant Combobox1 (palette standard) et ecrire sa propriété text : (vide). 2.double clique sur le Radiobutton1 (Bleu) et écrire dans la procédure : Form1. 4.14 - . 3.taper F12 et double clique sur le Radiobutton3 (Vert) et écrire dans la procédure : Form1.Lancer l’éxécution par la touche F9. ou par le bouton Partie 2 : 1.taper F12 et double clique sur le Radiobutton2 (ROUGE) et écrire dans la procédure : Form1. . vert) comme suite : A la fin.color:=clgreen.color:=clblue. rouge. clic sur ce bouton pour fermer la fenetre .insérer un composant Label1 (palette standard) et ecrire dans sa propriété caption : couleur.clique sur le composant Combobox1 et dans son inspecteur d’objet on choisit la propriété : Clique ici pour écrire les élements de la liste Et dans la fenêtre qui s’affiche on écrit les éléments de la liste ligne par ligne (bleu.

Et verifier le bon fonctionnement de la fiche.color:=clred.double clique sur le popupmenu1et double clique sur l’élément « Vert » et écrire dans la procédure : Form1. 4. 6. ou par le bouton .double clique sur le Popupmenu1 et double clique sur l’élément « Bleu » et écrire dans la procédure : Form1.text=’Rouge’ then form1. une fenêtre d’édition du menu contextuel s’affiche : Clic sur la case d’un élément du menu contextuel 1 2 Écrire le titre de cet élément du menu 3 Clic sur la case suivante pour ecrire les éléments suivants De cette façon.text=’Bleu’ then form1. if combobox1. if combobox1.double clique sur le Combobox1 et écrire dans la procédure (attention au lettres majuscules): If combobox1.Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 4.insérer un composant button1 (palette standard) et écrire dans sa propriété caption : couleur. Et taper F12 pour revenir à la fiche.color:=clgreen . c’est un menu contextuel qui s’affiche lors du clique par le bouton droit de la sourie sur un composant lié à ce menu.double clique sur le popupmenu1et double clique sur l’élément « Rouge » et écrire dans la procédure : Form1. . ou par le bouton Partie 3 : 1.text=’Vert’ then form1. Et verifier le bon fonctionnement de la fiche.insérer un composant popupmenu1 (palette standard).color:=clred .double clique sur le popupmenu1. on écrit les eléments suivant : A la fin fermer la fenêtre de l’editeur de menu.Lancer l’éxécution par la touche F9. 7-dans la fiche clique sur le bouton1 (couleur) et dans son inspecteur d’objet choisir la propriété : Clic ici pour choisir le menu : PopupMenu1 Cette propriété assure que si on clique par le bouton droit de la sourie sur le Bouton1 le popupmenu1 s’affiche. 8. 5.15 - .Lancer l’éxécution par la touche F9.color:=clgreen.color:=clblue. 5. .color:=clblue . 3. Et taper F12 pour revenir à la fiche. Et taper F12 pour revenir à la fiche. 2.

ces boites figurent dans la palette des composants dans l’onglet dialogues. par exemple : Fontdialog : choix du font des composants de l’interface (la police du traitement de texte).Color . Chaque boite de dialogue a une propriété spéciale qui donne la possibilité de manipuler le résultat d’affichage de cette boite .Color :=Colordialog1. Nb : pour afficher une boite de dialogue quelconque on écrit : nomboite.execute. 2-insérer un composant button2 (palette standard) et sa propriété caption 3-Double clique sur le composant bouton2 et écrire : Colordialog1.sw_show) . Exemple : {Ceci est un commentaire} (*Ceci est un autre commentaire*) // Tout ce qui suit et jusqu’à la fin de ligne est aussi un commentaire . TP3 : LES COMMENTAIRES Les commentaires se placent entre accolades (pour un commentaire en plusieurs lignes). Remarque1: Sw : show window (une fonction d’affichage des fenêtres).on insère un button1 dans une fiche delphi. 2.double clique sur ce bouton et écrire dans la procédure : WinExec(‘calc. 4. Form1. ou parenthèses et étoiles (pour commenter en plusieurs lignes) ou derrière 2 slaches (pour commenter en une seule ligne). Winexec : windows éxécution Remarque 2 : Si Delphi ne reconnais pas le logiciel (Delphi ne reconnais que les logiciels installés par défaut avec l’installation de Windows) on doit écrire le chemin complet de ce logiciel. Opendialog : donne la boite de dialogue Windows d’ouverture des fichiers Savedialog : donne la boite de dialogue Windows d’enregistrement des fichiers.Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 Partie 4 : 1-insérer un composant Colordialog1 (palette Dialogues). Colordialog : choix de la couleur des composants de l’interface. exemple : la couleur choisie dans la boite de dialogue Colordialog sera mise dans la propriété color de ce composant et on peut l’utiliser sur une fiche comme suite : Form1. Exemple : fontdialog1. choix de couleur.color. TP2 : LANCEMENT D’UN LOGICIEL (EXÉCUTABLE) À PARTIR D’UNE FICHE DELPHI Pour lancer une application à partir de Delphi (exemple : une calculatrice) on procède comme suite: 1. Remarque : Delphi propose des boites de dialogues divers pour contrôler et enrichir d’interface des applications par des API et des DLL Windows . Et verifier le bon fonctionnement de la fiche. Printdialog : permet la configuration de l’imprimante en cas d’impression des états.16 - .Lancer l’éxécution par la touche F9. ou par le bouton .execute . Show : afficher.execute . Exemple : lancement du Microsoft word : WinExec(‘C:\Program Files\Microsoft Office\Office\Winword. Finddialog : recherche une chaîne de caractères dans un texte.exe’.exe’.sw_show) .color:=colordialog1. Replacedialog : recherche et remplacement d’une chaîne de caractère par une autre dans un texte.

setfocus.clear. Edit1. End. End.17 - .clear.text)>20) then Showmessage('note de devoir incorrecte') else Edit2. 5.setfocus. 3. Remarque1 : Key = touche (c’est l’une des touches du clavier).clique sur le composant « Edit1 » et choisir son événement Double clique ici Et écrire dans sa procédure : If key = vk_return then Begin If (strtofloat(edit1.setfocus = mettre le curseur du clavier sur le composant edit1.tapez F12 et clique sur le composant « Edit3 » et choisir son événement If key = vk_f10 then Begin Edit1.clear. Return = retour à la ligne (donc : vk_return = la touche entrée) Setfocus = donner la main pour travailler par clavier (donc : mettre le curseur du clavier sur un composant) Edit1.text)>40) then Showmessage('note de composition incorrecte') Else Begin //Pour calculer la moyenne en ne gardant que deux chiffres après la virgule on écrit : Edit3. Remarque2 : L’événement préféré pour programmer les touches (frappes) du clavier est : onkeydown .Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 TP4 : LA MANIPULATION DE L’INTERFACE PAR CLAVIER Interface Étapes : 1-insérer les composants suivants de la palette Standard comme suite : Composant Propriété Valeur Edit1 text Edit2 text Edit3 text Label1 Caption Devoir Label2 Caption Composition Label3 Caption Moyenne 2.setfocus. Edit3.Lancer l’éxécution par la touche F9.text:= floattostr (round((strtofloat (edit1. ou par le bouton . vk = value key (valeur de la touche tapée). End.text) + strtofloat (edit2. Edit2. Et verifier le bon fonctionnement de la fiche.tapez F12 et clique sur le composant « Edit2 » et choisir son événement Et écrire dans sa procédure : Double clique ici If key = vk_return then Begin If (strtofloat(edit2. 4. End. Edit3.text))/3*100)/100 ).text)<0)or(strtofloat(edit1.text)<0)or(strtofloat(edit2.

mtconfirmation. mbno. mbRetry = Un bouton avec le texte "Réessayer".0) =mryes then Application. Le Numéro du fichier d’aide 0 = pas de fichier d’aide Exemple : If Messagedlg (‘voulez vous quitter le logiciel ‘. 0) Message De Dialogue Le texte du message (C’est un choix libre) MT=Message Type MB=Message Button Numéro du fichier D’aide Les types de messages possibles : Mtconfirmation = Confirmation Mtinformation = Information Mterror = Erreur Mtwarning = Avertissement Les boutons des messages possibles : mbYes = Un bouton avec le texte "Oui". 2-les messages avec options : Exemple : Messagedlg ( ‘ voulez vous quitter le logiciel’ .Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 LEÇON 4 : MESSAGES. mbCancel = Un bouton avec le texte "Annuler".L’instruction qui appelle ce message est : Showmessage(‘bonjour tous le monde’) . mbIgnore = Un bouton avec le texte "Ignorer". mbAll = Un bouton avec le texte "Tous". mbNo = Un bouton avec le texte "Non". mbNoToAll = Un bouton avec le texte "Non à tout". mbOK = Un bouton avec le texte "OK". mbHelp = Un bouton avec le texte "Aide". Mtconfirmation. [mbyes. . mbYesToAll = Un bouton avec le texte "Oui à tout".18 - . [Mbyes. MULTIMEDIA … TP1 : LES MESSAGES DE DIALOGUE Delphi propose 2 types de messages de dialogue : 1-les messages simples : C’est un message d’information Exemple . .on peut insérer un bouton de la palette standard et double clique sur ce dernier et écrire l’instruction au-dessus.terminate Else Showmessage(‘vous pouvez continuer ’) . mbcancel] . Mbno] . mbAbort = Un bouton avec le texte "Abandonner".

19 - .modifier sa propriété : 3-dans sa propriété : Et choisir le fichier vidéo : C:\program files\borland\delphi5\demos\coolstuf\speedis.choisir le type d’animation à utiliser dans sa propriété : 3.avi. 2.Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 TP 2: LES FICHIERS MULTIMÉDIA Interface : Étapes : 1.insérer un composant Animate1 (palette win32) 2.play .répéter les étapes 2 et 3 pour voir les autres animations. . Dans ce cas on doit cacher le mediaplayer par la modification de sa propriété : Remarque : Les fichiers son de Windows sont dans le chemin : C:\windows\media TP3 : LES ANIMATIONS Interface : Étapes : 1.pour voir l’animation on modifie la propriété 4.insérer le composant : mediaplayer1 (palette système). Et clique sur 4-lancer l’éxécution et clique sur le bouton Remarque On peut lancer automatiquement le mediaplayer par un double clic sur un bouton et écrire dans sa procédure : Mediaplayer1.

3.Double clique sur le timer1 et écrire dans sa procédure : progressbar1.caption :=timetostr(time) 4.Lancer l’éxécution pour voir la progression dans cette barre. I:=i+1 .lineto (i*15.le composant Timer a une propriété intéressante : Interval (On peut donner dans cette propriété la fréquence de répétition du Timer) 3.lineto (i*15. TP 5 : DESSINER UNE FONCTION Interface : Étapes : 1. trunc(sin(i)*15)+100). ou par le bouton .insérer un composant Timer1 (palette système) 2. //insérer la déclaration d’une variable globale Implementation 4.insérer un composant « Timer1» de la palette « Système » et modifier sa propriété : interval 50.double clique sur le composant Timer1 et écrire dans la procédure : Label1. .canvas.le dessin sur écran se fait en pixel (Picture Element) donc pour avoir un dessin visible il faut amplifier les coordonnées (x.canvas.lancer l’éxécution Remarques: 1. Et verifier le bon fonctionnement de la fiche.Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 TP 4 : LES BOUCLES DE TEMPS Interface : Étapes : 1.Lancer l’éxécution par la touche F9.en haut de l’unité on trouve la partie des variables globales comme suite : Var form1 :tform . 2.insérer un composant « ProgressBar1 » de la palette « Win32 » et modifier ses propriétés : 3.y).insérer un composant Timer1 (palette système) 2. I :integer .insérer un composant Label1 (palette standard) 3.en plus il faut décaler le dessin vers le milieu de la fiche par l’ajout de 100 pixels aux coordonnées (y) comme suite : Form1. 4.position+1.double clique sur ce composant et écrire dans la procédure : Form1.position:=progressbar1.20 - . 2.le canvas est une feuille transparente sur chaque fiche Delphi qui aide à dessiner des graphes. TP 6 : BARRE DE PROGRESSION Interface : Étapes : 1. trunc(sin(i)*15)+100).

BARRES D’OUTILS … TP 1 : LE MENU PRINCIPAL Interface : Étapes : 1.insérer de la palette standard le composant Mainmenu1 2.pour chaque élément du menu on choisit une lettre et on écrit avant elle le symbole "&" pour assurer un raccourci clavier : Exemple : &Edition Edition Donc : on tape le raccourci clavier Alt+E pour voir le menu Edition.Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 LEÇON 5 : MENU PRICIPAL. 6.double clique sur le composant Mainmenu1 et écrire les éléments du menu dans leurs propriétés « caption » 3.pour insère des icônes dans les éléments du menu ou insère le composant "imagelist1" (palette "Win 32") Et double clique sur ce composant "imagelist1" Et clique sur le bouton Et choisir une image dans le chemin : « c:\program files\fichiers communs\borland shared\images\buttons » Et clique sur Ensuite sur Et répéter Ajouter pour tous les autres images et enfin clique sur Ensuit clique sur le composant "Mainmenu1" et choisir dans sa propriété : Enfin : double clique sur " MainMenu1" et pour chaque élément du menu on choisit une image par sa propriété : .pour faire une ligne de séparation on écrit dans la propriété "caption" le caractère "-" 4. 7.pour choisir un raccourci Clavier quelconque on sélectionne un élément du menu et dans la propriété on choisit le raccourci adéquat (exemple : Ctrl + N pour l’élément « Nouveau » du menu).pour insère un sous menu dans un élément du menu : On clique sur cet élément et on tape les touches clavier : CTRL + et on écrit les éléments du sous menu. 5.21 - .

4.clique droit sur ce composant et choisir : "Nouveau bouton" Pour chaque fois qu’on veux inserer un nouveau bouton.clique sur le composant "toolbar1" en évitant ses boutons et modifier sa propriété Et cela pour que les boutons se gonflent lors du passage du pointeur de la sourie au dessus et se dégonflent après. 3.Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 TP 2 : LES BARRES D’OUTILS Interface : La barre d’outils contient les éléments les plus utilisés du menu principal.Pour faire la liaison entre "imagelist1" et "toolbar1" ou clique sur « toolbar1 » Et on choisit dans sa propriété 5.22 - .pour expliquer le rôle de chaque bouton du Toolbar1 on clique sur ce bouton on écrit l’éxplication adéquate dans la propriété : 7.Pour modifier l’image de change bouton du Toolbar1 on clique sur ce bouton et on choisit son image par sa propriété : 6.pour voir l’éxplication de ce bouton on choisit dans sa propriété : . Étapes : 1. et on clic sur "Nouveau séparateur" séparer les groupes de boutons.insérer de la palette "Win 32" le composant "Toolbar1" 2.

Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 LEÇON 6 : LA PROGRAMMATION DES BASES DE DONNEES Définitions : BD : Une base de données relationnelle est un ensemble de tables liées et gérées par un SGBD (Systéme de Gestion des Bases de Données). Un alias représente une base de données ainsi que les informations de configuration de cette dernière. • Pour créer un nouveau alias on procède comme suite : Dans le menu du BDE on choisit : outils gestionnaires d’alias. L’environnement de programmation Delphi donne la possibilité de se connecter à presque tous les SGBD disponibles sur le marché. un alias est un chemin logique qui localise et donne la possibilité d’accès à la BD. et dans la fenetre qui s’affiche : Clique sur Oui pour enregistrer cet alias avec les alias publics.23 - . • Pour accéder au module BD (nommé aussi BDE : Borland Database Engine) on choisit dans le menu Delphi : Outils module base de données. Ensuite dans la fenetre de gestionnaire des alias on procede comme suite : Ecrire le nom du nouveau Alias 3 1 Choisir le type du nouveau Alias ( Public) Clic sur le bouton OK 4 2 Clic sur le bouton Nouveau Enfin. 5 . TP 1 : CRÉATION D’UNE ALIAS DE BASE DE DONNÉES Delphi propose un module base de données pour simplifier la création des alias de BD. Table : c’est une structuration de données sous forme de champs et d’enregistrements.

on clique sur le bouton Ensuite. On écrit la structure de la table suivante : Double clic ici. et dans la fenêtre suivante on enregistre la table « produit » comme suite : 4 3 2 Clic sur enregistrer Écrire le nom de la table (produit) Choisir l’Alias .Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 TP 2 : CRÉATION D’UNE TABLE 1.Dans le menu BDE on choisit : fichier nouveau table. Ensuite On choisit le SGBD par défaut « paradox 7 » et clique sur ok. ou tapez n’importe quelle touche clavier pour créer un index primaire 1 Pour enregistrer.24 - .

et dans la petite fenetre blache qui s’affiche : .Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 TP 3 : CONNEXION ET AFFICHAGE D’UNE BASE DE DONNÉES DANS UNE FICHE insérer de la palette BDE le composant « Table1 » Choisir notre alias Choisir la table Activer la connexion à la table et manipuler ses propriétés : Pour afficher notre table on doit insérer de la palette Accesbd le composant « datasource1» dans sa propriété : et choisir Insérer de la palette Contrôlebd le composant « Dbgrid1 » et choisir dans sa propriété : TP 4 : LES CHAMPS CALCULÉES ET LES BOUCLES DANS UNE BD (TP FACTURE) Interface : Étapes : 1.25 - .Dans une fiche Delphi on insère les composants suivants : Palette Composant Propriété BDE Table1 Databasename Tablename Active AccesBD Datasource1 Dataset ControleBD Dbgrid1 Datasource Standard Label1 Caption Edit1 Text Button1 Caption Valeur Tp_facture Produit True Table1 Datasource1 Montant Calcul 3.Pour introduire le champ calculé « Total » dans la table produit on procède comme suite : On double clique sur le composant table1. 2.Dans le module base de données (BDE) : aOn commence par la création d’un nouveau alias nommé "tp_facture" (Voir les étapes du TP1) : bDans cet alias on créera la table suivante : Champ Code Designation Quantite prix c- type I A N $ taille 20 index * On enregistre cette table dans notre alias "tp_facture" sous le nom : « produit ».

Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 1 Clic droit sur la petite fenêtre 2 Clic sur Ajouter des champs Clic droit sur la petite fenêtre 4 Clic sur Ok 3 5 Clic sur : Nouevau champ Écrire le nom du nouveau champ calculé : Total 6 Choisir le type du champ calculé : Currency Femer la petite Fenetre 7 9 Clic sur : OK 8 .26 - .

asfloat * table1.ascurrency := table1. // cumul des totaux table1.fieldbyname(‘quantite’).Tapez F12 et pour calculer le montant global de ces produits on double clique sur le Bouton1 et on écrit dans sa procédure : (Supprimer le begin et end de la procédure et coller tous le code source suivant) var somme : real.fieldbyname(‘total’).27 - . // passer à l’enregistrement suivant.ascurrency .asfloat . edit1. 6.fieldbyname('total’).fieldbyname('nom’). end.fieldbyname('date_naissance’). // afficher le cumul des totaux dans le comosant edit1 end . table1. 5.fieldbyname(‘prix’). begin somme := 0.Lancez l’exécution.asdate table4.astype-du-champ Exemples : table1.Dans l’inspecteur d’objet du table1 on lance la procédure de l’événement : Oncalcfield 1 Clic sur événement 2 Double Clic Ici Et on écrit dans la procédure : table1.ascurrency table1.next.ascurrency.asstring table2. Remarque : La syntaxe d’écriture d’un champ d’une table est comme suite : Source-du-champ.fieldbyname('total’).fieldbyname(‘nom-du-champ’). // se pointer vers le premier enregistrement de la table while not(table1.first.eof) do // tanque on a pas arriver à la fin de la table begin somme := somme + table1.Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 4.fieldbyname('quantite’).text := floattostr(somme).

asinteger.asfloat* table1. Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».Dans une fiche Delphi insérer les composants suivants : Palette BDE Composant Table1 Propriété Databasename Tablename Active Dataset Datasource Caption Text Caption Caption Text Valeur scolarité bulletin True Table1 Datasource1 Moyenne générale Calcul Résultat AccesBD ControleBD Standard Datasource1 Dbgrid1 Label1 Edit1 Button1 Label2 Edit2 3. Ensuite : on écrit le nom du champ Moyenne_20. .asfloat+ table1.fieldbyname('moy_coef').28 - .Dans le module base de données (BDE) : On commence par la création d’un nouveau alias nommé "scolarité » (voire Tp1) Dans cet alias on créera la table "bulletin" suivante : Champ Numéro Matière Devoir Composition Coefficient type i A N N i taille 20 index * On enregistre cette table dans notre alias "scolarité" sous le nom : « bulletin ».fieldbyname('coefficient').fieldbyname('moyenne_20'). 2. on choisit le type du champ float et on clique sur Ok. Ensuite : on double clique à droite de l’événement « oncalcfields » et on écrit dans la procédure : table1. table1. Ensuite : on écrit le nom du champ Moy_coef.Pour introduire les champs calculés « Moyenne_20 » et « Moy_coef » dans la table bulletin on procède comme suite : On double clique sur le composant table1 Ensuite : on clique droit sur la petite fenêtre et on clique sur « ajouter tous les champs ». Ensuite : on ferme la petite fenêtre on clique sur le composant table1 et dans son inspecteur d’objet on clique sur l’onglé « événements ».fieldbyname('devoir'). Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».asfloat:= table1.asfloat)/3.Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 TP 5 : LES CHAMPS CALCULÉES ET LES BOUCLES DANS UNE BD (TP BULLETIN) Interface : Étapes : 1.fieldbyname('moyenne_20').asfloat:= (table1.fieldbyname('composition'). et on choisit le type du champ float et on clique sur Ok.

edit1. table1. Remarque : Pour contrôler le format d’affichage des nombres réels (champs de type float) dans une BD (limiter le nombre de chiffres après la virgule) on procède comme suite : double clique sur le composant « table1 ». Supprimer l’enregistrement courant : Table1. begin som_moy := 0. som_coef := 0.text := 'étudiant ajourné' else edit2.asinteger.fieldbyname('moy_coef'). Aller au dernier enregistrement : Table1. som_coef : integer. end.fieldbyname('coefficient').first .first.asfloat. clique sur le champ à formater (pour nous on va manipuler les deux champs «moyenne_20» et «moy_coef») Écrire dans sa propriété : (# Représente un chiffre. Annuler les modifications : Table1.29 - .post . Mg := round(mg*100)/100 .prior .## représente 2 chiffres avant et après la virgule) TP6 : LE DBNAVIGATOR Un DBNavigateur Contient tous les opérations de base sur une source de données (table ou requête) Actualiser l’affichage des données : Table1. Enregistrer les modifications : Table1. Ajouter un nouveau enregistrement : Table1.edit . Pour le connecter à une source de données on choisit dans sa propriété : Pour afficher l’éxplication (sous forme d’info-bulls) de chaque bouton du DBNavigateur1 on choisit dans sa propriété : .text := 'étudiant admis'.Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 4. som_coef := som_coef + table1.Pour afficher la moyenne générale et le résultat de ce bulletin on double clique sur le bouton "calcul" et on écrit dans la procédure : (Supprimer le begin et end de la procédure et coller tous le code source suivant) var som_moy . Aller à l’enregistrement suivant : Table1.cancel .next . Aller au premier enregistrement : Table1. Modifier les données : Table1.last . donc le format ##.eof) do begin som_moy := som_moy + table1. if mg <10 then edit2. Aller à l’enregistrement précédant : Table1. mg := som_moy / som_coef. table1.text := floattostr(mg). mg : real. while not(table1. Étapes : On insère le composant DBNavigator1 de la palette contrôleBD.next end.insert .delete .refresh .

30 - Écrire le nom de l’index secondaire (exemple : c1) .dans le Module base de données créez la table suivante : Champ code designation Quantite prix type I A N $ taille 20 index * 1.Avant d’enregistrer cette table et Pour insérer des index secondaires pour chaque champ on procède comme suite : 1 Choir dans la liste : Index secondaires 2 Clic sur le bouton : Définir Clic sur le champ à indexer Clic Ici (le champ passera à droite) 3 4 Clic sur Ok 5 6 Clic sur Ok 7 .Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 LEÇON 7 : LES INDEX SECONDAIRES ET LEURS UTILISATIONS TP1 : LA CRÉATION DES INDEX SECONDAIRES 1.

7 pour les autres champs de la tables On peut proposer par exemple les noms d’index secondaires comme suite : Designation : c2 Quantite : c3 Prix : c4 2.dans une fiche Delphi insérer les composants suivants : Palette Composant Propriété Valeur BDE Table1 Databasename dbdemos Tablename produit Active True AccesBD Datasource1 Dataset Table1 ControleBD Dbgrid1 Datasource Datasource1 2. 2.A la fin on aura l’affichage suivant : Chapitre 1 : Introduction à Delphi7 Clic sur enregistrer.index = 3 then Table1.indexname :=’c1’ . et choisir da la fenetre d’enregistrement : Alias : DbDemos ** Table : Produit TP2 : LE TRIE D’UNE TABLE Clic ici pour trier la table par l’un des champs. . cette table sera triée automatiquement par ce champ.index = 1 then Table1.indexname :=’c4’ .indexname :=’c3’ .5 .Lancer l’éxécution par F9 . si on clique sur un entête de colonne (un champ) dans le DbGrid1. If column.pour faire le trie de la table produit : Clique sur le composant dbgrid1.index = 2 then Table1. (Dans cet affichage la table est triée par le champ quantité) 1. If column. 4.6 .31 - . 3. If column.indexname :=’c2’ .Apprendre Delphi7 par l’exemple Répéter les opérations : 2. Ensuite : dans son inspecteur d’objet on clique sur l’onglés « événements » Ensuite : on double clique à droite de son événement « ontitleclick » et on introduit le code source suivant : If column.index = 0 then Table1.

table1.pas : Pascal : c'est une unité.exe : Executable : c'est le fichier éxécutable du logiciel.close .*. end .xg0.32 - .Pour faire le filtrage par le champ designation double clique sur ce Edit1 (génération de la procédure « onchange ») et écrire le code source suivant : 4if edit1.active := true .active := true . table1.text + ‘*’ + #39 . seulement les enregistrements contenant des désignations (noms) commençant par cette (ces) lettre (s).dpr : Delphi project : c'est l'unité principale qui represente le projet (le logiciel).filtered :=true .Garder l’interface du Tp2 et insérer un composant Edit1 et effacer sa propriété « text » 2.db : c'est une table (sa structure (champs) et son contenu (enregistrements)).…. table1.close.filter :=’[designation]=‘ + #39 + edit1. tous les enregistrements de la table s’afficheront. Rappel : Dans une application delphi (logiciel) on peut voir des fichiers avec les extensions suivantes : *.*.px : c'est un index primaire (clé d'une table) *. Remarque : Dans une base de données on peut voir des fichiers avec les extensions suivantes: *.*.yg1. table1. *. À chaque fois qu’on écrit une (des) lettre (s). *. 3. table1. Si on supprime toutes les lettres. .dfm : Delphi Form: c'est une fiche.filtered := false . *.dcu : Delphi compiled unit : c'est une unité compilée *.yg0.Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 TP3 : LE FILTRAGE D’UNE TABLE Le filtrage est une technique très utile pour faire une recherche rapide dans les BD.….Insérer un composant Label1 et écrire dans sa propriété : Caption filtrage. end else begin table1. Pour faire le filtrage : 1. *.xg1. : les index secondaires d'une table. .text <> ‘’ then begin table1.

double clique sur ce Button1 et écrire dans sa procédure le code source suivant : Table1. // l’index du champ objet de la recherche (designation).Text]).Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 TP4 : LA RECHERCHE SIMPLE DANS UNE TABLE .Choisir dans la sous propriété : DGRowSelect true. TP5 : LES RELATIONS MAITRE-DETAIL 1.setkey .indexname :=’c2’ .Dans le BDE créer la table suivante : Champ Code_grp designation spécialité type i A A taille 10 20 index * . 4. Table1. .insérer un composant Label2 et écrire dans sa propriété : caption chercher.Pour faire la recherche simple: 1.text . Table1.33 - .On clique à gauche de la propriété « + Options » du dbgrid1 (éxactement sur la case +).Findkey([Edit2. #39 : c'est le code ASCII de l'apostrophe ' .gotokey . Bof : Begin of file : c'est le début d'une table.Choisir dans la sous propriété : DGAlwaysShowSelection true. Remarque2 : Pour avoir une ligne de sélection permanente dans le Dbgrid1 qui indique l’enregistrement résultat de la recherche : .indexname:='c2'.insérer un composant Button1 et écrire dans sa propriété : caption lancer la recherche. // la valeur à rechercher dans ce champ. Table1.garder l’interface du Tp3 et insérer un composant Edit2 et effacer le contenu de sa propriété « text » 2.fieldbyname(‘designation’). // lancer la recherche. // préparation de la recherche dans la table produit. Quelques explications: Eof : end of file : c'est la fin d'une table.asstring :=edit2. Remarque1 : Delphi propose une autre instruction plus simple pour faire la recherche sur une base de données comme suite : Table1. Table1. . 3. // Cette instruction remplace les trois instructions précedantes.

Apprendre Delphi7 par l’exemple On enregistre cette table dans notre alias "dbdemos" sous le nom : « groupe ». 2- Dans le BDE (module base de données) créer la table suivante :

Chapitre 1 : Introduction à Delphi7

Champ

type

taille

index

Code_etud I * Nom A 20 prénom A 20 Date_nais D Lieu_nais A 25 Code_grp i Avant d’enregistrer cette table insérer un index secondaire pour le champ code_grp (clé étrangère) comme suite : On choisit en haut et à droite de la fenêtre dans la liste des choix : propriétés de la table index secondaires. On clique sur le bouton Définir. On clique sur le champ « code_grp » dans la liste à gauche. On fait passer ce champ à droite par le bouton . On clique sur le bouton OK et on propose un nom à l’index secondaire de ce champ, exemple : « c6 » On enregistre cette table dans notre alias "dbdemos" sous le nom : « etudiant ». 3- Dans une fiche Delphi insérer les composants suivants : Palette Composant Propriété BDE Table1 Databasename Tablename Active AccesBD Datasource1 Dataset ControleBD Dbgrid1 Datasource BDE Table2 Databasename Tablename Active AccesBD Datasource2 Dataset ControleBD Dbgrid2 Datasource Valeur dbdemos groupe True Table1 Datasource1 dbdemos etudiant True Table2 Datasource2

3- Pour que la table etudiant soit liée par une relation maître-détail (pére-fils) avec la table groupe (La table groupe maître (père), la table etudiant détail (fils)) on procède comme suite : On clique sur le composant table2 « etudiant», et on choisit dans sa propriété : mastersource datasource1. Ensuite : dans sa propriété « masterfield » on clique sur le petit bouton … et on suit les étapes suivantes :

1
Choisir l’index secondaire « c6 »

2
Sélectionner les deux champs code_grp

3
Clic sur Ajouter

4
Enfin clic sur Ok
Le résultat sera comme suite : si on choisit un groupe dans le dbgrid1 on aura seulement les étudiants de ce groupe qui s’affichent dans le dbgrid2.

- 34 -

Apprendre Delphi7 par l’exemple

Chapitre 1 : Introduction à Delphi7

LEÇON 8 : INTRODUCTION AUX REQUETES SQL
PRÉSENTATION GÉNÉRALE 1-Définition :
Le langage SQL (Structured Query Langage) est un langage universel de création, de gestion et d’interrogation des bases de données. SQL est integré dans plusieurs langages de programmation.

2- Les sous langages du SQL
Le SQL se subdivise en différents langages : 2.1- Langage de description des données (DDL : Data Definition Language) : Permettant la définition des éléments d'une base de données, Celui-ci comprend trois commandes qui permettent l’administration d’une base de données, ces commandes de base sont :
CREATE ALTER DROP Création de tables ou d’index Modification de tables ou d’index Suppression de tables ou d’index

2.2- Langage de manipulation des données (DML : Data Manipulation Language) : Permettant la manipulation et l’extraction des données. Celui-ci comprend les commandes qui permettent les mises à jour des données d’une table, ces commandes de base sont :
INSERT UPDATE DELETE Insertion de nouvelles lignes dans une table Mise à jour de certains champs d’une ligne dans une table Suppression des lignes inutiles dans une table

2.3- Langage de contrôle des données (DCL : Data Control Language) : Permettant la gestion des droits d'accès aux données et des transactions (en cas de programmation sous réseau).
GRANT REVOKE COMMIT ROLLBACK Attribution de droits d'accès Suppression de droits d'accès Prise en compte des dernières transactions pour une mise à jour des données Suppression des dernières transactions et restauration des anciennes données

2.4- Langage d’interrogation des données (DQL : Data Query Language). Bien que ne comprenant qu’une seule commande SELECT, celle-ci étant la plus utilisée car si le peuplement d’une base de données est une étape importante, les différentes requêtes pour l’extraction des données représentent autant d’étapes importantes pour tous type d’utilisation :
SELECT Extraction des données par projection, par sélection, avec restriction, par groupement

Exemple 1 : CREATE DATABASE Commerce; START DATABASE Commerce; CREATE TABLE client (Numero SMALLINT, nom CHAR(30), prenom CHAR(30), adresse CHAR(50), telephone CHAR(15)); STOP DATABASE; Ici nous venons de créer une base de données Commerce (ligne 1). On ouvre ensuite cette base de données (ligne 2). On y crée une table de nom Client, qui contient 5 colonnes.(ligne 3) On ferme la base de donnée (ligne 4) Exemple 2 : INSERT INTO Client VALUES (1,'MOHAMED','Amine','Sétif',’036-84-46-68’); Ici, on insere un nouveau enregistrement dans la table client ayant pour valeur de champs les données mentionnées. UPDATE Client SET prenom='Redha', adresse='Alger' WHERE nom='MOHAMEDI'; Cette requere SQL modifie le pénom et l’adresse du client nommé MOHAMEDI par les valeurs mentionnées. DELETE FROM Client WHERE numero=15; Cette requete supprime l’enregistrement (le client) numero 15.

- 35 -

Apprendre Delphi7 par l’exemple

Chapitre 1 : Introduction à Delphi7

TP1 : LES REQUETES SQL LES PLUS UTILISÉES
1- Syntaxe simple : Soit la table produit (code, designation, quantite_stock, prix_unité, type_produit) On veut sélectionner tous les champs et enregistrements de cette table Syntaxe : select * from produit Pour executer ce script on insere un composant Query (palette accèsBD) et on manipule ses propriétés :

3

On test le fonctionnement de ce script SQL. Avant de rendre cette propriété True, ce composant compile ce script SQL et ne donne pas true que si la requete a une syntaxe juste. On se connecte à notre Alias.

1

2 On ecrit le script SQl dans cette propriété.

Remarque :
Select : From : Where : sélectionne un ou plusieurs champs en mentionnant leurs noms (* veut dire tous les champs) On peut aussi Introduire les champs calculés en donnant leurs noms et la formule de calcul. décide la source de données à sélectionner (la table source de données). donne un ou plusieurs critères de sélection des enregistrements.

2- requête avec critère de sélection : Si on veut sélectionner que les produits qui ont une quantité de stock supérieur à 10, on écrit : select * from produit where type_produit = ‘consommables’ Donc : la clause where donne la possibilité d’introduire un critère de sélection qui sera généralement une comparaison d’un champ à une valeur de même type. 3- requête avec paramètre :(requête dynamique) : Si on veut que la valeur du critère de sélection soit variable : Exemple : à chaque fois on donne une valeur et on sélectionne les quantités supérieures à cette valeur donc on doit avoir une variable qui contiendra à chaque fois une valeur différente : Syntaxe : select * from produit where type_produit = :c Remarque1: - le paramètre ici est nommé C et les deux points qui le précède indiquent que c’est un paramètre. - le paramètre en suite doit avoir un type adéquat (compatible au type du champ utilisé dans la comparaison). On donne un type au paramètre par la propriété :

- 36 -

parambyname('c').asstring:=combobox1.les requêtes contenant des champs calculés : On peut introduire un champs calculé dans une requête en le mentionnant dans la partie select avec les champs fixe. Pour cela on peut inserer un composant Combobox1 (palette standart) et ecrire dans sa propriété Items les valeurs : materiel.close .Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 1 Clic Ici 4 2 Clic sur le paramatere Fermer la petite fenetre 3 Choisir le type du paramatere Remarque2: Il faut choisir après un événement adéquat pour donner une valeur au paramètre par les instructions suivantes : Query1. Exemple : on veut calculer le prix total de chaque produit à savoir sa quantité_stock. Syntaxe : Select code. designation.active:=true. consommables.text. Syntaxe: Select type_produit. meuble. Ensuite on double clic sur ce composant et on introduit le code source precedant. consommables.les requêtes des statistiques : On peut préparer une table contenant par exemple les type des produits (exemple : materiel. prix_unité. count(type_produit) as nombre From produit Group by type_produit . quantite_stock. Et cela en donnant le nom du champ précédé de la formule qui le calcul. (quantite_stock * prix_unité)as Total From produit 5.37 - . meuble) et avoir comme résultat de la requête des données prêtes a être représenter par un graphe des statistiques de réussite. 4. Query1. Query1.

Double clique sur le Combobox1 et écrire dans sa procédure : query1.close . 2.38 - .Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 TP2 : LA CONSULTATION PAR DES REQUÊTES PARAMÉTRÉES 1.parambyname(‘sec’).text . . query1.lancer l’éxécution et choisir dans le Combobox1 la section que vous voulez afficher ses étudiants.asstring :=combobox1. 4.dans une fiche Delphi insérer les composants suivants : Palette BDE Composant Query1 Propriété Databasename SQL params Active Dataset Datasource caption text Items … … Valeur dbdemos Select * From etudiant2007 Where section = :sec Sec datatype ftstring True Query1 Datasource1 Choisir une section A B C AccesBD ControleBD Standard Datasource1 Dbgrid1 Label1 Combobox1 3.dans le module base de données créer la table suivante : Champ type taille index Code_etud I * Nom A 20 Prénom A 20 Section A 15 On enregistre cette table dans notre alias "dbdemos" sous le nom : « etudiant2007 ». query1.active:=true.

Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 TP3 : LES GRAPHES 1.39 - .insérer de la palette « controleBD » le composant Dbchart1 Double clique sur ce composant et procéder comme suite : 1 Clic sur le bouton Ajouter 2 Choisir le type du graphe Sectoriel 3 Clic sur Ok 4 5 Choisir L’onglés Série Choisir l’onglés Source de données 6 Choisir dans la liste DataSet 7 8 Choisir dans la liste Query1 Choisir le champ alphanumerique 9 Choisir le champ numerique 10 Enfin clic que Fermer . count(section) as nombre SQL … From etudiant2007 Group by section Active True 3.Dans une fiche Delphi insérer les composants suivants : Palette Composant Propriété Valeur BDE Query1 Databasename dbdemos Select section .Garder la table etudiant2007 du TP2 : 2.

bpl 4 Clic sur Ouvrir . 1 Clic ici Clic sur le bouton Ajouter 2 Clic sur Ok 5 3 Choisir l’unité : Dclqrt70. On présentera maintenant les étapes d’installation des composants quickreport en Delphi7.Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 LEÇON 9 : LES ÉTATS D’IMPRESSION INTRODUCTION Les versions Delphi qui ont précédé Delphi7 ont proposés les composants Quickreport pour imprimer les données. Installation des composants Quickreport en Delphi7 : Choisir dans le menu Delphi : Composant Installer des packets.40 - .

Pour imprimer notre état on écrit dans la procédure d’un bouton (son caption sera : « imprimer ») l’instruction : quickrep1. 4. 6.dans la palette des composants du Qreport on insére autant de composants Qrlabel nécessaire dans la bande titre pour bien représenter l’organisme propriétaire de l’état (société. 8. . 7.on doit mettre à true les sous propriétés suivantes : Hascolumnheader : bande d’entêtes de colonnes. Hasdetail : pour avoir une bande de détail (cette bande a une caractéristique spéciale de se répéter suivant le nombre d’enregistrements).Dans la bande entête des colonnes on insére des composants Qrlabel représentant par le texte de leur propriété Caption le nom des colonnes à imprimer (code. Donc insérer de la palette BDE le composant « Table1 » et dans son inspecteur d’objet on manipule ses propriétés : Choisir notre alias Choisir la table Activer la connexion à la table 3.on ouvre la propriété Bands en cliquant sur l’icône + à son gauche Clic Ici .Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 TP1 : Imprimer les enregistrements d’une Table (Liste des produits) Procédés : 1.Dans la bande détail on insére toujours de la palette Qreport des composants QrDbText qui seront positionnées respectivement juste en dessous des composants Qrlabel de la bande entête de colonnes(un par un).on se pointant par sa propriété DataSet à la table produit. Hastitle : pour avoir une bande de titre d’état. et on le contrôle par : .Pour encadrer les champs de l’etat d’impression on utilise le composant Qrshape Ctrl + : deplacer le composant selectionné à gauche. Ctrl + : deplacer le composant selectionné vers le haut.preview .print . Shift + : reduire le composant selectionné vers le haut.pour modifier la taille d’affichage de la page d’impression « quickrep1 » on écrit dans la propriété : . Shift + : agrandir le composant selectionné vers le bas.La source de données à imprimer sera la table produit. 9. 2.on sélectionne le composant Quickrep1 posé sur la fiche pour avoir son inspecteur d’objet et on manipule dans ce dernier les propriétés comme suite : . 5.en fin n’oubliez pas de lier le composant Quickrep1 lui même à la table produit.on se pointant par sa propriété DataField au champ adéquat. commerçant …).insérer un composant Quickrep1 (de la palette Qreport) sur la fiche.chaque composant Qrdbtext sera lié à un champ de la table produit à imprimer et suivant le Caption du Qrlabel au dessus. 11. ces composants contiendront des textes explicatives dans leurs propriétés Caption.41 - .on élargi la hauteur de la bande de titre d’état. Shift + : agrandir le composant selectionné à droite. Cela se fait en cliquant sur ce composant en évitant les bandes et dans son inspecteur d’objet on se pointe par la propriété dataset à la table produit. quantité…). Ctrl + : deplacer le composant selectionné vers le bas.Pour previsualiser notre état on écrit dans la procédure d’un bouton (son caption sera : « previsualiser ») l’instruction : quickrep1. designation. Ctrl + : deplacer le composant selectionné à droite. La liaison du Qrdbtext avec le champ se fait : . 10. Shift + : reduire le composant selectionné à gauche. .

Apprendre Delphi7 par l’exemple Chapitre 1 : Introduction à Delphi7 Remaque : pour mettre le cadre (QRShape) en arrière plan et voir les autres composants ( QRLabal. Clic par le bouton Droit de la sourie sur l’état d’impression en évitant les bandes et les composants Clic sur Prévisualiser L’état sous sa forme d’impression . QREdit) on doit cliquer par le bouton droit de la sourie sur ce cadre et choisir dans le menu contextuel : Options de contrôle mettre en arrière plan.42 - .

Apprendre Delphi7 par l’exemple

Chapitre 1 : Introduction à Delphi7

LEÇON 10 : DELPHI EST UN RAD
TP1 : UNE FICHE SIMPLE D’IMPRESSION D’UNE TABLE
Delphi est un RAD (Rapide Application Développement) et propose des assistants qui aident à la création d’une grande variété de fiches. Pour la création d’une fiche d’impression (image suivante) on procède comme suite :

1. Dans le menu Delphi on choisit : Fichier

Nouveu

Autre ..

2. Dans la boite de dialogue qui s’affiche on choisit l’onglet « affaires » et dans ce dernier on choisit l’icône « expert quick report » et on clique sur le bouton Ok. 3. Dans l’assistant qui s’affiche on clique en bas sur le bouton lancer l’expert.

1
Choisir l’alias de la base de données

2

Choisir la table à imprimer

3
Faire passer tous les champs à droite pour les imprimer tous (si on veux imprimer quelques champs seulement, on les fait passer un par un par le bouton plus haut > )

4
- 43 -

À la fin on ferme la petite fenêtre

Apprendre Delphi7 par l’exemple

Chapitre 1 : Introduction à Delphi7

TP2 : UNE FICHE SIMPLE DE CONNEXION ET D’AFFICHAGE ET D’IMPRESSION D’UNE TABLE

1- Pour créer cette fiche on procède comme suite : Dans le menu Delphi on choisit : fichier nouveau Dans la boite de dialogue qui s’affiche on choisit l’onglés « affaires » et dans ce dernier on choisit l’icône « expert fiche base de données » et clique sur le bouton Ok. Dans l’assistant qui s’affiche on choisit dans la première étape le type de la fiche : Créer une fiche simple Clique sur le bouton Suite. Choisir dans la liste « lecteur ou nom de l’alias » notre alias « scolarité » Clique sur la table «étudiant » et clique sur Suivant et clique sur le bouton >> et clique sur Suivant. Clique sur l’option « dans une grille » et clique sur Suivant. Enfin clique sur l’option « fiche seulement » et clique sur Terminer 2- Clique sur le composant « dbgrid1 » et choisir dans sa propriété «align» none, et réduire la taille de ce dbgrid vers le bas; et clique sur le composant table1 et modifier sa propriété : « Active» true. 3- Double clique sur le composant table1 et clique droit sur la petite fenêtre et clique sur «ajouter tous les champs» 4- Glisser les champs un par un vers l’éspace libre en haut de notre fiche. 5- Clique sur la nouvelle fiche en évitant le clic sur l’un de ses composants et écrire dans sa propriété : name fiche_etudiant. Ensuite, clique sur (menu Delphi) : fichier enregistrer, et nommer l’unité : etudiant. 6- On doit maintenant préparer l’impression de la liste des étudiants comme suite : Choisir dans le menu Delphi : fichier nouveau et clique dans la fenêtre qui s’affiche sur l’onglé « affaires ». Clique sur l’élément : « expert quickreport » et clique sur Ok. Clique sur le bouton « lancer l’expert », et choisir l’alias « scolarité » et la table « etudiant ». Clique sur le bouton >> qui fait passer tous les champs vers la droite pour les imprimer tous et clique sur Ok. Clique sur la nouvelle fiche en évitant le clic sur le composant « quickrep1 » et écrire dans sa propriété : name fiche_etat_etudiant. Ensuite, clique sur (menu Delphi) : fichier enregistrer, et nommer l’unité : etat_etudiant. 7- On tape Shift+F12 pour afficher la liste des fiches et on choisit la fiche «fiche_etudiant» et on clique sur Ok. Ensuite, et pour une impression bien présentée des étudiants on insère un composant popupmenu (palette standard). Ensuite, on double clique sur ce composant et on introduit les deux éléments « previsualiser » et « imprimer ». Ensuite, on ferme la petite fenêtre du « popupmenu » et on insère de la palette « supplément » le composant « speedubutton1 » et on clique sur ce composant qui représente l’impression et dans son inspecteur d’objet on choisit dans sa propriété « popupmenu » l’élément « popupmenu1 ». Ensuite : pour programmer le composant popupmenu1 on double clique sur ce dernier et on double clique sur l’élément « previsualiser » et on écrit dans sa procédure : fiche_etat_etudiant.quickrep1.preview ; Ensuit : on tape F12 pour retourner à la fiche et on double clique sur le composant « popupmenu1 » et on double clique sur l’élément « imprimer » et on écrit dans sa procédure : fiche_etat_etudiant.quickrep1.print ; Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_etudiant et la fiche_etat_etudiant et on doit cliquer sur Oui pour chaque demande de confirmation.

- 44 -

Apprendre Delphi7 par l’exemple

Chapitre 1 : Introduction à Delphi7

TP3 : UNE FICHE MAITRE-DETAIL ENTRE DEUX TABLES

Pour la création de cette fiche on procède comme suite : 1. dans le menu Delphi on choisit : fichier nouveau 2. dans la boite de dialogue qui s’affiche on choisit l’onglet « affaires » et dans ce dernier on choisit l’icône « expert fiche base de données » et clique sur le bouton Ok . 3. dans l’assistant qui s’affiche on choisit dans la première étape le type de la fiche : Créer une fiche maître/détail, ensuite clique sur le bouton Suite. 4. choisir dans la liste « lecteur ou nom d’alias » l’alias de notre table maître à afficher (exemple : dbdemos). 5. On choisit la table dans la liste (exemple : groupe), ensuite clique sur le bouton Suite. 6. On clique sur le bouton >> pour faire passer tous les champs à droite (pour les afficher tous) et clique sur Suite 7. Clique sur l’option : « dans une grille » et clique sur Suite 8. Choisir dans la liste « lecteur ou nom d’alias » l’alias de notre table détail à afficher (exemple : dbdemos). 9. On choisit la table dans la liste (exemple : etudiant), ensuite clique sur le bouton Suite. 10. On clique sur le bouton >> pour faire passer tous les champs à droite (pour les afficher tous) et clique sur Suite 11. Clique sur l’option : « dans une grille » et clique sur Suite 12. Ensuite : on choisit dans la liste en haut l’index disponible « c6 » 13. Ensuite : on choisit à gauche le champ « code_grp » et à droite le champ « code_grp ». 14. Ensuite : clique sur le bouton ajouter ensuite sur le bouton Suite. 15. On fin sur le bouton Terminer

TP4 : TP EXEMPLAIRE
1- choisir dans le menu Delphi : fichier nouvelle application. (Si Delphi demande l’enregistrement de l’ancienne application on clique sur Non ) 2-supprimer la fiche vierge proposée par défaut dans cette nouvelle application par : Le menu Delphi : projet supprimer une fiche, et clique sur Ok 3- préparer une fiche BD simple en utilisant les étapes du TP2 et nommer cette fiche « fiche_liste ». 4- préparer une fiche d’impression en utilisant les étapes du TP1 pour imprimer la même table choisie dans la fiche_liste et nommer cette fiche « fiche_etat_liste ». 5- insérer en haut de la fiche_liste deux boutons de la palette standard. Button1 Caption Previsualiser. Button2 Caption Imprimer. 6- double clique sur le button1 et écrire dans sa procédure : fiche_etat_liste.quickrep1.preview ; 7- double clique sur le button2 et écrire dans sa procédure : fiche_etat_liste.quickrep1.print ; 8- compiler par Ctrl + F9 et clique sur Oui pour faire la liaison entre les deux fiches et lancer l’éxécution par F9.

- 45 -

46 - ..

créer un nouveau alias pour notre logiciel par : (le menu BDE) outils gestionnaire d’alias Ensuite : cliquer sur l’option : « afficher seulement les alias publics » Ensuite : cliquer sur le bouton : nouveau Ensuite : écrire dans : Alias de la base : commerce Chemin d’accès : c:\commerce\base Ensuite cliquer sur Ok En fin cliquer sur Oui pour que cet alias soit un alias public. Remarque On peut fixer cet alias comme alias de travail par défaut au cour du développement de notre logiciel et cela par le choix de cet alias dans le menu du module base de données : fichier répertoire du travail.47 - .n Ligne_inv Qte_theorique Qte_reelle 1.créer dans le lecteur C du disque dur un nouveau dossier nommé : commerce (pour stocker le logiciel).n 1.lancer le BDE de Delphi par : (le menu Delphi) outils module base de données.créer dans le dossier commerce 2 autres dossiers nommés : base (pour stocker la BD) et source (pour stocker le code source) 3.n 1.n 1.1 Facture_vente Numero_v 1.Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale PREPARATION DU LOGICIEL : 1.créer dans cet alias les tables suivantes.1 Facture_achat Numero_a 1.n Ligne_vente Qte_vente .n Vente 1. 4. (Le BDE se pointera automatiquement sur cet alias à chaque accès au module BD) 5.n Ligne_achat Qte_achat 1.n Inventaire Numero_i Produit Reference Client Code_c 1. 2. n’oubliez pas de les enregistrer dans l’alias « commerce » Table: client Table : facture_achat Table : produit Champ Type Taille index Champ Type Taille index Champ Type Taille index Code_c i * Numero_a i * Reference i * Nom_c A 20 Date_achat d Designation A 20 Prenom_c A 20 Reglement_a A 10 Qte_stock n 30 Adresse_c A code_four i Prix_achat $ Telephone_c A 15 Prix_vente $ Table : facture_vente A 15 RC_c n Champ Type Taille index Tva 15 AI_c A Table : inventaire Numero_v i * IF_c A 15 Champ Type Taille Index Date_vente d Table: fournisseur Numero_i i * Reglement_v A 10 Champ Type Taille index Date_inventaire d code_cli i durée A 10 Code_f i * Table : ligne_vente responsable A 20 Nom_f A 20 Champ Type Taille Index Table : ligne_inventaire Prenom_f A 20 Num_vente i * Adresse_f A 30 Champ Type Taille Index Ref_prod i * Telephone_f A 15 Num_inv i * Qte_vente n RC_f A 15 Ref_prod i * Table : ligne_achat AI_f A 15 Qte_theorique n Champ Type Taille index Qte_reelle IF_f A 15 n Num_achat i * Table protection Ref_prod i * Champ Type Taille index Qte_achat n Password A 20 * MCD CORRESPONDANT (c’est seulement une partie du MCD réel et complet de la gestion commerciale) : Fournisseur Code_f Achat 1.

édition. Cliquer dans le menu Delphi sur : fichier enregistrer le projet sous. .mbno]. double clique à droite de son événement «onclosequery» et écrire dans sa procédure : if messagedlg('voulez vous quitter le logiciel?'. Ensuite : insérer dans la fiche de ce nouveau projet (ce nouveau logiciel) un composant « mainmenu1 » Ensuite : double clique sur ce composant et insérer le menu principal suivant : Fichier Produit Client Fournisseur Quitter Edition Facture achat Facture vente Consultation Achats Ventes Statistiques Règlements Outils Inventaire Archivage Protection Cloture ? Aide A propos Chaque fiche (ainsi que son unité) dans le logiciel doit être nommée par un nom significatif.pour expliquer le rôle de chaque bouton on clique sur ce dernier on écrit dans sa propriété : « Hint » l’éxplication voulue. …) Ensuite : insérer un composant imagelist1 (palette win32) Ensuite : double clique sur ce composant et clique sur le bouton Ajouter pour choisir la gamme des images de notre logiciel dans le chemin : « C:\program files\fichiers communs\borland shared\images\buttons » Ensuite : après le choix de 15 images adéquates aux 15 boutons on clique sur Ok Ensuite : clique sur le « mainmenu1 » et dans son inspecteur d’objet choisir dans la propriété : Images imagelist1 Ensuite : double clique sur le « mainmenu1 » et chaque élément de ce menu sera lié à une image adéquate par sa propriété : « imageindex » Enfin : fermer la petite fenêtre du menu et clique sur le composant « toolbar1 » et pour affecter des images à ses boutons choisir dans sa propriété : Images imagelist1.terminate. Ensuite : clique droit sur ce composant et choisir « nouveau bouton » ou « nouveau séparateur » Ensuite : répéter le clic droit pour insérer 15 boutons qui représentent les éléments du menu principal du logiciel.Retournez à l’environnement Delphi et choisir dans le menu : Fichier nouvelle application. et dans le dossier « c:\commerce\source » on nomme l’unité : « menu ». application. pour notre fiche actuelle (le menu général du projet) on procède comme suite : Cliquer sur cette fiche (éviter le composant mainmenu1) et dans son inspecteur d’objet écrire dans la propriété : name fiche_menu.[mbyes. consultation.mtconfirmation. ensuite et pour voir cette éxplication on choisit dans la propriété : showHint true Programmation du sous menu : Quitter Double clique sur le composant « mainmenu1 » et double clique sur son élément quitter (du sous menu fichier) Ensuite : écrire dans la procédure : close. Et 6 séparateurs pour les grands éléments du menu (fichier. (Chaque bouton du «toolbar1» peut avoir une image adéquate par le choix de cette image dans la propriété « imageindex » de ce bouton).48 - . 3. et nommer le projet : commerce (toujours dans « c:\commerce\source ») 2. Cliquer dans le menu Delphi sur : fichier enregistrer sous. Ensuite : dans la fiche_menu.insérer un composant ToolBar1 (palette win32). end else canclose:=false.Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale FICHE MENU 1.0)=mryes then begin canclose:=true.

RC : le numéro du Registre de Commerce AI : le numéro de l’Article d’Imposition IF : le numéro de l’Identification Fiscale.pour que l’image occupe toute la surface de son cadre on modifie sa propriété : Autosize true. et on choisit dans la liste : « Fiche principale » « fiche_menu » et clique sur Ok. TVA : la Taxe sur la Valeur Ajouté.Pour lier chaque bouton de la barre d’outils « Toolbar1 » à une fiche on clique sur ce bouton et on choisit dans son événement « onclick » la procédure qui appelle la fiche correspondante (faites ce travail à la fin du logiciel).Lorsqu’on lance l’éxécution de notre logiciel la fiche menu apparaît automatiquement la première puisque elle est la fiche principale dans notre logiciel. . 4.En cliquant sur la case fermer X en haut et à droite de la fenêtre. 5. (Exemple du chemin de l’image : C:\Program Files\Fichiers communs\Borland Shared\Images\Splash\256Color) 3.Par clavier en utilisant les touches : Alt + F4 . .Clique sur cette fiche_menu (éviter de cliquer sur l’un de ses composants). mais si cette fiche n’a pas été lancée la première donc elle n’est pas considérée comme fiche principale et on doit corriger cette faute par le choix dans le menu Delphi : projet options. TTC : le montant Tous Taxes Comprise.Pour que la fiche menu occupe tous l’éspace de l’écran lors du lancement de l‘éxécution du logiciel : . .Choisir dans sa propriété : « Window state wsmaximized » 5.pour que l’image s’agrandie si elle à une taille plus petite que la surface de son cadre on modifie sa propriété : Stretch true. fournisseur) qui se ressemble coté programmation. L’image de l’arrière plan : 1. Une table permanente est une table qui lors de l’archivage de notre BD pour le passage à une nouvelle année d’activité.dans le menu principal : La partie fichier: sert à représenter les tables permanentes (produit.le menu : fichier quitter. Remarques : 1. ses données ne seront pas vidés (conservent les mêmes données pour le nouvel an) La partie édition : sert à représenter les mouvements entre les tables permanentes.insérer un composant « image1 » de la palette « supplément ».dans sa propriété picture on clique sur le bouton Charger et chercher l’image voulue. Les abréviations du domaine commercial : HT : prix Hors Taxe. 2.Enregistrer notre travail par le menu Delphi : fichier tout enregistrer. Aussi modifier sa propriété : align alClient.Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale Résultat: Cette technique assure l’affichage de la fenêtre de confirmation de sortie du logiciel pour n’importe quel type de tentative de fermeture du logiciel : . clients. (bien sur les mouvements sont représentés sous formes de tables de mouvement (facture_achat et ligne_achat par exemple) Une table mouvement après son archivage (après copiage de son contenu dans un autre emplacement mémoire comme réserve) doit être vidée pour commencer une nouvelle année d’activité. 2.Enfin clique sur Ouvrir ensuite sur Ok 4.49 - . 3.

filtered := false .index = 3 then Table1.filter :=’[designation]=‘ + #39 + edit1.index = 2 then Table1.text + ‘*’ + #39 .bmp Bkclose Commerce Select sum(qte_stock*prix_achat)as montant_stock from produit True Filtrage Accesbd Contrôlebd Supplement Datasource1 Dbgrid1 Speedbutton1 Bitbtn1 Query1 BDE Standard Label1 Edit1 3.50 - .active := true . 5.Pour faire le filtrage on double clique sur le composant edit1 et on écrit dans la procédure (onchange): if edit1.index = 0 then Table1. Ensuite : clique sur le champ montant_stock et glisser ce dernier vers le bas de notre fiche. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom de la fiche : « fiche_produit ».close .Apprendre Delphi7 par l’exemple LA FICHE PRODUIT Chapitre 2 : Logiciel Gestion Commerciale 1. Ensuite : choisir dans le menu Delphi : fichier enregistrer. If column. If column. end . 4. Ensuite : dans son inspecteur d’objet on clique sur l’onglés « événements » Ensuite : on double clique à droite de l’événement « ontitleclick » et on introduit le code source suivant : // Une table est triée automatiquement selon son index actuel (primaire ou secondaire) If column.On tape la touche F12 (retour à la fiche).indexname :=’c3’ .Double clique sur le query1 et clique droit sur la petite fenêtre et clique sur «ajouter tous les champs».indexname :=’c6’ . et pour faire le trie de la table produit : clique sur le composant dbgrid1. If column.choisir dans le menu Delphi : fichier nouvelle fiche.filtered :=true . table1. et dans le dossier « c:\commerce\source » nommer l’unité : « produit » 2. .Insérer les composants suivants : Palette BDE Composant Table1 Propriété Databasename Tablename Active Dataset Datasource Caption Glyph Kind databasename Sql Active Caption Text Valeur Commerce Produit True Table1 Datasource1 Imprimer C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer. table1.active := true . end else begin table1. If column. table1.indexname :=’c1’ .index = 5 then Table1. table1.indexname :=’c5’ . If column.indexname :=’c2’ .indexname :=’c4’ .close .index = 1 then Table1. table1.index = 4 then Table1.text <> ‘’ then begin table1.

ascurrency .fieldbyname(‘total’). Pour insérer des index secondaires dans les champs de la table produit il faut que cette table ne soit pas en cours d’utilisation donc sa propriété : active false.on tape Shift + F12 pour afficher la liste des fiches du logiciel et on choisit la fiche « fiche_produit » et on clique sur ok. Ensuite : on ferme la petite fenêtre du « popupmenu1 » et on clique sur le composant « speedbutton1 » qui représente l’impression et dans son inspecteur d’objet on choisit dans sa propriété « popupmenu » l’élément « popupmenu1 ». Ensuit : on tape F12 pour retourner à la fiche et on double clique sur le composant « popupmenu1 » et on double clique sur l’élément « imprimer » et on écrit dans sa procédure : fiche_etat_produit.ascurrency := table1. c2 pour le champ designation. Ensuite : on double clique sur ce composant et on introduit les deux éléments «previsualiser» et «imprimer» dans leurs propriétés «caption».active:=true. puisque elle aussi utilise la table produit. Ensuite : on écrit le nom du champ : « total » et on choisit le type du champ : « currency » et on clique sur ok.print . Ensuite : clique sur le bouton >> qui fait passer tous les champs à droite pour les imprimer tous et clique sur Terminer.showmodal . Ensuite : on clique sur le composant table1 et dans son inspecteur d’objet on clique sur l’onglé « événements ».…etc. Ensuite : on clique sur cette nouvelle fiche en évitant le clic sur le composant « quickrep1 » et dans sa propriété « name » on donne le nom de cette fiche qui sera « fiche_etat_produit ». Aussi la requête query1 doit être : active false.on renforce cette fiche par des champs calculés pour chaque enregistrement de la table produit et cela comme suite : On double clique sur le composant table1 Ensuite : on clique droit sur la petite fenêtre et on clique sur « ajouter tous les champs ». Ensuite : on clique dans le menu du BDE sur table restructurer. query1. Ensuite : on ouvre la table par : (le menu) fichier ouvrir table et on choisit l’alias « commerce » et la table « produit ». Ensuite : on double clique à droite de l’événement « oncalcfields » et on écrit dans la procédure : table1. 9. 6. query1. Ensuite : on clique sur : (menu Delphi) fichier enregistrer.fieldbyname(‘qte_stock’).on va maintenant préparer l’impression de la liste des produits comme suite : On choisit dans le menu Delphi : fichier nouveau. Ensuite : et pour une impression bien présentée des produits on insère un composant popupmenu1 (palette standard). . et on clique dans la fenêtre qui s’affiche sur l’onglé « affaires ».preview . Remarques : 1. 8.On tape : Shift + F12 et on clique sur la « fiche_produit » et on clique sur Ok. Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».fieldbyname(‘prix_achat’).Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale Remarque importante : Le trie et le filtrage dans une table ne réussissent que si on a défini des index secondaires sur chaque champ trié ou filtré. on clique sur le bouton OK et on propose un nom symbolique à cet index secondaire (c1 pour le champ reference.Pour que la fiche produit se place au milieu de l’ecran si on l’appel lors du lancement de l‘éxécution du logiciel : . et dans le dossier : « c:\commerce\source » on nomme l’unité : etat_produit. on recompile par Ctrl + F9 pour faire la liaison aussi entre la fiche_produit et la fiche_etat_produit et on doit cliquer sur oui aussi pour cette demande de confirmation.asfloat * table1. // Pour que la requête prend en considération les dernières données saisies (rafraîchir les calculs de la requête). 7. Ensuite : on clique sur le bouton lancer l’expert et on choisit l’alias « commerce » et la table « produit ».quickrep1.) Ensuite : on clique sur le bouton enregistrer et on retourne à l’environnement Delphi. Ensuite : on lance le BDE Delphi par : (le menu Delphi) : outils module base de données. Ensuite : on choisit dans la liste des choix « propriétés de la table » l’option « index secondaires » Ensuite : on clique pour chaque champ sur le bouton Définir et on fait passer ce champ à droite.quickrep1. Ensuite : pour programmer le composant popupmenu1 on double clique sur ce dernier et on double clique sur l’élément « previsualiser » et on écrit dans sa procédure : fiche_etat_produit.close.cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok. Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément produit (du sous menu fichier) Ensuite : on écrit dans la procédure : fiche_produit.51 - . Enfin : on réactive les deux composants table1 et query1 par leurs propriétés : active true. Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_produit et on doit cliquer sur oui pour cette demande de confirmation . Ensuite : on clique sur l’élément : « expert quickreport » et on clique sur ok.

filtered :=true . Remarque importante : Dans le cas des champs de type monétaire (prix_achat. table1.On choisit dans sa propriété : « position poScreenCenter» 2.filtered := false . on peut modifier le symbole monétaire (La monais : Da.active := true .close . prix_vente. donc il faut l’écrire) Enfin clique sur Ok ensuite Ok Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements possibles) LA FICHE CLIENT 1. et dans le dossier « c:\commerce\source » nommer l’unité : « client » 2. $. table1.) et cela en suivant les étapes : On lance la fenêtre « panneau de configuration » de Windows par : Le bouton « démarrer » paramètre « panneau de configuration » dans cette fenêtre on double clique sur : « options régionales et linguistiques » clique sur le bouton « personnaliser » clique en haut sur la page : « symbole monétaire » choisir ou écrire dans la liste « symbole monétaire » le symbole voulu (généralement Da) (Si le symbole Da ne figure pas dans la liste.On clique sur cette fiche (éviter de cliquer sur l’un de ses composants). table1.text + ‘*’ + #39 . end . Ensuite : choisir dans le menu Delphi : fichier enregistrer.choisir dans le menu Delphi : fichier nouvelle fiche. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_client ».text <> ‘’ then begin table1. . .bmp Bkclose Filtrage Accesbd Contrôlebd Supplement Datasource1 Dbgrid1 Speedbutton1 Bitbtn1 Label1 Edit1 Standard 3.filter :=’[nom_c]=‘ + #39 + edit1. end else begin table1.Pour faire le filtrage on double clique sur le composant edit1 et on écrit dans la procédure (onchange): if edit1. total …).52 - . table1. table1.active := true .on enregistre notre travail par le menu Delphi : fichier tout enregistrer.Insérer les composants suivants : Palette BDE Composant Table1 Propriété Databasename Tablename Active Dataset Datasource Caption Glyph Kind Caption text Valeur Commerce client True Table1 Datasource1 Imprimer C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer.close . € ….Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale . £.

On choisit dans sa propriété : « position poScreenCenter» 2. Ensuite : on clique sur le bouton >> qui fait passer tous les champs à droite et on clique sur Terminer.showmodal . Ensuite : on choisit dans la liste des choix « propriétés de la table » l’option « index secondaires » Ensuite : on clique pour chaque champ sur le bouton Définir et on fait passer ce champ à droite.index = 5 then Table1. Ensuite : on lance le BDE Delphi par : (le menu Delphi) : outils module base de données. Ensuite : on ouvre la table par : (le menu) fichier ouvrir table et on choisit l’alias « commerce » et la table « client ».index = 2 then Table1. . Enfin : on réactive le composant table1 par sa propriété : active true. 5. Ensuite : on ferme la petite fenêtre du « popupmenu » et on clique sur le composant « speedbutton1 » qui représente l’impression et dans son inspecteur d’objet on choisit dans sa propriété « popupmenu » l’élément « popupmenu1 ».On tape la touche F12.preview .Pour que la fiche client se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : .index = 0 then Table1.indexname :=’c6’ .indexname :=’c4’ .) Ensuite : on clique sur le bouton enregistrer et on retourne à l’environnement Delphi. 6.indexname :=’c3’ . Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément client (du sous menu fichier) Ensuite : on écrit dans la procédure : fiche_client.quickrep1. Ensuite : on clique sur le bouton lancer l’expert. If column. Ensuite : on clique dans le menu du BDE sur table restructurer.On tape : Shift + F12 et on clique sur la « fiche_client » et on clique sur Ok. If column. Ensuit : on tape F12 pour retourner à la fiche et on double clique sur le composant « popupmenu1 » et on double clique sur l’élément « imprimer » et on écrit dans sa procédure : fiche_etat_client.print . . Remarque: Pour insérer des index secondaires dans les champs de la table client il faut que cette table ne soit pas en cours d’utilisation donc sa propriété : active false. Ensuite : on clique sur : (menu Delphi) fichier enregistrer.indexname :=’c2’ . 7.cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok. et on clique dans la fenêtre qui s’affiche sur l’onglé « affaires ». Ensuite : dans son inspecteur d’objet on clique sur l’onglés « événements » Ensuite : on double clique à droite de l’événement « ontitleclick » et on introduit le code source suivant If column. on clique sur le bouton OK et on propose un nom symbolique à cet index secondaire (c1 pour le champ code_c. Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_client et on doit cliquer sur oui pour cette demande de confirmation .indexname :=’c1’ . Ensuite : et pour une impression bien présentée des clients on insère un composant popupmenu (palette standard). Ensuite : pour programmer le composant popupmenu1 on double clique sur ce dernier et on double clique sur l’élément « previsualiser » et on écrit dans sa procédure : fiche_etat_client.quickrep1.index = 1 then Table1.on enregistre notre travail par le menu Delphi : fichier tout enregistrer.…etc.indexname :=’c5’ . Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements possibles) .53 - .On doit maintenant préparer l’impression de la liste des clients comme suite : On choisit dans le menu Delphi : fichier nouveau.On clique sur cette fiche (éviter de cliquer sur l’un de ses composants). c2 pour le champ nom_c.index = 3 then Table1. If column.Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale 4. Ensuite : on clique sur l’élément : « expert quickreport » et on clique sur « ok ». et pour faire le trie de la table client : clique sur le composant dbgrid1.On tape Shift + F12 pour afficher la liste des fiches et on choisit la fiche « fiche_client » et on clique sur Ok. If column. et dans le dossier : c:\commerce\source on nomme l’unité : etat_client. Ensuite : on clique sur cette nouvelle fiche en évitant le clic sur le composant « quickrep1 »et dans sa propriété « name » on donne le nom « fiche_etat_client » à cette fiche. Remarques : 1. If column. et on choisit l’alias « commerce » et la table « client ».index = 4 then Table1. Ensuite : on double clique sur ce composant et on introduit les deux éléments «previsualiser» et «imprimer» dans leurs propriétés «caption». on recompile par Ctrl + F9 pour faire la liaison aussi entre la fiche_client et la fiche_etat_client et on doit cliquer sur oui aussi pour cette demande de confirmation.

54 - .index = 4 then Table1.filtered :=true .bmp Bkclose Filtrage Accesbd Contrôlebd Supplement Datasource1 Dbgrid1 Speedbutton1 Bitbtn1 Label1 Edit1 Standard 3. table1.indexname :=’c5’ . end else begin table1.close . Ensuite : choisir dans le menu Delphi : fichier enregistrer.active := true . If column. table1. end . 4.close .index = 5 then Table1.text + ‘*’ + #39 . table1.index = 1 then Table1. If column. et dans le dossier « c:\commerce\source » nommer l’unité : « fournisseur » 2.indexname :=’c1’ . If column.indexname :=’c4’ .Insérer les composants suivants : Palette BDE Composant Table1 Propriété Databasename Tablename Active Dataset Datasource Caption Glyph Kind Caption text Valeur Commerce fournisseur True Table1 Datasource1 Imprimer C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer.index = 0 then Table1.Apprendre Delphi7 par l’exemple LA FICHE FOURNISSEUR Chapitre 2 : Logiciel Gestion Commerciale 1. Ensuite : dans son inspecteur d’objet on clique sur l’onglés « événements » Ensuite : on double clique à droite de l’événement « ontitleclick » et on introduit le code source suivant (Une table est triée automatiquement selon sont index actuel (primaire ou secondaire) et on suppose que les index secondaires existes déjà pour chaque champ) : If column.text <> ‘’ then begin table1.indexname :=’c2’ . If column.indexname :=’c3’ . If column. table1.filter :=’[nom_f]=‘ + #39 + edit1. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_fournisseur ».indexname :=’c6’ .index = 3 then Table1. .index = 2 then Table1.Choisir dans le menu Delphi : fichier nouvelle fiche.active := true .Pour faire le filtrage on double clique sur le composant edit1 et on écrit dans la procédure (onchange): if edit1. et pour faire le trie de la table fournisseur : clique sur le composant dbgrid1.On tape la touche F12 (retour à la fiche). table1.filtered := false .

et on choisit l’alias « commerce » et la table « fournisseur ». Ensuit : on tape F12 pour retourner à la fiche et on double clique sur le composant « popupmenu1 » et on double clique sur l’élément « imprimer » et on écrit dans sa procédure : fiche_etat_fournisseur. on clique sur le bouton OK et on propose un nom symbolique à cet index secondaire (c1 pour le champ code_f.On clique sur cette fiche (éviter de cliquer sur l’un de ses composants). Ensuite : on choisit dans la liste des choix « propriétés de la table » l’option « index secondaires » Ensuite : on clique pour chaque champ sur le bouton Définir et on fait passer ce champ à droite.quickrep1.…etc. Remarques : 1.Pour que la fiche fournisseur se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : . Ensuite : on clique sur le bouton lancer l’expert. 7. . Enfin : on réactive le composant table1 par sa propriété : active true.showmodal . Ensuite : on clique sur le bouton >> qui fait passer tous les champs à droite et on clique sur Terminer. on recompile par Ctrl + F9 pour faire la liaison aussi entre la fiche_fournisseur et la fiche_etat_fournisseur et on doit cliquer sur oui aussi pour cette demande de confirmation. 5. Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément fournisseur (du sous menu fichier) Ensuite : on écrit dans la procédure : fiche_fournisseur.on enregistre notre travail par le menu Delphi : fichier tout enregistrer.on tape Shift+F12 pour afficher la liste des fiches et on choisit la fiche « fiche_fournisseur » et on clique sur Ok.quickrep1. Ensuite : on clique dans le menu du BDE sur table restructurer.cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.) Ensuite : on clique sur le bouton enregistrer et on retourne à l’environnement Delphi. Ensuite : on double clique sur ce composant et on introduit les deux éléments «previsualiser» et «imprimer» dans leurs propriétés «caption». Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_fournisseur et on doit cliquer sur oui pour cette demande de confirmation . Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements possibles) . Ensuite : et pour une impression bien présentée des fournisseurs on insère un composant popupmenu (palette standard).print . et on clique dans la fenêtre qui s’affiche sur l’onglé « affaires ».On tape : Shift + F12 et on clique sur la « fiche_fournisseur » et on clique sur Ok. Ensuite : on clique sur l’élément : « expert quickreport » et on clique sur Ok.On doit maintenant préparer l’impression de la liste des fournisseurs comme suite : On choisit dans le menu Delphi : fichier nouveau. Ensuite : on ouvre la table par : (le menu) fichier ouvrir table et on choisit l’alias « commerce » et la table « fournisseur».preview . et dans le dossier : c:\commerce\source on nomme l’unité : etat_fournisseur. Ensuite : on lance le BDE Delphi par : (le menu Delphi) : outils module base de données.Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale Remarque: Pour insérer des index secondaires dans les champs de la table fournisseur il faut que cette table ne soit pas en cours d’utilisation donc sa propriété : active false.55 - . Ensuite : on ferme la petite fenêtre du « popupmenu » et on clique sur le composant « speedbutton1 » qui représente l’impression et dans son inspecteur d’objet on choisit dans sa propriété « popupmenu » l’élément « popupmenu1 ». . Ensuite : on clique sur :(menu Delphi) fichier enregistrer. Ensuite : pour programmer le composant popupmenu1 on double clique sur ce dernier et on double clique sur l’élément « previsualiser » et on écrit dans sa procédure : fiche_etat_fournisseur. 6. Ensuite : on clique sur cette nouvelle fiche en évitant le clic sur le composant « quickrep1 »et dans sa propriété « name » on donne le nom « fiche_etat_fournisseur » à cette fiche.On choisit dans sa propriété : « position poScreenCenter» 2. c2 pour le champ nom_f.

Ensuite : glisser les champs de la table facture_achat un par vers le haut de la fiche. et dans le dossier « c:\commerce\source » nommer l’unité: «facture_achat» 2Insérer les composants suivants : Palette BDE Composant Table1 Propriété Databasename Tablename Active Databasename Tablename Active Databasename Tablename Active Databasename Tablename Active Dataset Dataset Dataset Datasource Caption Glyph Kind databasename Sql Valeur Commerce Facture_achat True Commerce Fournisseur True Commerce ligne_achat True Commerce Produit True Table1 Table2 Table3 Datasource3 Imprimer C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer. Ensuite : supprimer le composant « dbedit4 » qui représente le champ « code_four » et le remplacer par le composant « dblookupcombobox1 » (palette « controlebd ») et modifier les propriétés de ce « dblookupcombobox1 » comme suite : Datasource datasource1 Datafield code_four Listsource datasource2 Listfield code_f. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_facture_achat». Ensuite : supprimer le composant « dbedit3 » qui représente le champ « règlement » et le remplacer par le composant « dbcombobox1 » de la palette « controlebd » et modifier les propriétés de ce « dbcombobox1 » comme suite : Datasource datasource1 Datafield règlement Items clique sur le petit bouton écrire : cheque.bmp Bkclose Commerce Select sum(qte_achat*prix_achat)as HT. nom_f Keyfield code_f . Ensuite : clique droit sur la petite fenêtre et clique dans le menu contextuel sur: «ajouter tous les champs».Sum(qte_achat*prix_achat*tva)as total_tva. credit (chaque élément dans une ligne) fermer la fenêtre. Sum (qte_achat*prix_achat*(1+tva)) as TTC from produit.Apprendre Delphi7 par l’exemple FICHE FACTURE ACHAT Chapitre 2 : Logiciel Gestion Commerciale 1choisir dans le menu Delphi : fichier nouvelle fiche.56 - . ligne_achat Where (reference = ref_prod) and (num_achat = :p) Clique sur « p » et choisir dans la propriété datatype : « ftinteger » True Datasource1 Table2 Table3 Table4 Accesbd controlebd Supplement Datasource1 Datasource2 Datasource3 Dbgrid1 Speedbutton1 Bitbtn1 Query1 BDE controlebd dbnavigator Params Active datasource 3Double clique sur le composant table1. Ensuite : choisir dans le menu Delphi:fichier enregistrer. à la fin fermer la petite fenêtre. espece.

fieldbyname(‘numero_a’).asstring. Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ». Ensuite : dans sa propriété « masterfield » on clique sur petit bouton.clique sur le composant dbedit1.asfloat. on introduit sa designation.tapez F12 et clique sur le composant dbcombobox1. et choisir dans sa propriété : mastersource datasource1.ascurrency:= Table4.on clique dans la liste à droite de la fenêtre sur l’élément « date longue1 » et on clique sur Ok . tva.asinteger :=table1.tapez F12 et clique sur le composant dbedit2. Query1.fieldbyname(‘tva’).close.fieldbyname(‘reference’).ascurrency . Ensuite : clique doit sur la petite fenêtre et clique dans le menu contextuel sur : « ajouter tous les champs ». à la fin fermer la petite fenêtre. Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».ascurrency:=Table3. Ensuite : on clique sur le composant « table3 » (ligne_achat) et dans son inspecteur d’objet on clique sur l’onglé événement Ensuite : on double clique à droite de l’événement « oncalcfield » et on écrit dans la procédure : Table4.on clique sur le petit bouton … de sa propriété « editmask » .asfloat:= Table4.parambyname(‘p’). prix. A la fin : on ferme la petite fenêtre. Ensuite : on écrit le nom du champ : « tva » et on choisit le type du champ : « float » et on clique sur Ok. 8on tape F12 pour retourner à la fiche et on double clique sur le composant « query1 ».fieldbyname(‘tva’). // préparation de la recherche du produit qui a la reference tapée Table4.setkey .fieldbyname(‘prix_achat’).asinteger := Table3. Ensuite : clique sur le bouton « ajouter » ensuite sur le bouton Ok.Double clique sur son événement « OnKeyDown » et écrire dans sa procédure : If key = vk_return then DblookupCombobox1. Pour masquer le format d’affichage de la « date_achat » : . et on calcul le total Begin Table3. .fieldbyname(‘ref_prod’).gotokey then // si le produit existe. Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ». Table3. . Table3. Ensuite : glisser les champs de la requête facture un par un vers le bas de la fiche. Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».Double clique sur son événement « OnKeyDown » et écrire dans sa procédure : If key = vk_return then Dbedit2.ensuite on peut contrôler la manipulation du clavier par : . Ensuite : on écrit le nom du champ : « prix_achat » et on choisit le type du champ : « currency » et on clique sur Ok.asinteger . Ensuite : on écrit le nom du champ : « total » et on choisit le type du champ : « currency » et on clique sur Ok. // On profite l’occasion pour passer une valeur au paramètre à notre requête « query1 » Query1. 9pour que la facture affiche son montant ttc en lettres on procède comme suite : 5- .dans la petite fenêtre on clique sur le champ « date_achat » .ascurrency.fieldbyname(‘prix_achat’). Table3.fieldbyname(‘designation’).asinteger .on ferme la petite fenêtre et la date_achat sera masquée par le format « __/__/__ » 6pour faire une liaison maitre-detail entre la table maître« facture_achat ». End.fieldbyname(‘designation’).fieldbyname(‘qte_achat’). et la table détaille « ligne_achat » : On clique sur le composant table3 « ligne_achat ».on double clique sur le composant « table1 » . .setfocus .fieldbyname(‘prix_achat’).setfocus . 7on peut renforcer cette fenêtre par les champs calculés comme suite : On double clique sur le composant table3 « ligne_achat ». . Ensuite : on clique droit sur la petite fenêtre et on clique sur « ajouter tous les champs ».Double clique sur son événement « OnKeyDown » et écrire dans sa procédure : If key = vk_return then DbCombobox1. .asfloat* Table4.setfocus .setfocus . Ensuite : on choisit dans la liste à gauche le champ « num_achat » et à droite le champ « numero_a ».fieldbyname(‘total’). Query1.Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale 4Pour mettre le curseur du clavier automatiquement dans le « dbedit1 » pour faciliter la saisie du numéro de la facture on clique sur le composant « table1 » et dans son inspecteur d’objet double clique à droite de son événement «afterinsert» on écrit dans sa procédure : dbedit1.57 - . If table4. Ensuite : on écrit le nom du champ : « designation » et on choisit le type du champ : « string » et on clique sur Ok. .open . Table4.asstring:= Table4.active:=true.

end. begin chaine:=' '. if c=3 then chaine:=chaine+ ' Trois Cent'. if p<>1 then begin mille(p). p1:=p1-c*10. p1:=p1-c*100. if c=7 then chaine:=chaine+ ' Sept Cent'. if c=2 then chaine:=chaine+ ' Deux Cent'. if p3=16 then chaine:=chaine+ ' Seize'. end. if c=6 then chaine:=chaine+ ' Six Cent'. p1:=p1-c*10. {milliards} if nombre>=1000000 then begin p:=nombre div 1000000.q. end. chaine:=chaine+ ' Milliard'. IF q=0 THEN chaine:=chaine+ ' Zero CTS' Else chaine:=chaine+ ' CTS' end.end. c:=p1 div 10. Ensuite : on insère un composant Label (palette standard) et supprimer le contenu de sa propriété « caption » Ensuite : on double clique sur le composant « Bouton1 » et on écrit dans sa procédure : (Supprimer son begin et end et coller tous le code source suivant) var chaine1. if p2=5 then chaine:=chaine+ ' Cinq'. chaine:=chaine+ ' Mille'. if c=8 then chaine:=chaine+ ' Huit Cent'. if p3=19 then chaine:=chaine+ ' Dix Neuf'. {simple} if (0<=nombre) and (nombre<1000) then begin p:=nombre. if c=5 then begin chaine:=chaine+ ' Cinquante'. procedure mille(var p1:integer). {milliers} if nombre>=1000 then begin p:=nombre div 1000. chiffre(p1). if p3=13 then chaine:=chaine+ ' Treize'. chiffre(p1). p1:=p1-c*10. nombre:=trunc(n). if c=4 then chaine:=chaine+ ' Quatre Cent'. begin if p3=10 then chaine:=chaine+ ' Dix'. end. p1:=p1-c*10. chaine:=chaine+ ' Million'.end. N. if c=7 then begin chaine:=chaine+ ' Soixante'.end. if p3=17 then chaine:=chaine+ ' Dix Sept'.Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale On insère un composant « Button1 » (palette standard) et dans sa propriété : « caption » on écrit : conversion. if p3=12 then chaine:=chaine+ ' Douze'. if c=1 then decimale(p1). if c=1 then chaine:=chaine+ ' Cent'. abc:=int(n*100). p.DEC:integer.chaine:string. chiffre(p1). if nombre>=1000000000 then begin p:=nombre div 1000000000. var c:integer. end.n1:real. end else chaine:=chaine+ 'mille'. procedure decimale(var p3:integer). if p2=8 then chaine:=chaine+ ' Huit'. if p3=18 then chaine:=chaine+ ' Dix Huit'. end. if c=5 then chaine:=chaine+ ' Cinq Cent'. mille(q). if p<>0 then begin mille(p). end. p1:=p-60. if p2=7 then chaine:=chaine+ ' Sept'. end. chaine:=chaine+ ' dinars' +' et'. if c=9 then chaine:=chaine+ ' Neuf Cent'. end. if p2=2 then chaine:=chaine+ ' Deux'.end. nombre:=nombre-p*1000.58 - .fieldbyname('ttc'). mille(p).} label8. end. if c=0 then chiffre(p1). n:=query1.caption:=chaine. begin if p2=1 then chaine:=chaine+ ' Un'. if c=3 then begin chaine:=chaine+ ' Trente'. if c=4 then begin chaine:=chaine+ ' Quarante'. decimale(p1). p1:=p1-80. if p3=14 then chaine:=chaine+ ' Quatorze'. if c=9 then begin chaine:=chaine+ ' Quatre Vingt'. end. chiffre(p1). chiffre(p1). {Programme principal} var abc:real. if c=2 then begin chaine:=chaine+ ' Vingt'. . begin c:=p1 div 100. {chaine:=chaine+ ' dinars' +' et'+chaine1+' CTS'. nombre:=nombre-p*1000000000. dec:=trunc(abc) mod 100. decimale(p1).nombre. nombre:=nombre-p*1000000. if p3=11 then chaine:=chaine+ ' Onze'.end. begin q:=dec. if p2=3 then chaine:=chaine+ ' Trois'. if c=8 then begin chaine:=chaine+ ' Quatre Vingt'. end.asfloat. chiffre(p1). if p<>0 then begin mille(p). p1:=p1-c*10. procedure chiffre(var p2:integer). if p2=6 then chaine:=chaine+ ' Six'. if c=6 then begin chaine:=chaine+ ' Soixante'. end. if p2=4 then chaine:=chaine+ ' Quatre'. p1:=p1-c*10. if p2=9 then chaine:=chaine+ ' Neuf'. if p3=15 then chaine:=chaine+ ' Quinze'.

. donc ce champ répétera pour tous les enregistrements du « dbgrid1 » le même numéro de facture. hascolumnheader true.supprimer le champ « num_achat » et fermer la petite fenêtre.table2 Nom_f Reference Designation Qte achat Prix unite Tva total . hasdetail true. hassummary true. (Le champ « num_achat » ne sera pas supprimé de la table « ligne_achat » mais seulement il ne sera pas affiché) 11pour préparer l’impression de notre facture_achat on procède comme suite : On insère une nouvelle fiche à notre logiciel par le choix dans le menu Delphi de : fichier nouvelle fiche. Ensuite : on tape F12 et en haut de l’unité on écrit dans la liste «uses» le nom «facture_achat» et on compile Ctrl+F9 pour assurer la liaison entre la fiche_facture_achat et la fiche_etat_facture_achat.clic en haut de la petite fenêtre sur le bouton « ajouter tous les champs » . Ensuite : on insère les composants suivants de la palette « qreport » sur les bandes de ce quickrep1 comme suite: bande Titre (agrandir la hauteur de cette bande) Composant qrlabel1 qrlabel2 qrlabel3 qrdbtext1 Qrlabel4 Qrdbtext2 Qrlabel5 Qrdbtext3 Qrlabel6 Qrdbtext4 Entête de colonnes Qrlabel7 Qrlabel8 Qrlabel9 Qrlabel910 Qrlabel11 Qrlabel12 Propriété caption caption caption dataset datafield caption dataset datafield caption dataset datafield caption dataset datafield caption caption caption caption caption caption valeur société de commerce multiple Facture achat numero fiche_facture_achat.59 - . et dans le dossier « c:\commerce\source » nommer l’unité: «etat_facture_achat». Nb : par fois Delphi répète quelques unités de la partie uses si on écrit une nouvelle unité dans cette partie. Ensuite : dans l’inspecteur d’objet du quickrep1 on écrit dans la propriété : zoom 70 Ensuite : dans l’inspecteur d’objet du quickrep1 on choisit dans la propriété : dataset « fiche_facture_achat.table1 Reglement_a fournisseur fiche_facture_achat.Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale 10le « dbgrid1 » affiche le champ « num_achat » (de la table ligne_achat) qui contient bien sûr le même numéro de la facture_achat actuelle (puisque il y’a une liaison maître_détail entre la table ligne_achat et la table facture_achat par leurs champs communs num_achat et numero_a).double clic sur le « dbgrid1 ». Ensuite : (le menu Delphi): fichier enregistrer. pour supprimer ce champ : .table1 Numero_a Date achat fiche_facture_achat.table1 Date_achat reglement fiche_facture_achat. il vaut mieux alors de ne pas afficher ce dernier dans le « dbgrid1 ». Ensuite : on insère dans cette fiche un composant « quickrep1 » de la palette « qreport ». Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom: « fiche_etat_facture_achat ». donc on doit supprimer les unités dupliquées si Delphi signal ce problème de répétition après la compilation du logiciel.table3 » Ensuite: choisir dans sa propriété Bands: hastitle true.

. Ensuite : on double clique sur ce composant et on introduit les deux éléments «previsualiser» et «imprimer» dans leurs propriétés «caption».table3 reference fiche_facture_achat. Fiche_etat_facture_achat. .quickrep1.Pour bien contrôler la taille des « qrshape » on utilise les touches : Shift + ou les autre touches de flèches.table3 total HT fiche_facture_achat.quickrep1. On programme cela par le choix du composant table1 et dans la procédure de son événement « afterpost » on écrit : .caption .Le « qrshape » au début cache le « qrlabel » qui va l’encadrer. .on presse sur la touche Shift et par sourie on clique sur tous les « qrshape » de la bande « entête de colonnes » et en fin on lache la touche Shift et on tape les touches Ctrl + C pour copier ces cadres. Ensuite : on ferme la petite fenêtre du « popupmenu » et on clique sur le composant « speedbutton1 » qui représente l’impression et dans son inspecteur d’objet on choisit dans sa propriété « popupmenu » l’élément « popupmenu1 ».table3 tva fiche_facture_achat.caption := label8. . 12lorsqu’on enregistre les modifications dans notre table1 (facture_achat) par le bouton « enregistrer » du dbnavigator1.query1 TTC Arrêtez la présente facture à la somme de Remarque : On peut utiliser les composants « Qrshape » de la palette « Qreport » pour encadrer les champs des tables (composants qrdbtext ») et leurs entêtes de colonnes (composants « qrlabel ») pour avoir ensuite des tables encadrées dans notre état d’impression.caption := label8.query1 TOTAL_TVA TTC fiche_facture_achat.table3 Prix_achat fiche_facture_achat.print .qrlabel17.query1 HT TOTAL TVA fiche_facture_achat. Ensuite : on tape Shift + F12 et on affiche la fiche « fiche_facture_achat » Ensuite : et pour une impression bien présentée de la facture on insère un composant popupmenu (palette standard). Ensuite : pour programmer le composant popupmenu1 on double clique sur ce dernier et on double clique sur l’élément « previsualiser » et on écrit dans sa procédure : Fiche_etat_facture_achat.preview . donc on clique sur chaque « qrshape » par le bouton doit de la sourie et on choisit dans le menu contextuel « mettre en arrière plan ». Les étapes sont : .table3 Qte_achat fiche_facture_achat. . Fiche_etat_facture_achat. on doit ajouter les quantités_achat à la quantité du stock.60 - .Pour bien contrôler la position des « qrshape » on utilise les touches : Ctrl + ou les autre touches de flèches.table3 designation fiche_facture_achat.insérer dans la bande entête de colonnes des composants « Qrshape » pour chaque « qrlabel » de cette bande pour les encadrer. .On déplace ces cadres par les touches Ctrl + et on clique sur ces cadres par le bouton droit de la sourie et on clique sur « mettre en arrière plan ».caption .On clique sur la bande « detail » et on tape Ctrl + V pour coller les cadres dans cette bande. Ensuit : on tape F12 pour retourner à la fiche et on double clique sur le composant « popupmenu1 » et on double clique sur l’élément « imprimer » et on écrit dans sa procédure : Fiche_etat_facture_achat. // qrlabel17 reçoit le TTC en lettres.qrlabel17.Apprendre Delphi7 par l’exemple Detail Qrdbtext5 Qrdbtext6 Qrdbtext7 Qrdbtext8 Qrdbtext9 Qrdbtext10 Resumé Qrlabel13 (agrandir la hauteur Qrdbtext11 de cette bande) Qrlabel14 Qrdbtext12 Qrlabel15 Qrdbtext13 Qrlabel16 Qrlabel17 dataset datafield dataset datafield dataset datafield dataset datafield dataset datafield dataset datafield caption dataset datafield caption dataset datafield caption dataset datafield caption caption Chapitre 2 : Logiciel Gestion Commerciale fiche_facture_achat.

Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements possibles) FICHE FACTURE VENTE 1choisir dans le menu Delphi : fichier nouvelle fiche.asinteger := Table3.first . Table4.Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale table3. En fin : on enregistre tous le travail par : (le menu Delphi) : fichier tout enregistrer 13cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.setkey .On clique sur cette fiche (éviter de cliquer sur l’un de ses composants). End.on enregistre notre travail par le menu Delphi : fichier tout enregistrer. Ensuite : choisir dans le menu Delphi:fichier enregistrer. et dans le dossier « c:\commerce\source » nommer l’unité: «facture_ vente» . on recompile par Ctrl + F9 pour faire la liaison aussi entre la fiche_facture_achat et la fiche_etat_facture_achat et on doit cliquer sur oui aussi pour cette demande de confirmation. If table4.fieldbyname(‘qte_stock’). Remarques : 1. while not(table3.fieldbyname(‘qte_stock’).showmodal .next.fieldbyname(‘qte_achat’). Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément facture achat (du sous menu Edition) Ensuite : on écrit dans la procédure : fiche_facture_achat. Table3.Pour que la fiche facture achat se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : . End.eof) do begin Table4.asfloat:=Table4. . .On tape : Shift + F12 et on clique sur la « fiche_facture_achat » et on clique sur Ok.post.asfloat+ Table3.asfloat. Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_facture_achat et on doit cliquer sur oui pour cette demande de confirmation .On choisit dans sa propriété : « position poScreenCenter» 2.gotokey then Begin Table4.fieldbyname(‘ref_prod’).asinteger . //préparation de la modification Table4.fieldbyname(‘reference’).edit.61 - . // préparation de la recherche Table4. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_facture_vente».

Apprendre Delphi7 par l’exemple 2Palette BDE Chapitre 2 : Logiciel Gestion Commerciale Insérer les composants suivants : Composant Table1 Propriété Databasename Tablename Active Databasename Tablename Active Databasename Tablename Active Databasename Tablename Active Dataset Dataset Dataset Datasource Caption Glyph Kind databasename Sql Valeur Commerce Facture_vente True Commerce client True Commerce Ligne_vente True Commerce Produit True Table1 Table2 Table3 Datasource3 Imprimer C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer. . credit (chacun dans une ligne) et fermer la fenêtre.Sum(qte_vente *prix_vente*tva)as total_tva. . . . Ensuite : supprimer le composant « dbedit3 » qui représente le champ « règlement » et le remplacer par le composant « dbcombobox1 » de la palette « controlebd » et modifier les propriétés de ce « dbcombobox1 » comme suite : Datasource datasource1 Datafield règlement Items clique sur le petit bouton … et écrire : cheque. à la fin fermer la petite fenêtre.tapez F12 et clique sur le composant dbedit2. Ensuite : clique droit sur la petite fenêtre et clique dans le menu contextuel sur: « ajouter tous les champs ». ligne_vente Where (reference = ref_prod) and (num_vente = :p) Clique sur « p » et choisir dans la propriété datatype : « ftinteger » True Datasource1 Table2 Table3 Table4 Accesbd controlebd Supplement Datasource1 Datasource2 Datasource3 Dbgrid1 Speedbutton1 Bitbtn1 Query1 BDE controlebd dbnavigator Params Active datasource 3Double clique sur le composant table1.62 - . . nom_c Keyfield code_c 4Pour mettre le curseur du clavier automatiquement dans le « dbedit1 » pour faciliter la saisie du numéro de la facture on clique sur le composant « table1 » et dans son inspecteur d’objet double clique à droite de son événement : « afterinsert » on écrit dans sa procédure : dbedit1.Double clique sur son événement « OnKeyDown » et écrire dans sa procédure : If key = vk_return then Dbedit2.setfocus .setfocus .clique sur le composant dbedit1.tapez F12 et clique sur le composant dbcombobox1. Sum (qte_vente*prix_vente*(1+tva)) as TTC from produit. espece.ensuite on peut contrôler la manipulation du clavier par : . . Ensuite : supprimer le composant « dbedit4 » qui représente le champ «code_cli» et le remplacer par le composant « dblookupcombobox1 » (palette «controlebd») et modifier les propriétés de ce «dblookupcombobox1» comme suite : Datasource datasource1 Datafield code_cli Listsource datasource2 Listfield code_c.Double clique sur son événement « OnKeyDown » et écrire dans sa procédure : If key = vk_return then DblookupCombobox1.Double clique sur son événement « OnKeyDown » et écrire dans sa procédure : If key = vk_return then DbCombobox1.bmp Bkclose Commerce Select sum(qte_vente*prix_vente)as HT.setfocus . Ensuite : glisser les champs de la table facture_vente un par vers le haut de la fiche. .setfocus .

on clique sur le petit bouton … de sa propriété « editmask » . Table3. Table4.fieldbyname(‘ref_prod’).asfloat:= Table4. Ensuite : on écrit le nom du champ : « tva » et on choisit le type du champ : « float » et on clique sur Ok .on double clique sur le composant « table1 » .fieldbyname(‘designation’).on clique dans la liste à droite de la fenêtre sur l’élément « date longue1 » et on clique sur Ok . Ensuite : glisser les champs de la requête facture un par un vers le bas de la fiche.fieldbyname(‘qte_vente’). A la fin : on ferme la petite fenêtre. 9pour que la facture affiche son montant ttc en lettres on procède comme suite : On insère un composant « Button1 » (palette standard) et dans sa propriété : « caption » on écrit : conversion.Apprendre Delphi7 par l’exemple 5- Chapitre 2 : Logiciel Gestion Commerciale Pour masquer le format d’affichage de la « date_vente » : .asstring.ascurrency:= Table4.fieldbyname(‘tva’). Ensuite : dans sa propriété « masterfield » on clique sur petit bouton.asinteger :=table1.63 - .fieldbyname(‘numero_v’).fieldbyname(‘tva’).fieldbyname(‘prix_vente’). Ensuite : on écrit le nom du champ : « prix_vente » et on choisit le type du champ : « currency » et on clique sur Ok . Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».parambyname(‘p’). Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».active:=true.ascurrency. Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».asinteger .ascurrency:=Table3.open .asstring:= Table4. et choisir dans sa propriété : mastersource datasource1. à la fin fermer la petite fenêtre.setkey . Ensuite : clique sur le bouton « ajouter » ensuite sur le bouton Ok.asinteger := Table3.gotokey then Begin Table3. et la table détaille « ligne_vente » : On clique sur le composant table3 « ligne_vente ». Ensuite : on insère un composant Label (palette standard) et supprimer le contenu de sa propriété « caption » Ensuite : on double clique sur le composant « Bouton1 » et on écrit dans sa procédure : (Supprimer son begin et end et coller tous le code source suivant) .fieldbyname(‘reference’). Table3. Ensuite : on écrit le nom du champ : « designation » et on choisit le type du champ : « string » et on clique sur Ok . Ensuite : on écrit le nom du champ : « total » et on choisit le type du champ : « currency » et on clique sur Ok . Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».close. Ensuite : on clique droit sur la petite fenêtre et on clique sur « ajouter tous les champs ».fieldbyname(‘prix_vente’). If table4.dans la petite fenêtre on clique sur le champ « date_vente » . End. Ensuite : clique doit sur la petite fenêtre et clique dans le menu contextuel sur : « ajouter tous les champs ». 7on peut renforcer cette fenêtre par les champs calculés comme suite : On double clique sur le composant table3 « ligne_vente ». Table4.fieldbyname(‘designation’). Ensuite : on choisit dans la liste à gauche le champ « num_vente » et à droite le champ « numero_v ». 8on tape F12 pour retourner à la fiche et on double clique sur le composant « query1 ».fieldbyname(‘total’). Query1.fieldbyname(‘prix_vente’).asfloat. Ensuite : on clique sur le composant « table3 » (ligne_vente) et dans son inspecteur d’objet on clique sur l’onglé événement Ensuite : on double clique à droite de l’événement « oncalcfield » et on écrit dans la procédure : Table4.asfloat* Table4.on ferme la petite fenêtre et la date_vente sera masquée par le format « __/__/__ » 6pour faire une liaison maitre-detail entre la table maître« facture_vente ». Table3.ascurrency . // On profite l’occasion pour passer une valeur au paramètre à notre requête « query1 » Query1. Query1.asinteger .

end. . chiffre(p1). dec:=trunc(abc) mod 100. if c=0 then chiffre(p1).end. if c=8 then chaine:=chaine+ ' Huit Cent'. p. chiffre(p1). mille(p). begin c:=p1 div 100. p1:=p1-c*10. procedure chiffre(var p2:integer). if p3=12 then chaine:=chaine+ ' Douze'. p1:=p1-c*10. chiffre(p1). end. chiffre(p1). if p<>0 then begin mille(p). if c=7 then chaine:=chaine+ ' Sept Cent'. {simple} if (0<=nombre) and (nombre<1000) then begin p:=nombre. chiffre(p1). {chaine:=chaine+ ' dinars' +' et'+chaine1+' CTS'. chiffre(p1). if c=5 then begin chaine:=chaine+ ' Cinquante'. IF q=0 THEN chaine:=chaine+ ' Zero CTS' Else chaine:=chaine+ ' CTS' end. end. nombre:=nombre-p*1000. nombre:=nombre-p*1000000000. end. if p<>0 then begin mille(p). if c=3 then begin chaine:=chaine+ ' Trente'. p1:=p1-c*10. if p3=14 then chaine:=chaine+ ' Quatorze'.end. end. c:=p1 div 10. end. decimale(p1). end. if p3=11 then chaine:=chaine+ ' Onze'. end. if c=6 then begin chaine:=chaine+ ' Soixante'. p1:=p1-c*10. if c=8 then begin chaine:=chaine+ ' Quatre Vingt'. if p2=8 then chaine:=chaine+ ' Huit'. if p2=5 then chaine:=chaine+ ' Cinq'. end. if p3=19 then chaine:=chaine+ ' Dix Neuf'. var c:integer. if p2=6 then chaine:=chaine+ ' Six'. if c=4 then begin chaine:=chaine+ ' Quarante'. if c=9 then chaine:=chaine+ ' Neuf Cent'. p1:=p-60.nombre. if p3=13 then chaine:=chaine+ ' Treize'. if c=1 then decimale(p1).end. if p2=7 then chaine:=chaine+ ' Sept'. mille(q). if c=2 then chaine:=chaine+ ' Deux Cent'. n:=query1. if c=4 then chaine:=chaine+ ' Quatre Cent'. if p2=3 then chaine:=chaine+ ' Trois'.Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale var chaine1. if c=9 then begin chaine:=chaine+ ' Quatre Vingt'. end. begin if p2=1 then chaine:=chaine+ ' Un'. if p<>1 then begin mille(p). if c=7 then begin chaine:=chaine+ ' Soixante'. chaine:=chaine+ ' Million'.fieldbyname('ttc'). chaine:=chaine+ ' Mille'. if c=2 then begin chaine:=chaine+ ' Vingt'. if p3=16 then chaine:=chaine+ ' Seize'.end.asfloat. procedure mille(var p1:integer).64 - .end.caption:=chaine.DEC:integer. p1:=p1-80. abc:=int(n*100). {Programme principal} var abc:real. if c=3 then chaine:=chaine+ ' Trois Cent'. {milliards} if nombre>=1000000 then begin p:=nombre div 1000000. if p3=17 then chaine:=chaine+ ' Dix Sept'.end. p1:=p1-c*10. procedure decimale(var p3:integer).} label8. begin if p3=10 then chaine:=chaine+ ' Dix'. end. if p2=4 then chaine:=chaine+ ' Quatre'. nombre:=nombre-p*1000000. if c=6 then chaine:=chaine+ ' Six Cent'. if nombre>=1000000000 then begin p:=nombre div 1000000000.q. decimale(p1). N.n1:real. begin chaine:=' '. if c=1 then chaine:=chaine+ ' Cent'. if p3=18 then chaine:=chaine+ ' Dix Huit'. p1:=p1-c*100. chaine:=chaine+ ' dinars' +' et'. begin q:=dec. end. if p2=9 then chaine:=chaine+ ' Neuf'. {milliers} if nombre>=1000 then begin p:=nombre div 1000. if c=5 then chaine:=chaine+ ' Cinq Cent'.chaine:string. nombre:=trunc(n). if p2=2 then chaine:=chaine+ ' Deux'. if p3=15 then chaine:=chaine+ ' Quinze'. chaine:=chaine+ ' Milliard'. p1:=p1-c*10. end else chaine:=chaine+ 'mille'.

pour supprimer ce champ : . et dans le dossier « c:\commerce\source » nommer l’unité: «etat_facture_vente».Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale 10.le « dbgrid1 » affiche le champ « num_vente » (de la table ligne_vente) qui contient bien sûr le même numéro de la facture_vente actuelle (puisque il y’a une liaison maître_détail entre la table ligne_vente et la table facture_vente par leurs champs communs num_vente et numero_v).table1 Reglement_v client fiche_facture_vente. .table1 Numero_v Date vente fiche_facture_vente. hasdetail true.supprimer le champ « num_vente » et fermer la petite fenêtre. Ensuite : (le menu Delphi): fichier enregistrer.table1 Date_vente reglement fiche_facture_vente. donc ce champ répétera pour tous les enregistrements du « dbgrid1 » le même numéro de facture.clic en haut de la petite fenêtre sur le bouton « ajouter tous les champs » .65 - . (Le champ « num_vente » ne sera pas supprimé de la table « ligne_vente » mais seulement il ne sera pas affiché) 11. Ensuite : on insère dans cette fiche un composant « quickrep1 » de la palette « qreport ». hascolumnheader true. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom: « fiche_etat_facture_vente ». Ensuite : on tape F12 et en haut de l’unité on écrit dans la liste «uses» le nom «facture_vente» et on compile Ctrl+F9 pour assurer la liaison entre la fiche_facture_vente et la fiche_etat_facture_vente. Ensuite : on insère les composants suivants de la palette « qreport » sur les bandes de ce quickrep1 comme suite: bande Titre (agrandir la hauteur de cette bande) Composant qrlabel1 qrlabel2 qrlabel3 qrdbtext1 Qrlabel4 Qrdbtext2 Qrlabel5 Qrdbtext3 Qrlabel6 Qrdbtext4 Propriété caption caption caption dataset datafield caption dataset datafield caption dataset datafield caption dataset datafield valeur société de commerce multiple Facture vente numero fiche_facture_vente. donc on doit supprimer les unités dupliquées si Delphi signal ce problème de répétition après la compilation du logiciel.table2 Nom_c . il vaut mieux alors de ne pas afficher ce dernier dans le « dbgrid1 ».pour préparer l’impression de notre facture_vente on procède comme suite : On insère une nouvelle fiche à notre logiciel par le choix dans le menu Delphi de : fichier nouvelle fiche. hassummary true.double clic sur le « dbgrid1 ». Ensuite : dans l’inspecteur d’objet du quickrep1 on écrit dans la propriété : zoom 70 Ensuite : dans l’inspecteur d’objet du quickrep1 on choisit dans la propriété : dataset « fiche_facture_vente.table3 » Ensuite :choisir dans sa propriété Bands: hastitle true. Nb : par fois Delphi répète quelques unités de la partie uses si on écrit une nouvelle unité dans cette partie.

Ensuite : on ferme la petite fenêtre du « popupmenu » et on clique sur le composant « speedbutton1 » qui représente l’impression et dans son inspecteur d’objet on choisit dans sa propriété « popupmenu » l’élément « popupmenu1 ».table3 Qte_vente fiche_facture_vente.66 - . .caption . Fiche_etat_facture_vente. . . Ensuite : on tape Shift + F12 et on affiche la fiche « fiche_facture_vente » Ensuite : et pour une impression bien présentée de la facture on insère un composant popupmenu (palette standard).table3 tva fiche_facture_vente. .query1 HT TOTAL TVA fiche_facture_vente.query1 TTC Arrêtez la présente facture à la somme de Detail Remarque : On peut utiliser les composants « Qrshape » de la palette « Qreport » pour encadrer les champs des tables (composants qrdbtext ») et leurs entêtes de colonnes (composants « qrlabel ») pour avoir ensuite des tables encadrées dans notre état d’impression.On déplace ces cadres par les touches Ctrl + et on clique sur ces cadres par le bouton droit de la sourie et on clique sur « mettre en arrière plan ». . .Pour bien contrôler la taille des « qrshape » on utilise les touches : Shift + ou les autre touches de flèches. Ensuite : pour programmer le composant popupmenu1 on double clique sur ce dernier et on double clique sur l’élément « previsualiser » et on écrit dans sa procédure : Fiche_etat_facture_vente.table3 reference fiche_facture_vente.on presse sur la touche Shift et par sourie on clique sur tous les « qrshape » de la bande « entête de colonnes » et en fin on lache la touche Shift et on tape les touches Ctrl + C pour copier ces cadres.table3 designation fiche_facture_vente.On clique sur la bande « détail » et on tape Ctrl + V pour coller les cadres dans cette bande.query1 TOTAL_TVA TTC fiche_facture_vente.preview .Le « qrshape » au début cache le « qrlabel » qui va l’encadrer. donc on clique sur chaque « qrshape » par le bouton doit de la sourie et on choisit dans le menu contextuel « mettre en arrière plan ».table3 Prix_vente fiche_facture_vente. Les étapes sont : .Pour bien contrôler la position des « qrshape » on utilise les touches : Ctrl + ou les autre touches de flèches.table3 total HT fiche_facture_vente.insérer dans la bande entête de colonnes des composants « Qrshape » pour chaque « qrlabel » de cette bande pour les encadrer.quickrep1.Apprendre Delphi7 par l’exemple Entête de colonnes Qrlabel7 Qrlabel8 Qrlabel9 Qrlabel910 Qrlabel11 Qrlabel12 Qrdbtext5 Qrdbtext6 Qrdbtext7 Qrdbtext8 Qrdbtext9 Qrdbtext10 Resumé Qrlabel13 (agrandir la hauteur Qrdbtext11 de cette bande) Qrlabel14 Qrdbtext12 Qrlabel15 Qrdbtext13 Qrlabel16 Qrlabel17 caption caption caption caption caption caption dataset datafield dataset datafield dataset datafield dataset datafield dataset datafield dataset datafield caption dataset datafield caption dataset datafield caption dataset datafield caption caption Chapitre 2 : Logiciel Gestion Commerciale Reference Designation Qte vente Prix unite Tva total fiche_facture_vente.caption := label8.qrlabel17. . Ensuite : on double clique sur ce composant et on introduit les deux éléments «previsualiser» et «imprimer» dans leurs propriétés «caption».

fieldbyname(‘qte_stock’).fieldbyname(‘ref_prod’). Remarques : 1.fieldbyname(‘reference’). . Fiche_etat_facture_vente.first .lorsqu’on enregistre les modifications dans notre table1 (facture_vente) par le bouton « enregistrer » du dbnavigator1.gotokey then Begin Table4. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_consultation_achat». Table3. on doit supprimer les quantités_vente des quantité_stock.Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale Ensuit : on tape F12 pour retourner à la fiche et on double clique sur le composant « popupmenu1 » et on double clique sur l’élément « imprimer » et on écrit dans sa procédure : Fiche_etat_facture_vente. On programme cela par le choix du composant table1 et dans la procédure de son événement « afterpost » on écrit : table3. .post. Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements possibles) LA FICHE CONSULTATION ACHATS 1. // préparation de la recherche Table4.asfloat.asinteger := Table3.next. En fin : on enregistre tous le travail par : (le menu Delphi) : fichier tout enregistrer 13.On clique sur cette fiche (éviter de cliquer sur l’un de ses composants). 12.on enregistre notre travail par le menu Delphi : fichier tout enregistrer. If table4. et dans le dossier « c:\commerce\source » nommer l’unité: «consultation_achat» .showmodal .asinteger .Pour que la fiche facture vente se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : . End.caption .fieldbyname(‘qte_stock’).On choisit dans sa propriété : « position poScreenCenter» 2. End.setkey .On tape : Shift + F12 et on clique sur la « fiche_facture_vente » et on clique sur Ok.asfloatTable3.67 - . on recompile par Ctrl + F9 pour faire la liaison aussi entre la fiche_facture_vente et la fiche_etat_facture_vente et on doit cliquer sur oui aussi pour cette demande de confirmation.eof) do begin Table4. while not(table3. choisir dans le menu Delphi : fichier nouvelle fiche.caption := label8.qrlabel17.print . //préparation de la modification Table4.edit.asfloat:=Table4. Table4. Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément facture vente (du sous menu Edition) Ensuite : on écrit dans la procédure : fiche_facture_vente.fieldbyname(‘qte_vente’). Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_facture_vente et on doit cliquer sur oui pour cette demande de confirmation .cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok. Ensuite : (le menu Delphi): fichier enregistrer.quickrep1.

Apprendre Delphi7 par l’exemple 2. Query2. insérer les composants suivants : Palette supplement standard BDE Composant bitbtn label1 edit1 Query1 Propriété kind Caption text databasename Sql Params Active dataset glyph Caption Caption Valeur bkclose numéro facture Chapitre 2 : Logiciel Gestion Commerciale Accéesbd Supplement standard win32 supplement BDE Datasource1 Speedbutton1 label2 label3 datetimepicker1 datetimepicker2 Speedbutton2 Query2 Commerce Select * from facture_achat Where numero_a = :num Clique sur « num » et choisir dans la propriété datatype : « ftinteger » True Query1 (choisir une image) Date début Date fin standard Supplement BDE Accèsbd Standard controlebd BDE Supplement BDE Accesbd controlebd glyph (choisir une image) databasename commerce Sql Select * from facture_achat Where (date_achat >=:debut) and (date_achat <=:fin) Params Clique sur « debut » et choisir dans la propriété datatype : « ftdate » Clique sur « fin » et choisir dans la propriété datatype : « ftdate » Active True label4 Caption Règlement combobox1 text items cheque espece credit Speedbutton3 glyph (choisir une image) Query3 databasename commerce Sql Select * from facture_achat Where reglement_a =:reg Params Clique sur « reg » et choisir dans la propriété datatype : « ftstring » Active True Table1 databasename Commerce tablename Fournisseur Active True Datasource2 dataset Table1 Label1 caption Fournisseur oboxdblookupcomb1 listsource datasource2 listfield code_f . Query1.asdate :=datetimepicker1.asinteger :=strtoint(edit1.params[0]. . Query2.dataset :=Query1 .close . Query2. Datasource1.68 - .dataset :=Query2 .active :=true . Query1.date.date. double clique sur le composant « speedbutton1 » et écrire : Query1.params[1]. 4.active :=true .close .asdate :=datetimepicker2.nom_f keyfield Code_f Query4 databasename Commerce Sql Select * from facture_achat Where code_four =:cod Params Clique sur « cod » et choisir dans la propriété datatype : « ftinteger » Active True Speedbutton4 glyph (choisir une image) Table2 databasename commerce tablename Ligne_achat active true mastersource datasource1 masterfield Clique sur « num_achat » et clique sur « numero_a » et clique sur Ajouter et clique sur Ok datasource3 dataset table2 dbgrid1 datasource datasource1 dbgrid2 datasource datasource3 3. tapez F12 et double clique sur le composant « speedbutton2 » et écrire: Query2.params[0].text). Datasource1.

Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_consultation_vente».Pour que la fiche consultation achat se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : .params[0]. 6.choisir dans le menu Delphi : fichier nouvelle fiche.showmodal .text).69 - .params[0]. Ensuite : (le menu Delphi): fichier enregistrer.text. 7. Remarques : 1. . Query3.asinteger :=strtoint(dblookupcombobox1.Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale 5. cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.close .insérer les composants suivants : Palette supplement standard BDE Composant bitbtn label1 edit1 Query1 Propriété kind Caption text databasename Sql Params Active dataset glyph Caption Caption Valeur bkclose numéro facture Commerce Select * from facture_vente Where numero_v = :num Clique sur « num » et choisir dans la propriété datatype : « ftinteger » True Query1 C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\find.on enregistre notre travail par le menu Delphi : fichier tout enregistrer. Query4.active :=true . Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_consultation_achat et on doit cliquer sur Oui pour cette demande de confirmation.On tape : Shift + F12 et on clique sur la « fiche_consultation_achat » et on clique sur Ok. tapez F12 et double clique sur le composant « speedbutton4 » et écrire: Query4.bmp Date début Date fin Accéesbd Supplement standard win32 Datasource1 Speedbutton1 label2 label3 datetimepicker1 . Datasource1.dataset :=Query4 .close .asstring :=combobox1.active :=true .On clique sur cette fiche (éviter de cliquer sur l’un de ses composants). Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément Achats (du sous menu Consultation) Ensuite : on écrit dans la procédure : fiche_consultation_achat. tapez F12 et double clique sur le composant « speedbutton3 » et écrire: Query3. Query4.On choisit dans sa propriété : « position poScreenCenter» 2. et dans le dossier « c:\commerce\source » nommer l’unité: «consultation_vente» 2. Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles) FICHE CONSULTATION VENTES 1. . Datasource1. Query3.dataset :=Query3 .

9.close . .active :=true . Query1. 10.params[1].asinteger :=strtoint(dblookupcombobox1.params[0].active :=true . Query2.params[0].close .asdate :=datetimepicker2.params[0].close . Query2.dataset :=Query1 .bmp commerce Select * from facture_vente Where reglement_v =:reg Clique sur « reg » et choisir dans la propriété datatype : « ftstring » True Commerce client True Table1 client datasource2 code_c. Datasource1.params[0]. Datasource1. tapez F12 et double clique sur le composant « speedbutton2 » et écrire: Query2.active :=true .bmp commerce Select * from facture_vente Where (date_vente >=:debut) and (date_vente <=:fin) Clique sur « debut » et choisir dans la propriété datatype : « ftdate » Clique sur « fin » et choisir dans la propriété datatype : « ftdate » True Règlement cheque espece credit C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\find. Query3.dataset :=Query2 .text). Query2. Query1.70 - .asdate :=datetimepicker1. Datasource1.nom_c code_c Commerce Select * from facture_vente Where code_cli =:cod Clique sur « cod » et choisir dans la propriété datatype : « ftinteger » True C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\find.dataset :=Query4 .asinteger :=strtoint(edit1.date. Query3.date.Apprendre Delphi7 par l’exemple datetimepicker2 speeddbutton2 Query2 Chapitre 2 : Logiciel Gestion Commerciale supplement BDE glyph databasename Sql Params Active Caption text items standard label4 combobox1 C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\find.close . tapez F12 et double clique sur le composant « speedbutton4 » et écrire: Query4. Query4.active :=true . tapez F12 et double clique sur le composant « speedbutton3 » et écrire: Query3.bmp commerce ligne_vente true datasource1 Clique sur « num_vente » et clique sur « numero_v » et clique sur Ajouter et clique sur Ok table2 cedatasour1 datasource3 Supplement BDE Accèsbd Standard controlebd BDE Supplement BDE glyph databasename Sql Params Active databasename Table1 tablename Active Datasource2 dataset Label1 caption dblokupcombbox1 listesource listefield keyfield Query4 databasename Sql Params Active Speedbutton4 glyph Table2 databasename tablename active mastersource masterfield datasource3 dbgrid1 dbgrid2 dataset datasource datasource Speedbutton3 Query3 AccesBd controlebd 8. double clique sur le composant « speedbutton1 » et écrire : Query1.dataset :=Query3 .text). Query4.text.asstring :=combobox1. Datasource1. 11.

cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.showmodal .71 - .Insérer les composants suivants : Palette BDE Composant Query1 Propriété databasename Sql Active databasename Sql Active kind Valeur commerce Select reglement_a.choisir dans le menu Delphi : fichier nouvelle fiche. . et dans le dossier « c:\commerce\source » nommer l’unité:«statistiques_reglement» 2. count(reglement_v) as nombre from facture_vente group by reglement_v True bkclose atsReglement des ach Query2 supplement win32 bitbtn Pagecontrol1 Clique droit sur ce Caption composant et clique sur « nouvelle page » Clique droit sur ce Caption composant et clique sur « nouvelle page » Reglement des ventes . Ensuite:(le menu Delphi): fichier enregistrer.On clique sur cette fiche (éviter de cliquer sur l’un de ses composants). Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles) FICHE STATISTIQUES_REGLEMENT 1. Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_consultation_vente et on doit cliquer sur Oui pour cette demande de confirmation. Ensuite : double clique sur le « mainmenu1 » et double clique sur son élément Ventes (sous menu Consultation) Ensuite : on écrit dans la procédure : fiche_consultation_vente. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name»le nom:«fiche_statistiques_reglement».On choisit dans sa propriété : « position poScreenCenter» 2.Pour que la fiche consultation vente se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : On tape : Shift + F12 et on clique sur la « fiche_consultation_vente » et on clique sur Ok. .on enregistre notre travail par le menu Delphi : fichier tout enregistrer.Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale 12. count(reglement_a) as nombre from facture_achat group by reglement_a True commerce Select reglement_v. Remarques : 1.

72 - .On enregistre notre travail par le menu Delphi : fichier tout enregistrer. Query2.On choisit dans sa propriété : « position poScreenCenter» 2. .active :=true . Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément Reglements (du sous menu statistiques) Ensuite : on écrit dans la procédure : fiche_statistiques_reglement. . Remarques : 1. .close .Pour que la fiche statistique règlement se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : .On clique sur cette fiche (éviter de cliquer sur l’un de ses composants). Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_statistiques_reglement et on doit cliquer sur Oui pour cette demande de confirmation. Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles) FICHE MOT DE PASSE 1-choisir dans le menu Delphi : fichier nouveau dialogue dialogue de mot de passe. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name» le nom: « fiche_passe». Query2.cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok. Query1.close .active :=true .Apprendre Delphi7 par l’exemple controlebd Chapitre 2 : Logiciel Gestion Commerciale controlebd DBchart1 (Insérer ce composant sur le composant « pagecontrole1 » dans la page « règlement des achats » ) (il faut cliquer sur l’onglés « lement des achatsreg » et cliquer ensuite dans le cadre intérieur de cette page) Et double clique sur ce composant « dbchart1 » Et clique sur l’onglé inférieur « série » Et clique sur le bouton Ajouter Et clique sur le graphe de la forme « sectoriel » Et clique sur le bouton Ok Et clique sur l’onglé supérieur « série » Et clique sur l’onglé « source de données » Et choisir dans la liste l’élément « dataset » Et choisir dans la liste dataset l’élément « query1 » Et choisir dans la liste « libellé » l’élément « règlement » Et choisir dans la liste « sectoriel » l’élément « nombre » A la fin clique sur Fermer DBchart2 (Insérer ce composant sur le composant « pagecontrole1 » dans la page « règlement des ventes ») (il faut cliquer sur l’onglés « règlement des ventes » et cliquer ensuite dans le cadre intérieur de cette page) Et double clique sur ce composant « dbchart2 » Et clique sur l’onglé inférieur « série » Et clique sur le bouton Ajouter Et clique sur le graphe de la forme « sectoriel » Et clique sur le bouton Ok Et clique sur l’onglé supérieur « série » Et clique sur l’onglé « source de données » Et choisir dans la liste l’élément « dataset » Et choisir dans la liste dataset l’élément « query2 » Et choisir dans la liste « libellé » l’élément « règlement » Et choisir dans la liste « sectoriel » l’élément « nombre » A la fin clique sur Fermer Remarque : Pour que la fiche statistiques achats affiche toujours les dernières modifications automatiquement (rafraîchissement automatique des données du query1 et query2) : Clique sur la fiche_statistiques_reglement Dans son inspecteur d’objet double clique à droite de l’événement « onactivate » Ensuite : écrire le code source suivant dans la procédure correspondante : Query1.showmodal . 3.On tape : Shift + F12 et on clique sur la « fiche_statistique_reglement » et on clique sur Ok.

remarques importantes: a. end. et dans le dossier « c:\commerce\source » nommer l’unité : «passe» 2. Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles) FICHE PROTECTION 1.text=table1.Double clique sur le bouton Ok et écrire dans sa procédure : if password.terminate .asstring then fiche_menu.setfocus. donc on doit supprimer les unités dupliquées si Delphi signal ce problème de répétition après la compilation du logiciel. password. 4. dialogs.Pour que la fiche_passe se lance la première lors de chaque éxécution du logiciel on choisit dans le menu Delphi : Projet options dans l’onglés « fiche » dans la liste « fiche principale » choisir : « fiche_passe » Ok b.insérer un composant « table1 » (palette BDE) et manipuler ses propriétés : Databasename commerce table name protection active true.clear. password.Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale Ensuite : (le menu Delphi) : fichier enregistrer. dans la liste uses de l’unité « passe » Nb : par fois Delphi répète quelques unités de la partie uses si on écrit une nouvelle unité dans cette partie. 3. et dans le dossier « c:\commerce\source » nommer l’unité : «protection» 2. Ensuite : (le menu Delphi) : fichier enregistrer.fieldbyname('password').showmodal else begin showmessage('mot de passe incorrecte').choisir dans le menu Delphi : fichier nouvelle fiche.Il faut ajouter les deux unités : messages.Insérer les composants suivants : Palette supplement standard Composant bitbtn1 bitbtn2 label1 edit1 label2 edit2 label3 edit3 BDE table1 Propriété kind kind caption text passwordchar caption text passwordchar caption text passwordchar databasename tablename Active Valeur bkclose bkok eancien mot de pass * nouveau mot de passe * confirmation * commerce protection True .double clique sur le Bouton Annuler et écrire dans sa procédure : application. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name»le nom:« fiche_protection ».73 - .

Apprendre Delphi7 par l’exemple 3.text then Begin Table1.Pour que la fiche protection se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : . Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément protection (du sous menu outils) Ensuite : on écrit dans la procédure : fiche_protection. .double clique sur le composant « BitBtn2 » et écrire dans sa procédure: If edit1. 3. .choisir dans le menu Delphi : fichier nouvelle fiche.edit.On choisit dans sa propriété : « position poScreenCenter» 2. . Lancer l’éxécution par F9 et tester cette fiche.tapez F12 pour revenir à la fiche et Insérer les composants suivants : Palette win3. et dans le dossier « c:\commerce\source » nommer l’unité:« archivage» 2. Ensuite : (le menu Delphi) : fichier enregistrer. Showmessage(‘ la modification du mot de passe est effectuée ’) End Else Showmessage(‘ la confirmation du mot de passe est incorrecte ’) Else Showmessage(‘ l’’ancien mot de passe est incorrecte ’) . FICHE ARCHIVAGE 1.text.bmp lecteur FilterComboBox1 supplement BitBtn1 Speedbutton1 Label1 standard .asstring:=edit2.post.db DirectoryListBox1 DriveComboBox1 driverlist driver driverlist fichier *.asstring then If edit2. Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_protection et on doit cliquer sur Oui pour cette demande de confirmation.showmodal .fieldbyname(‘password’). Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name» le nom:« fiche_archivage ».db bkclose archiver C:\Program Files\Fichiers communs\Borland shared\Images\Buttons\floppy.1 Composant FileListBox1 Propriété name Mask name name Dirlist Filelist filter kind caption glyph caption Valeur fichier *.fieldbyname(‘password’).On tape : Shift + F12 et on clique sur la « fiche_protection » et on clique sur Ok. Table1.text = table1.cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).on enregistre notre travail par le menu Delphi : fichier tout enregistrer.74 - .tapez F12 et dans la liste uses de l’unité archivage Il faut ajouter l’unité : ShellAPI.text = edit3. Chapitre 2 : Logiciel Gestion Commerciale 4. Remarques : 1. Table1.

aussi. pTo := PChar(ToFld+#0). with fos do begin wFunc := FO_COPY.showmodal . Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_archivage et on doit cliquer sur Oui pour cette demande de confirmation. var fos: TSHFileopStruct.On choisit dans sa propriété : « position poScreenCenter» 2.on enregistre notre travail par le menu Delphi : fichier tout enregistrer. Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles) Cette fiche necessite la création d'un dossier dans disque dur (nommé par exemple : archive2007) qui sera le dossier ou on va archiver notre base de données. . 6. driverlist. Remarques : 1.Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale 4. . . ToFld: string): boolean. 5. SizeOf(fos).On clique sur cette fiche (éviter de cliquer sur l’un de ses composants). fFlags := FOF_SILENT or FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR. begin FillChar(fos. 7. end. pFrom := PChar(FromFld+#0).Directory) then ShowMessage(‘Archivage effectué avec succès') else ShowMessage('Archivage non effectué'). Result := ShFileOperation(fos)=0.cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.Pour que la fiche archivage se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : .pour avoir un bon interface on doit cacher les deux composants «FileListBox1» et «FilterComboBox1»comme suite: .clique par le bouton droit de la sourie sur le composant : « FileListBox1 » nommé « fichier » et choisir dans le menu contextuel : « mettre en arrière plan » et mettre ce composant au-dessous du « DirectoryListBox1 » (driverlist).0).75 - .On tape : Shift + F12 et on clique sur la « fiche_archivage » et on clique sur Ok. Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément archivage (du sous menu outils) Ensuite : on écrit dans la procédure : fiche_archivage. clique par le bouton droit de la sourie sur le composant : « FilterComboBox1» et choisir dans le menu contextuel : « mettre en arrière plan » et mettre ce composant au-dessous du « DirectoryListBox1 » (driverlist). end. FICHE INVENTAIRE .Double clique sur le composant speedbutton1 et écrire dans sa procédure : if CopyFolder('c:\commerce\base'.il faut inserer avant la procedure BitBtn4Click la fonction suivante : function CopyFolder(FromFld.

4.post.asinteger:=table3.next. Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».eof)do begin table2.asfloat .Insérer les composants suivants : Palette supplement Composant bitbtn1 speedbutton1 speedbutton2 BDE Table1 Propriété kind caption glyph caption glyph Databasename Tablename Active Dataset Datasource Databasename Tablename Active Master Source Master Field Dataset Datasource Databasename Tablename Active Valeur bkclose Preparer (choisissez une image adéquate) ajuster (choisissez une image adéquate) Commerce inventaire True Table1 Dataource1 Commerce Ligne_inventaire True datasource1 Clique sur « num_inv » et clique sur « numero_i »et clique sur Ajouter et clique sur Ok Table2 Dataource2 Commerce produit True Accesbd Controlebd BDE Datasource1 Dbgrid1 Table2 Accesbd Controlebd BDE Datasource2 Dbgrid2 Table3 3. end. Ensuite : (le menu Delphi) : fichier enregistrer.fieldbyname(‘ecart’). Ensuite : on clique sur le composant table2 et dans son inspecteur d’objet on clique sur l’onglés « événements ». trouver:=false.append. et dans le dossier « c:\commerce\source » nommer l’unité:« inventaire» 2. Ensuite : on double clique à droite de l’événement « oncalcfields » et on écrit dans la procédure : table2. while not(table3. .asfloat:=table3.FieldByName('reference’).next. table2. Ensuite : on écrit le nom du champ : « écart » et on choisit le type du champ : « float » et on clique sur Ok.asfloat.fieldbyname('ref_prod').// on copie les produits de la table produit vers la table ligne_invertaire.asinteger=table3. begin table2.FieldByName('qte_theorique').asfloat – table2.asinteger.choisir dans le menu Delphi : fichier nouvelle fiche. table2. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name» le nom:« fiche_inventaire». end.FieldByName(‘ref_prod'). end.insérer le champ calculé « écart » qui représente la différence entre le stock théorique et le stock réel comme suite : On double clique sur le composant table2 « ligne_inventaire » Ensuite : on clique droit sur la petite fenêtre et on clique sur « ajouter tous les champs ».on prépare l’inventaire par un double clic sur le speedbutton1 « preparer » et on écrit dans sa procédure : (Supprimer le begin et end de la procédure et coller tous le code source suivant) var trouver : boolean.fieldbyname('reference').fieldbyname(‘qte_theorique’). end.first.asinteger then trouver:=true.fieldbyname(‘qte_reelle’). table2. table2.76 - . while not(table2.FieldByName('qte_stock').first.asfloat := table2.Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale 1. table3. if trouver then showmessage('inventaire deja preparé') else begin table3.eof) do begin if table2.

asfloat:=table2.on enregistre notre travail par le menu Delphi : fichier tout enregistrer. et dans le dossier « c:\commerce\source » nommer l’unité:« Cloture» 2.bmp . while not(table3. table2.showmodal .eof)do begin table3. table3.next. table2.77 - .On choisit dans sa propriété : « position poScreenCenter» 2.cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok. end.bmp Vider Table Ligne Achat C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\trash.next. on ajuste le stock sur ordinateur (la quantite_stock sera donc la quantité réelle) par un double clic sur le speedbutton2 « ajuster » et on écrit dans sa procédure : table3. .FieldByName('qte_reelle'). Remarques : 1.asfloat. . Ensuite : (le menu Delphi) : fichier enregistrer.Pour que la fiche inventaire se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : . Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_inventaire et on doit cliquer sur Oui pour cette demande de confirmation.On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale 5après avoir saisie les qte_reelle de chaque produit. table3. table3.bmp Vider Table Facture Vente C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\trash. En fin : on enregistre tous le travail par : (le menu Delphi) : fichier tout enregistrer 6.first.refresh.On tape : Shift + F12 et on clique sur la « fiche_inventaire » et on clique sur Ok.FieldByName('qte_stock').Insérer les composants suivants : Palette supplement Composant speedbutton1 speedbutton2 speedbutton3 speedbutton4 Propriété caption glyph caption glyph caption glyph caption glyph Valeur Vider Table Facture Achat C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\trash. table3.post. Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément inventaire (du sous menu outils) Ensuite : on écrit dans la procédure : fiche_inventaire.choisir dans le menu Delphi : fichier nouvelle fiche.first.edit. Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements possibles) FICHE CLOTURE 1. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name» le nom:« fiche_Cloture».bmp Vider Table Ligne Vente C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\trash.

.eof) do table1. showmessage('la table ligne inventaire est vidée').78 - . En fin : on enregistre tous le travail par : (le menu Delphi) : fichier tout enregistrer 9. Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément Cloture (du sous menu outils) .Tapez F12 pour retourner à la fiche. showmessage('la table facture vente est vidée').Tapez F12 pour retourner à la fiche.Tapez F12 pour retourner à la fiche. .Tapez F12 pour retourner à la fiche. 8. .eof) do Table5. .bmp bkclose Commerce Facture_achat True Commerce Ligne_achat True Commerce Facture_vente True Commerce Ligne_vente True Commerce Inventaire True Commerce ligne_inventaire True BDE Table2 Table3 Table4 Table5 Table6 3.delete . 7.eof) do Table2.double clique sur le « speedbutton4 » et écrire dans sa procédure : While not (table4.Tapez F12 pour retourner à la fiche.Tapez F12 pour retourner à la fiche.delete . showmessage('la table ligne achat est vidée').double clique sur le « speedbutton1 » et écrire dans sa procédure : While not (table1.delete .eof) do Table4. showmessage('la table inventaire est vidée'). .eof) do Table6. 6.delete .double clique sur le « speedbutton3 » et écrire dans sa procédure : While not (table3. showmessage('la table facture achat est vidée').double clique sur le « speedbutton6 » et écrire dans sa procédure : While not (table6.eof) do Table3.cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok. showmessage('la table ligne vente est vidée'). 5.double clique sur le « speedbutton5 » et écrire dans sa procédure : While not (table5. 4.double clique sur le « speedbutton2 » et écrire dans sa procédure : While not (table2.delete .delete . .Apprendre Delphi7 par l’exemple speedbutton5 speedbutton6 Bitbtn1 Table1 caption glyph caption glyph kind Databasename Tablename Active Databasename Tablename Active Databasename Tablename Active Databasename Tablename Active Databasename Tablename Active Databasename Tablename Active Chapitre 2 : Logiciel Gestion Commerciale Vider Table Inventaire C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\trash.bmp Vider Table Ligne Inventaire C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\trash.

On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok. L’image de Logo : 1. .79 - .pour que l’image s’agrandie si elle a une taille plus petite que la surface de son cadre on modifie sa propriété : Stretch true. (Cette fiche est la carte visite du logiciel). Remarques : 1. 2. Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_apropos et on doit cliquer sur oui pour cette demande de confirmation. 2. 4. Ensuite : (le menu Delphi): fichier enregistrer.Apprendre Delphi7 par l’exemple Chapitre 2 : Logiciel Gestion Commerciale Ensuite : on écrit dans la procédure : fiche_cloture. (Delphi propose quelques images dans : « C:\Program Files\Fichiers communs\Borland Shared\Images\ Splash\256Color ». Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément « a propos » (du sous menu « ? ») Ensuite : on écrit dans la procédure : fiche_apropos.Pour que la fiche cloture se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : . . Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_cloture et on doit cliquer sur Oui pour cette demande de confirmation.dans la propriété picture du composant « image1 » on clique sur le bouton Charger et chercher l’image voulue.en fin clique sur Ouvrir ensuite sur Ok 3.On tape : Shift + F12 et on clique sur la « fiche_cloture » et on clique sur Ok.pour que l’image occupe toute la surface de son cadre on modifie sa propriété : Autosize true.showmodal .showmodal .On choisit dans sa propriété : « position poScreenCenter» 2.on enregistre notre travail par le menu Delphi : fichier tout enregistrer. Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements possibles) FICHE A PROPOS 1on peut insérer cette fiche par le menu Delphi : Fichier nouveau fiche boite a propos Ok Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name»le nom:«fiche_apropos». et dans le dossier « c:\commerce\source » nommer l’unité:«apropos» Ensuite : on écrit le texte qu’on veut dans les labels et modifier la couleur et la taille des labels par leurs propriétés « FONT ». .

.80 - .

n 1.créer dans le dossier scolarite 2 autres dossiers nommés : base (pour stocker la BD) et source (pour stocker le code source) 3. 4.1 Matiere 1.n 1.n 1. 2.n Trimestre Professeur 1.créer dans le lecteur C du disque dur un nouveau dossier nommé : scolarite (pour stocker le logiciel).Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité PREPARATION DU LOGICIEL 1. 5.n Resultat Devoir Composition Observation Contient 1.1 Avoir1 1.n .81 - .lancer le BDE de Delphi par : (le menu Delphi) outils module base de données.1 Avoir2 1.1 Enseigne 1.n 1.créer dans cet alias les tables suivantes : N’oubliez pas de les enregistrer dans l’alias « scolarite » Table: etudiant Champ Type Taille index Code_e i * Nom_e A 20 Prenom_e A 20 Date_naissance D Lieu A 15 Adresse A 30 Doublant A 3 Photo G Ref_classe i Table : professeur Champ Type Taille index Code_p i * a 20 Nom_p Prenom_p a 20 Diplome a 30 Ref_Matiere i Table : matiere Champ Reference_m Designation_m Coefficient Ref_specialite Table : classe Champ Ref_classe Designation_c Ref_Specialite Table : specialite Champ Ref_Specialite Designation_s Table : resultat Champ Code_etudiant Ref_matiere Trimestre Devoir Composition Observation Type Taille i a 20 i index * Type Taille index i * i * i * n n a 15 Type Taille i a 20 i Type Taille i a 20 index * Table protection Champ Type Taille Password A 20 index * Index * Etudiant Classe Specialite 1.créer un nouveau alias pour notre logiciel par : (le menu BDE) outils gestionnaire d’alias Ensuite : clique sur l’option : « afficher seulement les alias publics » Ensuite : clique sur le bouton : Nouveau Ensuite : écrire dans : Alias de la base : scolarite Chemin d’accès : c:\scolarite\base Ensuite clique sur Ok En fin clique sur Oui pour que cet alias soit un alias public.

…) Ensuite : insérer un composant imagelist (palette win32 ) Ensuite : double clique sur ce composant et clique sur le bouton Ajouter pour choisir la gamme des images de notre logiciel dans le chemin : « C:\program files\fichiers communs\borland shared\images\button » Ensuite : après le chois de 13 images adéquates aux 13 boutons on clique sur Ok Ensuite : on clique sur le « mainmenu1 » et dans son inspecteur d’objet : propriété images imagelist1 Ensuite : on double clique sur le « mainmenu1 » et chaque élément de ce menu sera lié avec une image adéquate par sa propriété : « imageindex » Enfin: on ferme la petite fenêtre du menu et on clique sur le composant « toolbar1 » et dans sa propriété : Images imagelist1 (Chaque bouton du «toolbar1» peut avoir une image adéquate par le choix de cette image dans la propriété « imageindex » de ce bouton). Et 6 séparateurs pour les grands éléments du menu (fichier.Apprendre Delphi7 par l’exemple FICHE MENU Chapitre 3 : Logiciel gestion scolarité 1. Ensuite : clique droit sur ce composant et choisir « nouveau bouton » ou « nouveau séparateur » Ensuite : répéter le clic droit pour insérer 13 boutons qui représentent les éléments du menu principal du logiciel. Clique dans le menu Delphi sur: fichier enregistrer sous.on insère un composant timer (palette systeme) et sa propriété interval = 10 . et nommer le projet : scolarite (dans c:\scolarite\source) 2. consultation. ensuite et pour voir cette éxplication on choisit dans sa propriété : showHint true Remarque : Pour faire défiler le nom du logiciel dans cette fiche : 1. édition.82 - . 3.insérer un composant ToolBar (palette win32 ).Dans l’environnement Delphi choisir dans le menu : Fichier nouvelle application. et dans le dossier «c:\scolarite\source» nommer l’unité : «menu».pour expliquer le rôle de chaque bouton on clique sur ce dernier on écrit dans sa propriété : « Hint » l’éxplication adéquate. Ensuite : insérer dans la fiche de ce nouveau projet (nouveau logiciel) un composant « mainmenu » Ensuite : double clique sur ce composant et insérer le menu principal suivant : Fichier étudiant professeur spécialité matière quitter Edition Bulletin Consultation Étudiants États Statistiques scolarité Outils Archivage Protection Cloture ? A propos impressions Chaque fiche (ainsi que son unité) dans le logiciel doit être nommée par un nom significatif. Clique dans le menu Delphi sur: fichier enregistrer le projet sous. pour notre fiche actuelle (le menu général du projet) on procède comme suite : Cliquer sur cette fiche (éviter le composant mainmenu1) et dans son inspecteur d’objet écrire dans la propriété : name fiche_menu.

le menu : fichier quitter. 4. L’image de l’arrière plan : 1.mbno].Pour que la fiche menu occupe tous l’éspace de l’écran lors du lancement de l‘éxécution du logiciel : .[mbyes. Programmation du sous menu « QUITTER » On double clique sur le composant « mainmenu1 » et double clique sur son élément quitter (du sous menu fichier).En cliquant sur la case fermer en haut et à droite de la fenêtre.On clique sur cette fiche_menu (éviter de cliquer sur l’un de ses composants). Résultat: Cette technique assure l’affichage de la fenêtre de confirmation de sortie du logiciel pour n’importe quel type de tentative de fermeture du logiciel : .left > -250 then label1.mtconfirmation. . 3.left:= label1. (Exemple du chemin de l’image : C:\Program Files\Fichiers communs\Borland Shared\Images\Splash\256Color) 3. .pour que l’image occupe toute la surface de son cadre on modifie sa propriété : Autosize true.on insère un composant Label1 propriété :caption = LOGICIEL GESTION SCOLARITE propriété : font (essayez de bien traiter le texte).left-1 else label1.On enregistre notre travail par le menu Delphi : fichier tout enregistrer.On choisit dans sa propriété : « Window state wsmaximized » 5. Aussi modifier sa propriété : align alClient. 2.Choisir dans le menu Delphi : fichier nouvelle fiche.dans la propriété Picture sur ce composant « image1 » on clique sur le bouton Charger et chercher l’image voulue. 5. Ensuite : on écrit dans la procédure : close. Ensuite : clique sur la fiche_menu et double clique à droite de son événement « onclosequery » et écrire dans sa procédure : if messagedlg('voulez vous quitter le logiciel?'.on double clique sur le timer et on écrit : if label1. application.Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité 2.Par clavier en utilisant les touches : Alt + F4 .terminate.insérer un composant « image1 » de la palette « supplément ».pour que l’image s’agrandie si elle à une taille plus petite que la surface de son cadre on modifie sa propriété : Stretch true.en fin clique sur Ouvrir ensuite sur Ok 4. .83 - . end else canclose:=false.0)=mryes then begin canclose:=true. // Les intervals d’affichage du label1 peuvent varier selon la taille d’écriture (pas sûrement entre -250 et 700). Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_etudiant ».left :=700 . LA FICHE ETUDIANT 1.

84 - .insérer de la palette « dialogues » un composant « OpenPictureDialog1». next.Double clique sur son événement « OnKeyDown » et écrire dans sa procédure : If key = vk_return then Dbedit2.setfocus .glisser les champs un par un dans la fiche dans l’ordre de haut en bas (on peut les sélectionner tous et les glisser en même temps. . .Apprendre Delphi7 par l’exemple Ensuite : choisir dans le menu Delphi : fichier « etudiant » Chapitre 3 : Logiciel gestion scolarité enregistrer.filename). mettre visible= true. table1.0)=mryes then table1. Ensuite on peut contrôler la manipulation du clavier et calculer l’age de l’etudiant par : .mtconfirmation.Insérer de la palette « supplément » un composant « speedbutton » et choisir dans sa propriété « glyph » l’image : C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\mailpict. Ensuite : Choisir dans sa propriété : datasource datasource1.setfocus . 13Pour insérer les images des étudiants dans le champ « Photo » de la table1 (table etudiant) à partir d’un fichier image stocké dans le disque dur (généralement on doit scanner les images des étudiants au paravant) on procède comme suite : .Double clique sur ce « speedbutton » et écrire dans sa procédure : OpenPictureDialog1.[mbyes.loadfromfile(OpenPictureDialog1. 9tapez F12 et double clique sur le composant « speedbutton3 » (Modifier) et écrire dans sa procédure : table1. dbedit1.append = table1.post . 12Insérer en haut de cette page un composant « DbNavigateur1 » de la palette « ControleBD ». et dans le dossier « c:\scolarite\source » nommer l’unité : 2. 14Pour mettre le curseur du clavier automatiquement dans le « dbedit1 » pour faciliter la saisie du code de l’étudiant on clique sur le composant « table1 » et dans son inspecteur d’objet double clique à droite de son événement : « afterinsert » on écrit dans sa procédure : dbedit1.edit .double clique sur le composant table1 et clique droit sur la petite fenêtre et choisir dans la liste « ajouter tous les champs » 5.edit .tapez F12 et clique sur le composant dbedit2. Ensuite : choisir dans sa propriété VisibleButtons les boutons first.cancel . prior. last.mbno].setfocus .setfocus .picture. table1.Insérer de la palette win32 le composant Pagecontrol1 Clique droit sur ce composant et clique sur « nouvelle page » et écrire dans sa propriété caption « MAJ » Clique droit sur ce composant et clique sur « nouvelle page » et écrire dans sa propriété caption « Consultation » Clique droit sur ce composant et clique sur « nouvelle page » et écrire dans sa propriété caption « Statistiques » 3. .last + table1.append .clique sur le composant dbedit1. refresh .bmp . dbimage1.execute. // table1.insert c’est insérer un nouveau enregistrement en fin de la table. 10tapez F12 et double clique sur le composant « speedbutton4 » (Enregistrer) et écrire dans sa procédure : table1.Double clique sur son événement « OnKeyDown » et écrire dans sa procédure : .delete .clique sur l’onglés « MAJ » du composant « pagecontrol1 » et insérer dans son cadre intérieur les composants suivants : Palette BDE Composant Table1 Propriété Databasename Tablename Active Valeur scolarite etudiant True 4. c’est plus professionnel) 6. . .edit . 8tapez F12 et double clique sur le composant « speedbutton2 » (Supprimer) et écrire dans sa procédure : if messagedlg(‘ voulez vous supprimer cet enregistrement’ . 11tapez F12 et double clique sur le composant « speedbutton5 » (Annuler) et écrire dans sa procédure : table1.insérer un composant label9 à droite du «dbedit4» et supprimer le texte de sa propriété « caption».Insérer de la palette Supplément 5 composants « Speedbutton » et écrire dans la propriété de chacun respectivement : « Ajouter » « Supprimer » « Modifier » « Engersitrer » « Annuler » 7double clique sur le « speedbutton1 » (ajouter) et écrire dans sa procédure : table1. dbedit1.

Choisir dans la liste « alias ou répertoire » l’alias « scolarite ».setfocus .setfocus . Ensuite : pour programmer la prévisualisation de notre liste on double clique sur le bouton « previsualiser » et on écrit dans sa procédure : fiche_etat_etudiant. Label9.bmp Bkclose 16.Ensuite : on clique sur cette nouvelle fiche en évitant le clic sur le composant « quickrep1 » et dans sa propriété « name » on donne le nom « fiche_etat_etudiant» à cette fiche. et dans le dossier « c:\scolarite\source » nommer l’unité : « etat_etudiant » 18.caption:=inttostr(age)+’ ans’.asdatetime)/365). .Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité If key = vk_return then Dbedit3.post.setfocus . End.On tape Shift+F12 pour afficher la liste des fiches et on choisit la fiche « fiche_etudiant» et on clique sur Ok. . .fieldbyname(‘date_naissance’).tapez F12 et clique sur sur le composant Dbedit6. begin If key = vk_return then Begin Table1.edit. 15clique sur l’onglés « Consultation » du composant « pagecontrol1 » et insérer dans son cadre intérieur les composants suivants : Palette controlebd Supplément Composant Dbgrid1 Speedbutton6 Speedbutton7 Bitbtn1 Propriété Datasource Caption Glyph Caption Glyph Kind valeur Datasource1 Previsualiser C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer. Age:=trunc((date-table1.quickrep1. Table1.bmp Imprimer C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer.tapez F12 et clique sur sur le composant Dbcombobox1.Double clique sur son événement « OnKeyDown » et écrire dans sa procédure : If key = vk_return then Dbcombobox1. Ensuite : choisir dans le menu Delphi : fichier enregistrer. .tapez F12 et clique sur sur le composant Dbedit3.preview . . .85 - . On clique sur le bouton >> pour faire passer tous les champs à droite (pour les imprimer tous).Double clique sur son événement « OnKeyDown » et écrire dans sa procédure : If key = vk_return then Dbedit4. .tapez F12 et clique sur sur le composant Dbedit4.setfocus . . . . If age >60 then Showmessage(‘étudiant retrété’).Double clique sur son événement « OnKeyDown » et écrire dans sa procédure : (Supprimer le begin et end de la procédure et coller tous le code source suivant) var age : integer . Dans l’assistant qui s’affiche on clique sur le bouton lancer l’expert.setfocus .setfocus . If age <17 then Showmessage(‘étudiant mineur’). End. . Ensuite clique sur le bouton Terminer 17.tapez F12 et clique sur le composant Dbedit5. Dbedit5.Double clique sur son événement « OnKeyDown » et écrire dans sa procédure : If key = vk_return then Dbedit6. On choisit dans la liste « nom de table » la table à imprimer (etudiant).Pour imprimer la liste des étudiants on procède comme suite : Dans le menu Delphi on choisit : fichier nouveau Dans la boite de dialogue qui s’affiche on choisit l’onglet « affaires » et dans ce dernier on choisit l’icône « expert quick report » et clique sur le bouton Ok.Double clique sur son événement « OnKeyDown » et écrire dans sa procédure : If key = vk_return then Dbedit8.

table1. on clique sur le bouton OK et on propose un nom symbolique à cet index secondaire (c1 pour le champ code_e. end else begin table1.active := true . If column.index = 6 then Table1.text + ‘*’ + #39 .close .On tape la touche F12 (retour à la fiche). Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_etudiant et la fiche_etat_etudiant et on doit cliquer sur Oui pour cette demande de confirmation. Ensuite : dans son inspecteur d’objet on clique sur l’onglés « événements » Ensuite : on double clique à droite de l’événement « ontitleclick » et on introduit le code source suivant : If column.indexname :=’c7’ .indexname :=’c6’ .indexname :=’c2’ . Ensuite : on lance le BDE Delphi par : (le menu Delphi) : outils module base de données.index = 0 then Table1.index = 1 then Table1.filter :=’[Nom_e]=‘ + #39 + edit1.Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité Ensuit : on tape F12 pour retourner à la fiche et pour programmer l’impression de notre liste on double clique sur le bouton « imprimer » et on écrit dans sa procédure : fiche_etat_etudiant. donc sa propriété : active false. If column.text <> ‘’ then begin table1.Pour faire le filtrage on double clique sur le composant edit1 et on écrit dans la procédure (onchange): if edit1.On ajoute aussi les options du filtrage et du trie dans cette fiche par l’insertion des composants suivants (toujours dans l’onglés consultation) : Palette Standard Composant Label1 Edit1 Propriété Caption Text valeur Filtrage 8.index = 3 then Table1. table1.indexname :=’c1’ . Ensuite : on ouvre la table par : (le menu) fichier ouvrir table et on choisit l’alias « scolarite » et la table « etudiant ». If column.active := true . table1. Ensuite : on choisit dans la liste des choix « propriétés de la table » l’option « index secondaires » Ensuite : on clique pour chaque champ sur le bouton Définir et on fait passer ce champ à droite.quickrep1. table1.index = 2 then Table1. If column.index = 7 then Table1. Remarque importante : Le trie et le filtrage dans une table ne réussissent que si on a défini des index secondaires sur chaque champ trié ou filtré. If column.close .indexname :=’c5’ . Ensuite : on clique dans le menu du BDE sur : table restructurer. If column.indexname :=’c4’ .86 - . 16.indexname :=’c3’ .index = 4 then Table1.index = 5 then Table1. c2 pour le champ nom_e. end .) . Pour insérer des index secondaires dans les champs de la table etudiant il faut que cette table ne soit pas en cours d’utilisation.filtered := false . 17.indexname :=’c8’ . If column. table1.…etc. et pour faire le trie de la table etudiant : clique sur le composant dbgrid1.print .filtered :=true .

Ensuite : on clique sur le bouton enregistrer et on retourne à l’environnement Delphi. Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément etudiant (du sous menu fichier) Ensuite : on écrit dans la procédure : fiche_etudiant.clique sur l’onglés « Statistiques » du composant « pagecontrol1 » et insérer dans son cadre intérieur les composants suivants : Palette BDE Valeur scolarite Select Doublant.On tape : Shift + F12 et on clique sur la « fiche_etudiant » et on clique sur Ok. . count(Doublant) as nombre from etudiant group by Doublant Active True DBchart1 (Insérer ce composant sur le composant « pagecontrole1 » dans la page « statistiques » ) Et double clique sur ce composant « dbchart1 » Et clique sur l’onglé inférieur « série » Et clique sur le bouton Ajouter Et clique sur le graphe de la forme « sectoriel » Et clique sur le bouton Ok Et clique sur l’onglé supérieur « série » Et clique sur l’onglé « source de données » Et choisir dans la liste l’élément « dataset » Et choisir dans la liste dataset l’élément « query1 » Et choisir dans la liste « libellé » l’élément « doublant » Et choisir dans la liste « sectoriel » l’élément « nombre » A la fin clique sur Fermer Composant Query1 Propriété databasename Sql controlebd Remarque : Pour que les statistiques affichent toujours les dernières modifications automatiquement (rafraîchissement automatique des données du query1) : Clique sur le composant table1 et Dans son inspecteur d’objet double clique à droite de son événement « afterpost » (cet événement se déclanche automatiquement si on enregistre des données sur notre table1). Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements possibles) FICHE MATIERE .On clique sur cette fiche (éviter de cliquer sur l’un de ses composants). 18.active :=true .On choisit dans sa propriété : « position poScreenCenter» 2. Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_etudiant et on doit cliquer sur oui pour cette demande de confirmation. .On enregistre notre travail par le menu Delphi : fichier tout enregistrer.close .showmodal . Ensuite : écrire le code source suivant dans la procédure correspondante : Query1.cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok. Remarques : 1.Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité Remarque : le champ photo ne peut pas avoir un index secondaire puisque c’est un champ de type graphique (Un champ de type graphique ne peut être utilisé dans une recherche ou un trie ou un filtrage). 19.Pour que la fiche_etudiant se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : . Enfin : on réactive le composant table1 par sa propriété : active true. Query1.87 - .

mettre visible= true.bmp Imprimer C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer. prior. refresh . Dans la boite de dialogue qui s’affiche on choisit l’onglet « affaires » et dans ce dernier on choisit l’icône « expert quick report » et clique sur le bouton Ok. c’est plus professionnel) 6Insérer de la palette Supplément 5 composants « Speedbutton » et écrire dans la propriété de chacun respectivement : « Ajouter » « Supprimer » « Modifier » « Engersitrer » « Annuler » 7double clique sur le « speedbutton1 » (ajouter) et écrire dans sa procédure : table1. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_matiere ».88 - . Ensuite : choisir dans sa propriété VisibleButtons les boutons first. et dans le dossier «c:\scolarite\source» nommer l’unité: «matiere» 2Insérer de la palette win32 le composant Pagecontrol1 Clique droit sur ce composant et clique sur « nouvelle page » et écrire dans sa propriété caption « MAJ » Clique droit sur ce composant et clique sur « nouvelle page » et écrire dans sa propriété caption « Consultation » 3Clique sur l’onglés « MAJ » du composant « pagecontrol1 » et insérer dans son cadre intérieur les composants suivants : Palette BDE Composant Table1 Propriété Databasename Tablename Active Valeur Scolarite matiere True 4double clique sur le composant table1 et clique droit sur la petite fenêtre et choisir dans la liste « ajouter tous les champs » 5glisser les champs un par un dans la fiche dans l’ordre de haut en bas (on peut les sélectionner tous et les glisser en même temps.0)=mryes then table1.append . Choisir dans la liste « alias ou répertoire » l’alias « scolarite ».setfocus . et dans le dossier « c:\scolarite\source » nommer l’unité : « etat_matiere » .insert c’est insérer un nouveau enregistrement en fin de la table. dbedit1. Ensuite : choisir dans le menu Delphi : fichier enregistrer. table1.last + table1.append = table1.mtconfirmation. 9taper F12 et double clique sur le composant « speedbutton3 » (Modifier) et écrire dans sa procédure : table1. 12Insérer en haut de cette page un composant « DbNavigateur1 » de la palette « ControleBD ».setfocus . Ensuite clique sur le bouton Terminer 15Ensuite : on clique sur cette nouvelle fiche en évitant le clic sur le composant « quickrep1 » et dans sa propriété « name » on donne le nom « fiche_etat_matiere» à cette fiche. dbedit1.edit . 10taper F12 et double clique sur le composant « speedbutton4 » (Enregistrer) et écrire dans sa procédure : table1. 11taper F12 et double clique sur le composant « speedbutton5 » (Annuler) et écrire dans sa procédure : table1.post .edit . 13Clique sur l’onglés « Consultation » du composant « pagecontrol1 » et insérer dans son cadre intérieur les composants suivants : Palette controlebd Supplement Composant Dbgrid1 Speedbutton6 Speedbutton7 Bitbtn1 Propriété Datasource Caption Glyph Caption Glyph Kind valeur Datasource1 Previsualiser C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer. table1. 8taper F12 et double clique sur le composant « speedbutton2 » (Supprimer) et écrire dans sa procédure : if messagedlg(‘ voulez vous supprimer cet enregistrement’ . Dans l’assistant qui s’affiche on clique sur le bouton lancer l’expert. next.edit .Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité 1choisir dans le menu Delphi : fichier nouvelle fiche. On choisit dans la liste « nom de table » la table à imprimer (matiere).[mbyes.cancel . Ensuite : choisir dans le menu Delphi : fichier enregistrer. last. Ensuite : Choisir dans sa propriété : datasource datasource1.mbno].delete .bmp Bkclose 14- Pour imprimer la liste des matières on procède comme suite : Dans le menu Delphi on choisit : fichier nouveau. On clique sur le bouton >> pour faire passer tous les champs à droite (pour les imprimer tous). // table1.

end .showmodal . Ensuite : on choisit dans la liste des choix « propriétés de la table » l’option « index secondaires » Ensuite : on clique pour chaque champ sur le bouton Définir et on fait passer ce champ à droite.preview . table1. 20Cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok. c2 pour le champ designation_m.89 - . Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_matiere et la fiche_etat_matiere et on doit cliquer sur Oui pour cette demande de confirmation.active := true .text + ‘*’ + #39 . Ensuit : on tape F12 pour retourner à la fiche et pour programmer l’impression de notre liste on double clique sur le bouton « imprimer » et on écrit dans sa procédure : fiche_etat_matiere.index = 1 then Table1.index = 2 then Table1.filtered := false . Ensuite : on clique dans le menu du BDE sur : table restructurer. Ensuite : dans son inspecteur d’objet on clique sur l’onglés « événements » Ensuite : on double clique à droite de l’événement « ontitleclick » et on introduit le code suivant : If column.filter :=’[designation_m]=‘ + #39 + edit1. . If column. Ensuite : on lance le BDE Delphi par : (le menu Delphi) : outils module base de données. Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_matiere et on doit cliquer sur oui pour cette demande de confirmation. If column. Pour insérer des index secondaires dans les champs de la table matiere il faut que cette table ne soit pas en cours d’utilisation donc sa propriété : active false. Ensuite : pour programmer la prévisualisation de notre liste on double clique sur le bouton « previsualiser » et on écrit dans sa procédure : fiche_etat_matiere. Remarque importante : Le trie et le filtrage dans une table ne réussissent que si on a défini des index secondaires sur chaque champ trié ou filtré. 19On tape la touche F12 (retour à la fiche). table1. table1. 17On ajoute aussi les options du filtrage et du trie dans cette fiche par l’insertion des composants suivants (toujours dans l’onglés consultation) : Palette Standard Composant Label1 Edit1 Propriété Caption Text Valeur Filtrage 18Pour faire le filtrage on double clique sur le composant edit1 et on écrit dans la procédure (onchange): if edit1.Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité 16On tape Shift+F12 pour afficher la liste des fiches et on choisit la fiche « fiche_matiere» et on clique sur Ok.indexname :=’c2’ .active := true .) Ensuite : on clique sur le bouton enregistrer et on retourne à l’environnement delphi. Ensuite : on ouvre la table par : (le menu) fichier ouvrir table et on choisit l’alias « scolarite » et la table « matiere ».indexname :=’c1’ . table1. Ensuite : double clique sur le composant « mainmenu1 » et double clique sur son élément matiere (sous menu fichier) Ensuite : écrire dans la procédure : fiche_matiere.text <> ‘’ then begin table1.close .close . Enfin : on réactive le composant table1 par sa propriété : active true.print .filtered :=true . on clique sur le bouton OK et on propose un nom symbolique à cet index secondaire (c1 pour le champ reference_m.quickrep1. et pour faire le trie de la table matiere : clique sur le composant dbgrid1. table1.quickrep1.indexname :=’c3’ . end else begin table1.…etc.index = 0 then Table1.

double clique sur le « speedbutton1 » (ajouter) et écrire dans sa procédure : table1. table1.on enregistre notre travail par le menu Delphi : fichier tout enregistrer.Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité Remarques : 1.edit .On clique sur cette fiche (éviter de cliquer sur l’un de ses composants). c’est plus professionnel). Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_professeur ». . 10.[mbyes.Insérer de la palette win32 le composant Pagecontrol1 Clique droit sur ce composant et clique sur « nouvelle page » et écrire dans sa propriété caption « MAJ » Clique droit sur ce composant et clique sur « nouvelle page » et écrire dans sa propriété caption « Consultation » 3.edit .tapez F12 et double clique sur le composant « speedbutton3 » (Modifier) et écrire dans sa procédure : table1. table1. 9. 11.append = table1.tapez F12 et double clique sur le composant « speedbutton4 » (Enregistrer) et écrire dans sa procédure : table1. 8.choisir dans le menu Delphi : fichier nouvelle fiche.edit . Ensuite : choisir dans le menu Delphi : fichier enregistrer.post .setfocus .cancel .glisser les champs un par un dans la fiche dans l’ordre de haut en bas (on peut les sélectionner tous et les glisser en même temps.mtconfirmation.tapez F12 et double clique sur le composant « speedbutton5 » (Annuler) et écrire dans sa procédure : table1.setfocus . .Pour que la fiche matiere se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : .append .last + table1.90 - .On tape : Shift + F12 et on clique sur la « fiche_matiere » et on clique sur Ok. // table1. et dans le dossier « c:\scolarite\source » nommer l’unité : « professeur » 2.insert c’est insérer un nouveau enregistrement en fin de la table.delete .On choisit dans sa propriété : « position poScreenCenter» 2.mbno]. dbedit1. 6. dbedit1. Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements possibles) FICHE PROFESSEUR 1.tapez F12 et double clique sur le composant « speedbutton2 » (Supprimer) et écrire dans sa procédure : if messagedlg(‘ voulez vous supprimer cet enregistrement’ .double clique sur le composant table1 et clique droit sur la petite fenêtre et choisir dans la liste « ajouter tous les champs » 5. .Insérer de la palette Supplément 5 composants « Speedbutton » et écrire dans la propriété de chacun respectivement : « Ajouter » « Supprimer » « Modifier » « Engersitrer » « Annuler » 7.clique sur l’onglés « MAJ » du composant « pagecontrol1 » et insérer dans son cadre intérieur les composants suivants : Palette BDE Composant Table1 Propriété Databasename Tablename Active Valeur scolarite professeur True 4.0)=mryes then table1.

quickrep1.Ensuite clique sur le bouton Terminer Ensuite : on clique sur cette nouvelle fiche en évitant le clic sur le composant « quickrep1 » et dans sa propriété « name » on donne le nom « fiche_etat_professeur » à cette fiche.91 - . .bmp Bkclose 14. f.On tape Shift+F12 pour afficher la liste des fiches et on choisit la fiche « fiche_professeur» et on clique sur Ok.preview . end else begin table1.Dans la boite de dialogue qui s’affiche on choisit l’onglet « affaires » et dans ce dernier on choisit l’icône « expert quick report » et clique sur le bouton Ok. table1.On tape la touche F12 (retour à la fiche). Ensuit : on tape F12 pour retourner à la fiche et pour programmer l’impression de notre liste on double clique sur le bouton « imprimer » et on écrit dans sa procédure : fiche_etat_professeur. mettre visible= true.On choisit dans la liste « nom de table » la table à imprimer (professeur). Ensuite : Choisir dans sa propriété : datasource datasource1.filter :=’[nom_p]=‘ + #39 + edit1.text <> ‘’ then begin table1.On clique sur le bouton >> pour faire passer tous les champs à droite (pour les imprimer tous). et dans le dossier « c:\scolarite\source » nommer l’unité : « etat_ professeur » 15. Ensuite : choisir dans le menu Delphi : fichier enregistrer.Insérer en haut de cette page un composant « DbNavigateur1 » de la palette « ControleBD ». table1. table1. 13. e. last. next.Pour faire le filtrage on double clique sur le composant edit1 et on écrit dans la procédure (onchange) : if edit1.Choisir dans la liste « alias ou répertoire » l’alias « scolarite ».filtered :=true .bmp Imprimer C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer. 18.print .Dans l’assistant qui s’affiche on clique sur le bouton lancer l’expert.quickrep1. refresh .clique sur l’onglés « Consultation » du composant « pagecontrol1 » et insérer dans son cadre intérieur les composants suivants : Palette controlebd Supplément Composant Dbgrid1 Speedbutton6 Speedbutton7 Bitbtn1 Propriété Datasource Caption Glyph Caption Glyph Kind valeur Datasource1 Previsualiser C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer.filtered := false .Dans le menu Delphi on choisit : fichier nouveau b.active := true . prior.Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité 12.close .text + ‘*’ + #39 . 16. Ensuite : choisir dans sa propriété VisibleButtons les boutons first. c.Pour imprimer la liste des professeurs on procède comme suite : a. g. et pour faire le trie de la table professeur : clique sur le composant dbgrid1. Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_professeur et la fiche_etat_professeur et on doit cliquer sur Oui pour cette demande de confirmation.close .active := true .(toujours dans l’onglés consultation) : Palette Standard Composant Label1 Edit1 Propriété Caption Text valeur Filtrage 17. table1. table1. d. Ensuite : pour programmer la prévisualisation de notre liste on double clique sur le bouton « previsualiser » et on écrit dans sa procédure : fiche_etat_professeur. end .

…etc.cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok. If column. If column. Enfin : on réactive le composant table1 par sa propriété : active true.indexname :=’c1’ .index = 1 then Table1. . Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_specialite ». If column. on clique sur le bouton OK et on propose un nom symbolique à cet index secondaire (c1 pour le champ code_p.On clique sur cette fiche (éviter de cliquer sur l’un de ses composants). Ensuite : on ouvre la table par : (le menu) fichier ouvrir table et on choisit l’alias « scolarite » et la table « professeur». 19. Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements possibles) FICHE SPECIALITE 1.On tape : Shift + F12 et on clique sur la « fiche_professeur » et on clique sur Ok.index = 4 then Table1.choisir dans le menu Delphi : fichier nouvelle fiche.On choisit dans sa propriété : « position poScreenCenter» 2. Remarque importante : Le trie et le filtrage dans une table ne réussissent que si on a défini des index secondaires les champs triés ou filtrés. Ensuite : on clique dans le menu du BDE sur table restructurer. Remarques : 1. . Ensuite : on choisit dans la liste des choix « propriétés de la table » l’option « index secondaires » Ensuite : on clique pour chaque champ sur le bouton Définir et on fait passer ce champ à droite. Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément professeur (du sous menu fichier) Ensuite : on écrit dans la procédure : fiche_professeur.indexname :=’c5’ .Pour que la fiche professeur se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : .Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité Ensuite : dans son inspecteur d’objet on clique sur l’onglés « événements » Ensuite : on double clique à droite de l’événement « ontitleclick » et on introduit le code source suivant : If column. c2 pour le champ nom_p.) Ensuite : on clique sur le bouton enregistrer et on retourne à l’environnement delphi.showmodal .indexname :=’c2’ .index = 3 then Table1. . Ensuite : on lance le BDE Delphi par : (le menu Delphi) : outils module base de données. Pour insérer des index secondaires dans les champs de la table professeur il faut que cette table ne soit pas en cours d’utilisation donc sa propriété : active false.on enregistre notre travail par le menu Delphi : fichier tout enregistrer. Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_professeur et on doit cliquer sur oui pour cette demande de confirmation.index = 2 then Table1.index = 0 then Table1. If column.indexname :=’c4’ .indexname :=’c3’ .92 - .

designation_s.ref_specialite group by specialite.93 - . .active :=true . designation_c c2 .close . ref_specialité c3) Ensuite on retourne à la fiche_specialite et on réactive la table classe (active true). 5.Insérer de la palette win32 le composant Pagecontrol1 Clique droit sur ce composant et clique sur « nouvelle page » et écrire dans sa propriété caption « MAJ & Consultation » Clique droit sur ce composant et clique sur « nouvelle page » et écrire dans sa propriété caption « Statistiques » 3. Ensuite : on choisit dans la liste en haut l’index secondaire « c3 » (c’est l’index du champ ref_specialite de la table classe) Ensuite : on choisit à gauche le champ «ref_specialite» et à droite le champ « ref_specialite».designation_s » Et choisir dans la liste « sectoriel » l’élément « nombre » A la fin clique sur Fermer Composant Query1 Propriété databasename Sql controlebd Remarque : Pour que les statistiques affichent toujours les dernières modifications automatiquement (rafraîchissement automatique des données du query1) : Clique sur le composant table1 (specialite) et Dans son inspecteur d’objet double clique à droite de son événement « afterpost » Ensuite : écrire le code source suivant dans la procédure correspondante : Query1.Clique sur l’onglés « Statistiques » du composant « pagecontrol1 » et insérer dans son cadre intérieur les composants suivants : Palette BDE Valeur scolarite Select specialite. count(ref_classe) as nombre from specialite.designation_s Active True DBchart1 (Insérer ce composant sur le composant « pagecontrole1 » dans la page « statistiques » ) Et double clique sur ce composant « dbchart1 » Et clique sur l’onglé inférieur « série » Et clique sur le bouton Ajouter Et clique sur le graphe de la forme « sectoriel » Et clique sur le bouton Ok Et clique sur l’onglé supérieur « série » Et clique sur l’onglé « source de données » Et choisir dans la liste l’élément « dataset » Et choisir dans la liste dataset l’élément « query1 » Et choisir dans la liste « libellé » l’élément « specialite. Ensuite : clique sur le bouton « ajouter » ensuite sur le bouton Ok . et choisir dans sa propriété : mastersource datasource1. et dans le dossier « c:\scolarite\source » nommer l’unité : « specialite» 2.ref_specialite = classe. Ensuite : dans sa propriété « masterfield » on clique sur petit bouton … . classe where specialite.Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité Ensuite : choisir dans le menu Delphi : fichier enregistrer.pour que la table classe soit liée par une relation maître détail avec la table specialite (la table specialite maître (père) et la table classe détail (fils)) on procède comme suite : On désactive la table classe (active false) et dans le BDE on insère des index secondaires pour chaque champ de cette table ( ref_classe c1.clique sur l’onglés « MAJ_Consultation » du composant « pagecontrol1 » et insérer dans son cadre intérieur les composants suivants : Palette BDE Composant Table1 Propriété Databasename Tablename Active Dataset Databasename Tablename Active Dataset Datasource Datasource Kind Valeur scolarite specialite True Table1 scolarite Accesbd BDE Datasource1 Table2 classe True Table2 Datasource1 Datasource2 Bkclose Accesbd controlebd Supplement Datasource2 Dbgrid1 Dbgrid2 Bitbtn1 4. Query1. On clique sur le composant table2 « classe ».

Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats) FICHE BULLETIN 1Choisir dans le menu Delphi : fichier nouvelle fiche. .close . et dans le dossier « c:\scolarite\source » nommer l’unité: «bulletin» 2Insérer les composants suivants : Palette BDE Composant Table1 Propriété Databasename Tablename Active Dataset Databasename Tablename Active mastersource masterfield Dataset Databasename Tablename Active Valeur Scolarite Etudiant True Table1 Scolarite Resultat True Datasource1 Clique sur “code_etudiant” à gauche et sur “code_e” à droite et sur Ajouter ensuite sur Ok Table2 Scolarite Matiere True accesbd BDE Datasource1 Table2 accesbd BDE Datasource2 Table3 .on enregistre notre travail par le menu Delphi : fichier tout enregistrer.active :=true .Pour que la fiche_specialite se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : . Query1.On tape : Shift + F12 et on clique sur la « fiche_specialite » et on clique sur Ok.94 - . 6. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_bulletin». Ensuite : choisir dans le menu Delphi: fichier enregistrer.Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité Aussi: Clique sur le composant table2 (classe) et Dans son inspecteur d’objet double clique à droite de son événement « afterpost » Ensuite : écrire le code source suivant dans la procédure correspondante : Query1. Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément specialite (du sous menu fichier) Ensuite : on écrit dans la procédure : fiche_specialite. Remarques : 1.showmodal .On choisit dans sa propriété : « position poScreenCenter» 2.On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).Cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok. Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_specialite et on doit cliquer sur oui . .

Ensuite : on écrit le nom du champ : « moy_coef » et on choisit le type du champ : « Float » et on clique sur Ok. query1.asfloat:= table2.asstring.Apprendre Delphi7 par l’exemple accesbd BDE Datasource3 Table4 Dataset Databasename Tablename Active mastersource masterfield Datasource Datasource Caption Glyph Kind databasename Sql Params Active datasource Caption text Chapitre 3 : Logiciel gestion scolarité Table3 Scolarite Professeur True Datasource3 Clique sur “Ref_matiere” à gauche et sur “Reference_m” à droite et sur Ajouter ensuite sur Ok Datasource1 Datasource2 Imprimer C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer. if (query1.fieldbyname('moy_gen').asfloat <=20) then edit1.asfloat+table2.asinteger:=table3.asinteger.text:='Blâme'.fieldbyname('designation_m').fieldbyname('moy_gen').asfloat <10) then edit1.fieldbyname('matiere'). table2.fieldbyname('composition').fieldbyname('moy_20').setkey.asfloat)/3. if (query1.asinteger:=table2.fieldbyname('coefficient'). end.asfloat >=12) and (query1. query1. Ensuite : on clique droit sur la petite fenêtre et on clique sur « ajouter tous les champs ».fieldbyname('reference_m’).bmp Bkclose Scolarite select sum((devoir+composition)/3*coefficient)/sum(coefficient) as Moy_Gen from matiere. Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».fieldbyname('moy_gen'). table3.fieldbyname('devoir'). Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ». table3. A la fin : on ferme la petite fenêtre.asfloat <7) then edit1.asinteger.asfloat >=10) and (query1.fieldbyname('moy_gen').fieldbyname('moy_gen').fieldbyname('moy_20').fieldbyname('moy_gen').asinteger:=table1. Ensuite : on double clique à droite de l’événement « oncalcfield » et on écrit dans la procédure : table3.asfloat:= (table2. Ensuite : on clique sur composant « table2 » (resultat) et dans son inspecteur d’objet on clique sur l’onglé événement.fieldbyname('moy_gen'). if (query1.asfloat <12) then edit1.asfloat <5) then edit1.text:='Tableau d''honneur'. if (query1.text:='Encouragement'. Ensuite : on écrit le nom du champ : « matiere » et on choisit le type du champ : « string » et on clique sur Ok.fieldbyname('moy_gen').asstring:=table3.asfloat >=14) and (query1.fieldbyname('moy_gen').asfloat >=5) and (query1.asfloat >=7) and (query1.parambyname('p').text:='Avertissement'.text:='Félicitation'. if (query1.fieldbyname('coefficient').asfloat >=0) and (query1.active:=true.fieldbyname('coefficient').close. Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».fieldbyname('moy_gen'). Ensuite : on clique droit une autre fois sur cette petite fenêtre et on clique sur « nouveau champ ».95 - .resultat where (ref_matiere =reference_m) and (code_etudiant = :p) controlebd Dbgrid1 Dbgrid2 Supplement Speedbutton1 Bitbtn1 Query1 BDE controlebd dbnavigator standard Label1 Edit1 Clique sur « p » et choisir dans la propriété datatype : « ftinteger » True Datasource1 Resultat 3on peut renforcer cette fenêtre par les champs calculés comme suite : On double clique sur le composant table2 « resultat ». Ensuite : on écrit le nom du champ : « moy_20» et on choisit le type du champ : « float » et on clique sur Ok.fieldbyname('moy_gen'). . if table3.Open.fieldbyname('moy_coef').fieldbyname('code_e').gotokey then begin table2.asinteger. table2. table2. Ensuite : on écrit le nom du champ : « coefficient » et on choisit le type du champ : « integer » et on clique sur Ok.fieldbyname('moy_gen').asfloat <14) then edit1.fieldbyname('ref_matiere').asinteger.asfloat*table2. query1. if (query1.text:='Rien'.

6le « dbgrid2 » affiche le champ « code_etudiant » (de la table resultat) qui contient bien sûr le même code de l’étudiant actuelle (puisque il y’a une liaison maître_détail entre la table resultat et la table etudiant par leurs champs communs code_etudiant et code_e). (Le champ « code_etudiant » ne sera pas supprimé de la table « resultat » mais seulement il ne sera pas affiché) 7pour préparer l’impression de notre bulletin on procède comme suite : On insère une nouvelle fiche à notre logiciel par le choix dans le menu Delphi de : fichier nouvelle fiche. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom: « fiche_etat_bulletin ». Ensuite : on insère dans cette fiche un composant « quickrep1 » de la palette « qreport ».Table1.// pour afficher la liste des professeurs et en choisir un. ouvrir la table resultat par : (le menu BDE) Fichier Ouvrir table et on choisit l’alias « scolarite » et la table « resultat ».fieldbyname('professeur').96 - . Ensuite : clique doit sur la petite fenêtre et clique dans le menu contextuel sur : « ajouter tous les champs ». mais.clique en haut de la petite fenêtre sur le bouton « ajouter tous les champs » . écrire dans la propriété « name » le nom : « fiche_liste_professeur». insérer dans cette fiche les composants suivants : Palette BDE Composant Table1 Propriété Databasename Tablename Active Dataset Datasource Valeur scolarite professeur True Table1 Datasource1 Accesbd controleBD Datasource1 Dbgrid1 Pour avoir une ligne de sélection permanente dans le Dbgrid1 qui indique l’enregistrement résultat de la recherche : Cliquer à gauche de la propriété « + Options » du dbgrid1 (éxactement sur la case +). Dans notre cas on va recréer le champ " nom du professeur " dans la table résultat pour indiquer l'enseignant de chaque matiére et cela en procédant comme suite : fermer le logiciel par le menu delphi : fichier tous fermer. Table2. on ne peut pas le faire comme champ calculé puisque une matiére a plusieurs enseignants possibles. à la fin fermer la petite fenêtre.double clique sur le « dbgrid2 ». Table2. donc ce champ répétera pour tous les enregistrements du « dbgrid2 » le même code étudiant. et dans le dossier « c:\scolarite\source » nommer l’unité: «liste_professeur». lancer le BDE Delphi par : (le menu Delphi) : Outils Module base de données. Choisir dans le menu delphi : Fichier Nouvelle fiche. Dans ce cas et pour plus de souplesse dans la programmation.post. dans l’inspecteur d’objet de la fiche. . cela assure que la table resultat ne sera pas en cours d'utilisation.asstring:= Fiche_liste_professeur. pour supprimer ce champ : . mais on ne peut pas connaître le nom de son enseignant puisque il y a plusieurs possibilités. Cliquer sur le composant "dbgrid2" et choisir son événement "onkeydown" et écrire dans sa procédure : If key = vk_return then begin Fiche_liste_professeur. Table2. cliquer dans le menu du BDE sur : table restructurer.edit. Taper Shift + F12 et on retourne à la "fiche_bulletin".fieldbyname('nom'). Ecrire à la fin des champs notre nouveau champ "professeur" avec comme type "A" et taille "20". . choisir dans le menu Delphi: fichier enregistrer. Choisir dans la sous propriété : DGAlwaysShowSelection true. // préparer la table résultat pour écrire le nom du professeur. Ensuite : on tape F12 et en haut de l’unité on écrit dans la liste «uses» le nom «bulletin» et on compile Ctrl+F9 pour assurer la liaison entre la fiche_bulletin et la fiche_etat_bulletin. il vaut mieux alors de ne pas afficher ce dernier dans le « dbgrid2 ». la méthode de conception Merise accépte de faire des rédendances.showmodal. Ensuite : (le menu Delphi): fichier enregistrer. cliquer sur le bouton enregistrer et retourner à l’environnement Delphi. Ensuite : glisser le champ « moy_gen» de la requête vers le bas de la fiche. End . et dans le dossier « c:\scolarite\source » nommer l’unité: «etat_bulletin ». Réouvrir le logiciel "scolarité" par le menu Delphi : Fichier Ouvrir un projet. Choisir dans la sous propriété : DGRowSelect true.supprimer le champ « code_etudiant » et fermer la petite fenêtre.asstring.Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité 4On veut ajouter le nom du professeur dans la table résultat. donc la connaissance (la saisie) de la reference de matiére peut nous faire connaître sa désignation et son coefficient. 5on tape F12 pour retourner à la fiche et on double clique sur le composant « query1 ».

hascolumnheader true.table1 doublant Matiere Devoir composition Moy_20 coefficient Moy_coef professeur observation .Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité Nb : par fois Delphi répète quelques unités de la partie uses si on écrit une nouvelle unité dans cette partie.table1 Lieu classe fiche_bulletin.97 - . hassummary true.table1 Ref_classe doublant fiche_bulletin.table1 Date_naissance à fiche_bulletin. donc on doit supprimer les unités dupliquées si Delphi signal ce problème de répétition après la compilation du logiciel.table1 Prenom_e date & lieu de naissance fiche_bulletin. Ensuite : dans l’inspecteur d’objet du quickrep1 on choisit dans la propriété : dataset « fiche_bulletin. hasdetail true.table2 » Ensuite : dans l’inspecteur d’objet de ce composant on écrit dans la propriété : zoom 70 Ensuite : choisir dans sa propriété Bands: hastitle true. Ensuite : on insère les composants suivants de la palette « qreport » sur les bandes de ce quickrep1 comme suite: bande Titre (agrandir la hauteur de cette bande) Composant qrlabel1 qrlabel2 Qrlabel3 Qrlabel4 Qrlabel5 qrdbtext1 Qrlabel6 Qrdbtext2 Qrlabel7 Qrdbtext3 Qrlabel8 Qrdbtext4 Qrlabel9 Qrdbtext5 Qrlabel10 Qrdbtext6 Entête de colonnes Qrlabel11 Qrlabel12 Qrlabel13 Qrlabel14 Qrlabel15 Qrlabel16 Qrlabel17 Qrlabel18 Propriété caption caption caption caption caption dataset datafield caption dataset datafield caption dataset datafield caption dataset datafield caption dataset datafield caption dataset datafield caption caption caption caption caption caption caption caption valeur Ministère de l’éducation nationale direction de l’éducation Sétif lycée Kirouani BULLETIN DE SCOLARITE nom fiche_bulletin.table1 Nom_e prenom fiche_bulletin.

qrlabel21. clique sur le champ à formater (pour nous on va manipuler les deux champs «moy_20» et «moy_coef») Écrire dans sa propriété : ##.Apprendre Delphi7 par l’exemple Detail Qrdbtext7 Chapitre 3 : Logiciel gestion scolarité dataset fiche_bulletin.## Display format Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements possibles) .table2 datafield professeur dataset fiche_bulletin. Ensuite : on double clique sur le composant «mainmenu1» et double clique sur son élément bulletin (sous menu Edition) Ensuite : on écrit dans la procédure : fiche_bulletin.On tape : Shift + F12 et on clique sur la « fiche_bulletin » et on clique sur Ok. .On choisit dans sa propriété : « position poScreenCenter» 2. on recompile par Ctrl + F9 pour faire la liaison aussi entre la fiche_bulletin et la fiche_etat_bulletin et on doit cliquer sur oui aussi pour cette demande de confirmation.On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).preview .table2 datafield Devoir Qrdbtext9 dataset fiche_bulletin. donc 2 chiffres avant et après la virgule) Ensuite double clique sur le composant « query1 ».table2 datafield Matiere Qrdbtext8 dataset fiche_bulletin.98 - . clique sur le champ à formater (pour nous on va manipuler le champ «moy_gen») Écrire dans sa propriété : ##. Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_bulletin et on doit cliquer sur oui pour cette demande de confirmation .caption := edit1. .table2 datafield composition Qrdbtext10 dataset fiche_bulletin.table2 Qrdbtext14 datafield observation Resumé Qrlabel19 caption Moyenne générale (agrandir la hauteur Qrdbtext15 dataset fiche_bulletin. Remarques : 1.query1 de cette bande) datafield moy_gen Qrlabel20 caption Resultat Qrlabel21 caption Ensuite : on tape Shift + F12 et on affiche la fiche « fiche_bulletin » Ensuite : on double clique sur le bouton « imprimer » et on écrit dans sa procédure : Fiche_etat_bulletin.Pour que la fiche bulletin se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : .quickrep1. // le bouton imprimer éxiste en haut de la fenêtre de prévisualisation. Fiche_etat_bulletin. En fin : on enregistre tous le travail par : (le menu Delphi) : fichier tout enregistrer 8cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.## Display format (# Représente un chiffre.table2 datafield coefficent Qrdbtext12 dataset fiche_bulletin.on enregistre notre travail par le menu Delphi : fichier tout enregistrer.text .table2 datafield Moy_20 Qrdbtext11 dataset fiche_bulletin.table2 datafield Moy_coef Qrdbtext13 dataset fiche_bulletin. Remarque importante: Pour contrôler le format d’affichage des nombres réels (champ de type float) dans une BD (limiter le nombre de chiffres après la virgule) on procède comme suite : double clique sur le composant « table2 ».showmodal .

Ensuite : (le menu Delphi): fichier enregistrer.classe t2 where (t1. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom : « fiche_consultation_etudiant». designation_s Ref_specialite Datasource2 C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\find. designation_c Ref_classe Scolarite select * from etudiant where ref_classe = :p Clique sur « p » et choisir dans la propriété datatype : « ftinteger » True Query1 C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\find.ref_specialite = :p) Clique sur « p » et choisir dans la propriété datatype : « ftinteger » True Scolarite select * from etudiant where doublant = :p Clique sur « p » et choisir dans la propriété datatype : « ftstring » True Accésbd controlebd Datasource1 dblookupcombobox1 BDE Query1 Accésbd supplement standard BDE Datasource2 Speedbutton1 abell2 Table2 Accésbd controlebd Datasource3 dblookupcombobox2 supplement standard Dbgrid1 Speedbutton2 label3 Combobox1 supplement BDE Speedbutton3 Query2 Query3 Params Active databasename Sql Params Active .bmp Choisir la specialite Scolarite specialite true Table2 datasource3 Ref_specialite.Apprendre Delphi7 par l’exemple LA FICHE CONSULTATION ETUDIANT Chapitre 3 : Logiciel gestion scolarité 1.ref_classe = t2.Insérer les composants suivants : Palette supplement standard BDE Composant bitbtn label1 Table1 Propriété kind Caption databasename tablename active dataset listesource listefield keyfield databasename Sql Params Active dataset glyph Caption databasename tablename active dataset listesource listefield keyfield datasource glyph Caption text Items glyph databasename Sql Valeur bkclose Choisir la classe scolarite ssecla true Table1 datasource1 Ref_classe.bmp Scolarite select * from etudiant t1.choisir dans le menu Delphi : fichier nouvelle fiche.ref_classe) and (t2.99 - .bmp Etudiant doublant Oui Non C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\find. et dans le dossier « c:\scolarite\source » nommer l’unité: «consultation_etudiant» 2.

datasource2. Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles) FICHE STATISTIQUES DES ETUDIANTS 1. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name»le nom:«fiche_statistiques_etudiant». query3.asinteger. et dans le dossier « c:\scolarite\source » nommer l’unité:«statistiques_etudiant» .text .parambyname('p'). Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_consultation_etudiant et on doit cliquer sur oui pour cette demande de confirmation.dataset:=query1. query1.asinteger.active:=true.asinteger:=table1.On tape : SHIFT + F12 et on clique sur la « fiche_consultation_etudiant » et on clique sur Ok.parambyname('p'). 6.On choisit dans sa propriété : « position poScreenCenter» 2. 4.dataset:=query2. Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément etudiant (du sous menu consultation) Ensuite : on écrit dans la procédure : fiche_consultation_etudiant.cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : SHIFT + F12 et on clique sur la « fiche_menu » et on clique sur Ok.Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité 3.fieldbyname('ref_classe').choisir dans le menu Delphi : fichier nouvelle fiche. datasource2. query1.showmodal .close.asstring:= combobox1.100 - . Ensuite:(le menu Delphi): fichier enregistrer. query3.dataset:=query3.tapez F12 et double clique sur le composant « speedbutton2 » et écrire: query2.close.asinteger:=table2.Pour que la fiche_consultation_etudiant se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : .active:=true. 5.On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).double clique sur le composant « speedbutton1 » et écrire : query1. Remarques : 1. .tapez F12 et double clique sur le composant « speedbutton3 » et écrire: query3.on enregistre notre travail par le menu Delphi : fichier tout enregistrer. datasource2.active:=true.close. query2.fieldbyname('ref_specialite'). query2. .parambyname('p').

designation_c.ref_classe = t2.ref_classe = t3.code_e)as nombre from specialite t1. classe t2.designation_s.Insérer les composants suivants : Palette BDE Composant Table1 Propriété databasename tablename Active Dataset databasename Sql Chapitre 3 : Logiciel gestion scolarité Valeur scolarite specialite true Table1 scolarite select t1. etudiant t2 where (t1.designation_s True scolarite select t1.ref_classe) and(t1.count(t3.ref_specialite = :p) group by t1.101 - .code_e)as nombre from classe t1.designation_c Clique sur « p » et choisir dans la propriété datatype : « ftinteger » True scolarite select Doublant.count(Doublant)as nombre from etudiant group by doublant True bkclose Par Specialité Accèsbd BDE Datasource1 Query1 Query2 Active databasename Sql Query3 Params Active databasename Sql supplement win32 btnbit Pagecontrol1 Clique droit sur ce composant clique sur « nouvelle page » Active kind et Caption Controlebd Controlebd Clique droit sur ce composant et Caption Par Groupe clique sur « nouvelle page » Clique droit sur ce composant et Caption Par Resultat clique sur « nouvelle page » Dbgrid1(dans la page« Par Groupe») Datasource Datasource1 dBchart1 (Insérer ce composant sur le composant « pagecontrole1 » dans la page « Par Specialité» ) Et double clique sur ce composant « dbchart1 » Et clique sur l’onglé inférieur « série » Et clique sur le bouton Ajouter Et clique sur le graphe de la forme « sectoriel » Et clique sur le bouton Ok Et clique sur l’onglé supérieur « série » Et clique sur l’onglé « source de données » Et choisir dans la liste l’élément « dataset » Et choisir dans la liste dataset l’élément « query1 » Et choisir dans la liste « libellé » l’élément « désignation_s » Et choisir dans la liste « sectoriel » l’élément « nombre » A la fin clique sur Fermer dBchart2 (Insérer ce composant sur le composant « pagecontrole1 » dans la page « Par Groupe») Et double clique sur ce composant « dbchart2 » Et clique sur l’onglé inférieur « série » Et clique sur le bouton Ajouter Et clique sur le graphe de la forme « sectoriel » Et clique sur le bouton Ok Et clique sur l’onglé supérieur « série » Et clique sur l’onglé « source de données » Et choisir dans la liste l’élément « dataset » Et choisir dans la liste dataset l’élément « query2 » Et choisir dans la liste « libellé » l’élément « désignation_c » Et choisir dans la liste « sectoriel » l’élément « nombre » A la fin clique sur Fermer .ref_specialite) and (t2.ref_specialite = t2.ref_classe) group by t1. etudiant t3 where (t1.Apprendre Delphi7 par l’exemple 2.count(t2.

asinteger. Query3.fieldbyname('ref_specialite').On tape : Shift + F12 et on clique sur la « fiche_statistique_etudiant » et on clique sur Ok. Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément scolarité (sous menu statistiques) Ensuite : on écrit dans la procédure : fiche_statistiques_etudiant.active :=true .Dans l’événement "Afterscroll" du composant table1 on écrit : query2.active :=true .Apprendre Delphi7 par l’exemple Controlebd Chapitre 3 : Logiciel gestion scolarité dBchart3 (Insérer ce composant sur le composant « pagecontrole1 » dans la page « Par Resultat») Et double clique sur ce composant « dbchart3 » Et clique sur l’onglé inférieur « série » Et clique sur le bouton Ajouter Et clique sur le graphe de la forme « sectoriel » Et clique sur le bouton Ok Et clique sur l’onglé supérieur « série » Et clique sur l’onglé « source de données » Et choisir dans la liste l’élément « dataset » Et choisir dans la liste dataset l’élément « query3 » Et choisir dans la liste « libellé » l’élément « Doublant » Et choisir dans la liste « sectoriel » l’élément « nombre » A la fin clique sur Fermer 3. Query3. query2.On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).close .On choisit dans sa propriété : « position poScreenCenter» 2.on enregistre notre travail par le menu Delphi : fichier tout enregistrer. 4. Query1.close . Remarques : 1.asinteger:=table1. Remarque : Pour que la fiche statistiques etudiant affiche toujours les dernières modifications automatiquement (rafraîchissement automatique des données du query1 et query2 et query3) : Clique sur la fiche_statistiques_etudiant Dans son inspecteur d’objet double clique à droite de l’événement « onactivate » Ensuite : écrire le code source suivant dans la procédure correspondante : Query1. .102 - .cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.parambyname('p').Pour que la fiche statistique etudiant se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : .active :=true .showmodal . Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles) . Query2.close. query2. Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_statistiques_etudiant et on doit cliquer sur oui pour cette demande de confirmation.active:=true.close . Query2. .

table1.choisir dans le menu Delphi : fichier nouvelle fiche.Insérer les composants suivants : Palette Composant Propriété Valeur BDE Table1 Databasename scolarite Tablename etudiant Active True Accesbd Datasource1 Dataset Table1 controleBD Dbgrid1 Datasource Datasource1 Standard Label1 Caption Filtrage Edit1 Text Supplément Speedbutton1 Caption Imprimer certificat scolarite Glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name»le nom:«fiche_liste_etudiant».103 - .text <> ‘’ then begin table1. end . table1.text + ‘*’ + #39 . table1. et dans le dossier « c:\scolarite\source » nommer l’unité:« liste_etudiant» 2.active := true .Pour faire le filtrage on double clique sur le composant edit1 et on écrit dans la procédure (onchange): if edit1.filtered :=true .bmp Bitbtn1 Kind Bkclose 3. Ensuite:(le menu Delphi): fichier enregistrer. table1. . table1.filtered := false .close .filter :=’[Nom_e]=‘ + #39 + edit1.active := true .Apprendre Delphi7 par l’exemple FICHE IMPRESSIONS Chapitre 3 : Logiciel gestion scolarité 1.bmp Speedbutton2 Caption Imprimer carte etudiant Glyph C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\printer. end else begin table1.close .

donc on doit supprimer les unités dupliquées si Delphi signal ce problème de répétition après la compilation du logiciel. 5.table1 datafield Nom_e Qrlabel7 caption prenom Qrdbtext2 dataset fiche_liste_etudiant.quickrep1. et dans le dossier « c:\scolarite\source » nommer l’unité: «etat_liste_etudiant ».table1 datafield Nom_e Qrlabel18 caption prenom .preview .table1 datafield Lieu Qrlabel10 caption A suivi ses études cette année scolaire dans : Qrlabel11 caption classe Qrdbtext5 dataset fiche_liste_etudiant.table1 datafield Prenom_e Qrlabel8 caption date & lieu de naissance Qrdbtext3 dataset fiche_liste_etudiant. que l’etudiant (e) Qrlabel6 caption nom Qrdbtext1 dataset fiche_liste_etudiant.table1 datafield Date_naissance Qrlabel9 caption à Qrdbtext4 dataset fiche_liste_etudiant. Ensuite : dans l’inspecteur d’objet de ce composant on écrit dans la propriété : zoom 70 Ensuite : choisir dans sa propriété Bands: hastitle true. Ensuite : dans l’inspecteur d’objet de ce composant on écrit dans la propriété : zoom 70 Ensuite : choisir dans sa propriété Bands: hastitle true. mois le directeur du lycée. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété « name » le nom: « fiche_etat_liste_etudiant ».pour préparer l’impression du CERTIFICAT DE SCOLARITE et de la carte etudiant on procède comme suite : On insère une nouvelle fiche à notre logiciel par le choix dans le menu Delphi de : fichier nouvelle fiche.pour imprimer le certificat de scolarite on insère dans cette fiche un composant « quickrep1 » de la palette « qreport ». Ensuite : on agrandis la largeur de la bande titre et dans cette bande on insère les composants suivants de la palette « qreport » : bande Composant Propriété valeur Titre qrlabel1 caption Ministère de l’éducation nationale qrlabel2 caption direction de l’éducation Sétif Qrlabel3 caption lycée Kirouani Qrlabel4 caption CERTIFICAT DE SCOLARITE Qrlabel5 caption J’atteste. En fin : on enregistre tous le travail par : (le menu Delphi) : fichier tout enregistrer 6. Ensuite : on tape F12 et en haut de l’unité on écrit dans la liste «uses» le nom «liste_etudiant» et on compile Ctrl+F9 pour assurer la liaison entre la fiche_liste_etudiant et la fiche_etat_liste_etudiant. Nb : par fois Delphi répète quelques unités de la partie uses si on écrit une nouvelle unité dans cette partie.104 - .pour imprimer la CARTE ÉTUDIANT on insère dans la fiche_etat_liste_etudiant un composant « quickrep2 » de la palette « qreport ». // le bouton imprimer éxiste en haut de la fenêtre de prévisualisation.Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité 4. Ensuite : (le menu Delphi): fichier enregistrer. Ensuite : on double clique sur ce composant « quickrep2 » Choisir dans la fenêtre la liste : taille de papier « taille personnalisée » Écrire : largeur 140 et longueur 100 et clique sur Ok Ensuite : on agrandis la largeur de la bande titre et dans cette bande on insère les composants suivants : bande Composant Propriété valeur Titre qrlabel13 caption Ministère de l’éducation nationale Qrlabel14 caption direction de l’éducation Sétif Qrlabel15 caption lycée Kirouani Qrlabel16 caption CARTE ETUDIANT Qrlabel17 caption nom Qrdbtext6 dataset fiche_liste_etudiant.table1 datafield Ref_classe Qrlabel12 caption Cette attestation n’est livrée que pour servir à ce que de droit Ensuite : on tape Shift + F12 et on affiche la fiche « fiche_liste_etudiant » Ensuite : on double clique sur le bouton « imprimer certificat scolarite » et on écrit dans sa procédure : Fiche_etat_liste_etudiant.

Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles) FICHE MOT DE PASSE 1-choisir dans le menu Delphi : fichier nouveau dialogue dialogue de mot de passe.quickrep2. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name» le nom: « fiche_passe ».showmodal . // le bouton imprimer éxiste en haut de la fenêtre de prévisualisation. cela aura comme résultat que ces imprimées concerneront à chaque fois l’étudiant sélectionné.preview . .On tape : Shift + F12 et on clique sur la « fiche_liste_etudiant» et on clique sur Ok. Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_liste_etudiant et on doit cliquer sur oui pour cette demande de confirmation . .105 - . .cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok. on recompile par Ctrl + F9 pour faire la liaison aussi entre la fiche_liste_etudiant et la fiche_etat_liste_etudiant et on doit cliquer sur oui aussi pour cette demande de confirmation.Apprendre Delphi7 par l’exemple Qrdbtext7 Chapitre 3 : Logiciel gestion scolarité dataset fiche_liste_etudiant.table1 datafield Lieu Qrlabel21 caption classe Qrdbtext10 dataset fiche_liste_etudiant.table1 datafield Date_naissance Qrlabel20 caption à Qrdbtext9 dataset fiche_liste_etudiant. Ensuite : (le menu Delphi) : fichier enregistrer. et dans le dossier « c:\scolarite\source » nommer l’unité : « passe » 2.table1 datafield Prenom_e Qrlabel19 caption date & lieu de naissance Qrdbtext8 dataset fiche_liste_etudiant.insérer un composant « table1 » (palette BDE) et manipuler ces propriétés : Databasename scolarite table name protection active true.on enregistre notre travail par le menu Delphi : fichier tout enregistrer.On clique sur cette fiche (éviter de cliquer sur l’un de ses composants). Remarques : 1. Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément impressions (du sous menu états) Ensuite : on écrit dans la procédure : fiche_liste_etudiant.table1 datafield photo Ensuite : on tape Shift + F12 et on affiche la fiche « fiche_liste_etudiant » Ensuite : on double clique sur le bouton « imprimer carte etudiant » et on écrit dans sa procédure : Fiche_etat_liste_etudiant.On choisit dans sa propriété : « position poScreenCenter» 2. 7.Pour que la fiche liste etudiant se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : .table1 datafield Ref_classe Qrlabel22 caption photo Qrdbimage1 dataset fiche_liste_etudiant. En fin : on enregistre tous le travail par : (le menu Delphi) : fichier tout enregistrer Remarque importante : Pour imprimer la certificat de scolarité ou la carte étudiant de l’étudiant en cours (étudiant sélectionné) on ne choisit rien dans la propriété « dataset » du composant « quickrep » (ie : cette propriété doit rester vide).

veut dire vider son texte.terminate .text=table1.setfocus. 3.showmodal else begin showmessage('mot de passe incorrecte'). Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name»le nom:« fiche_protection ».106 - . password.fieldbyname('password').Double clique sur le bouton Ok et écrire dans sa procédure : if password. Ensuite : (le menu Delphi) : fichier enregistrer.Pour que la fiche_passe se lance la première lors de chaque éxécution du logiciel on choisit dans le menu Delphi : Projet options dans l’onglés « fiche » dans la liste « fiche principale » choisir : « fiche_passe » Ok b.choisir dans le menu Delphi : fichier nouvelle fiche. //le composant password est un simple composant Edit. donc on doit supprimer les unités dupliquées si Delphi signal ce problème de répétition après la compilation du logiciel. et dans le dossier « c:\scolarite\source » nommer l’unité:« protection» 2.Insérer les composants suivants : Palette supplement standard Composant bitbtn1 bitbtn2 label1 edit1 label2 edit2 label3 edit3 BDE table1 Propriété kind kind caption text passwordchar caption text passwordchar caption text passwordchar databasename tablename Active Valeur bkclose bkok Ancien mot de passe * Nouveau mot de passe * confirmation * scolarite protection True . donc password.double clique sur le Bouton Annuler et écrire dans sa procédure : application. end.il faut ajouter les deux unités : messages.clear. dialogs.asstring then fiche_menu. Remarques importantes: a.Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité 3.clear. Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles) FICHE PROTECTION 1. dans la liste uses de l’unité « passe » Nb : par fois Delphi répète quelques unités de la partie uses si on écrit une nouvelle unité dans cette partie. password.

showmodal . et dans le dossier « c:\scolarite\source » nommer l’unité:« archivage» Palette win3.fieldbyname(‘password’).Apprendre Delphi7 par l’exemple 3.post. Table1.text = table1.edit. Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément protection (du sous menu outils) Ensuite : on écrit dans la procédure : fiche_protection.choisir dans le menu Delphi : fichier nouvelle fiche. Showmessage(‘ la modification du mot de passe est effectuée ’) End Else Showmessage(‘ la confirmation du mot de passe est incorrecte ’) Else Showmessage(‘ l’’ancien mot de passe est incorrecte ’) .fieldbyname(‘password’).On choisit dans sa propriété : « position poScreenCenter» 2.asstring:=edit2.text = edit2.db DirectoryListBox1 DriveComboBox1 driverlist driver driverlist fichier *.bmp lecteur FilterComboBox1 supplement BitBtn1 Speedbutton1 Label1 standard .Pour que la fiche protection se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : . Remarques : 1. Table1. Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements possibles) FICHE ARCHIVAGE 1.text.On tape : Shift + F12 et on clique sur la « fiche_protection » et on clique sur Ok.text then Begin Table1.asstring then If edit3.On clique sur cette fiche (éviter de cliquer sur l’un de ses composants). . Ensuite : (le menu Delphi) : fichier enregistrer.db bkclose archiver C:\Program Files\Fichiers communs\Borland shared\Images\Buttons\floppy.on enregistre notre travail par le menu Delphi : fichier tout enregistrer.cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.107 - . Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name» le nom:« fiche_archivage ».1 Composant FileListBox1 Propriété name Mask name name Dirlist Filelist filter kind caption glyph caption Valeur fichier *.double clique sur le composant « BitBtn2 » et écrire dans sa procédure: If edit1. Chapitre 3 : Logiciel gestion scolarité 4. . Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_protection et on doit cliquer sur Oui pour cette demande de confirmation.

5.tapez F12 et dans la liste uses de l’unité archivage Il faut ajouter l’unité : ShellAPI. et dans le dossier « c:\scolarite\source » nommer l’unité:« Cloture» . var fos: TSHFileopStruct.aussi. SizeOf(fos).Double clique sur le composant speedbutton1 et écrire dans sa procédure : if CopyFolder('c:\scolarite\base'. end.On tape : Shift + F12 et on clique sur la « fiche_archivage » et on clique sur Ok. Remarques : 1. Result := ShFileOperation(fos)=0. fFlags := FOF_SILENT or FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR. Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous les traitements possibles) Cette fiche necessite la création d'un dossier dans disque dur (nommé par exemple : archive2007) qui sera le dossier ou on va archiver notre base de données. Ensuite : (le menu Delphi) : fichier enregistrer. .cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok. ToFld: string): boolean. . driverlist.Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité 2.il faut inserer avant la procedure BitBtn4Click la fonction suivante : function CopyFolder(FromFld.0). FICHE CLOTURE 1. Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name» le nom:« fiche_Cloture».showmodal . pFrom := PChar(FromFld+#0). pTo := PChar(ToFld+#0). 6.on enregistre notre travail par le menu Delphi : fichier tout enregistrer.Pour que la fiche archivage se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : .pour avoir un bon interface on doit cacher les deux composants «FileListBox1» et «FilterComboBox1»comme suite: .clique par le bouton droit de la sourie sur le composant : « FileListBox1 » nommé « fichier » et choisir dans le menu contextuel : « mettre en arrière plan » et mettre ce composant au-dessous du « DirectoryListBox1 » (driverlist).On choisit dans sa propriété : « position poScreenCenter» 2. 7.108 - . .choisir dans le menu Delphi : fichier nouvelle fiche.On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).Directory) then ShowMessage(‘Archivage effectué avec succès') else ShowMessage('Archivage non effectué'). with fos do begin wFunc := FO_COPY. Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_archivage et on doit cliquer sur Oui pour cette demande de confirmation.tapez F12 pour revenir à la fiche et Insérer les composants suivants : 4. begin FillChar(fos. end. . 3. clique par le bouton droit de la sourie sur le composant : « FilterComboBox1» et choisir dans le menu contextuel : « mettre en arrière plan » et mettre ce composant au-dessous du « DirectoryListBox1 » (driverlist). Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément archivage (du sous menu outils) Ensuite : on écrit dans la procédure : fiche_archivage.

et dans le dossier « c:\scolarite\source » nommer l’unité:« apropos » Ensuite : on écrit le texte qu’on veut dans les label et modifier la couleur et la taille des labels par leurs propriété « FONT ». Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_cloture et on doit cliquer sur Oui pour cette demande de confirmation.on enregistre notre travail par le menu Delphi : fichier tout enregistrer. En fin : on enregistre tous le travail par : (le menu Delphi) : fichier tout enregistrer 2. Lancer l’éxécution par F9 et tester cette fiche (saisir des donner et vérifier les résultats de tous les traitements possibles) FICHE A PROPOS 1.On tape : Shift + F12 et on clique sur la « fiche_cloture » et on clique sur Ok.cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.showmodal .on peut insérer cette fiche par le menu Delphi : Fichier nouveau fiche boite à propos Ok Ensuite : dans l’inspecteur d’objet de la fiche on écrit dans la propriété «name»le nom:«fiche_apropos».double clique sur le « speedbutton1 » et écrire dans sa procédure : While not (table1. (Cette fiche est la carte visite du logiciel). showmessage('la table resultats est vidée').Apprendre Delphi7 par l’exemple 2. 2. Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément « a propos » (du sous menu « ? ») .On clique sur cette fiche (éviter de cliquer sur l’un de ses composants).cette fiche est maintenant prête à être liée avec le menu principal du logiciel comme suite : On tape les touches : Shift + F12 et on clique sur la « fiche_menu » et on clique sur Ok.On choisit dans sa propriété : « position poScreenCenter» 2. .delete . Remarques : 1.bmp bkclose BDE Table1 controleBD Dbgrid1 Databasename Tablename Active Datasource scolarite resultat True Datasource1 3. Ensuite : (le menu Delphi): fichier enregistrer.Insérer les composants suivants : Palette supplement Composant speedbutton1 Bitbtn1 Propriété caption yphgl kind Chapitre 3 : Logiciel gestion scolarité Valeur Vider Table Resultats C:\Program Files\Fichiers communs\Borland Shared\Images\Buttons\trash.109 - .Pour que la fiche cloture se place au milieu de l’écran si on l’appel lors du lancement de l‘éxécution du logiciel : . Ensuite : on double clique sur le composant « mainmenu1 » et double clique sur son élément Cloture (du sous menu outils) Ensuite : on écrit dans la procédure : fiche_cloture. .eof) do table1.

L’image de Logo : 1. (Delphi propose quelques images dans : « C:\Program Files\Fichiers communs\Borland Shared\Images\Splash\256Color ». Ensuite : on compile notre logiciel par les touches Ctrl + F9 et automatiquement Delphi vous demande la confirmation de la liaison entre la fiche_menu et la fiche_apropos et on doit cliquer sur oui pour cette demande de confirmation.pour que l’image s’agrandie si elle a une taille plus petite que la surface de son cadre on modifie sa propriété : Stretch true.dans la propriété picture du composant « image1 » on clique sur le bouton Charger et chercher l’image voulue.en fin clique sur Ouvrir ensuite sur Ok 3.Apprendre Delphi7 par l’exemple Chapitre 3 : Logiciel gestion scolarité Ensuite : on écrit dans la procédure : fiche_apropos. Lancer l’éxécution par F9 et tester cette fiche (vérifier les résultats de tous le traitements possibles) .showmodal .110 - . 4.pour que l’image occupe toute la surface de son cadre on modifie sa propriété : Autosize true. 2.

.111 - .

112 - . les fichiers à empaqueter. vous aurez sûrement envie de créer un d'installation (pour tous type de logiciels. les "Other application files". . en C++ Builder.exe principal.Apprendre Delphi7 par l’exemple Chapitre 4 : trucs & Astuces CRÉER UNE INSTALLATION Lorsque vous commencerez à faire des logiciels assez grand. cliquez sur Next. La case "The application doesn't have a main executable file" ne sera généralement pas cochée. qu'il soit réalisé en Delphi. le chemin de l'exécutable (le .Télécharger Inno Setup Il existe de nombreux outils permettant de créer une installation : InstallShield . Choisir le dossier d'installation du programme. Elle ne sert que pour les programmes ne possédant pas de . Vous devez indiquer tous On vous demande le nom du dossier dans le menu démarrer. Laisser cocher la case "Allow user to change the application directory".Créer une nouvelle installation Cochez l’option : "Create a new script file using the Script Wizard" : programme Cliquez sur OK.exe du logiciel). laisser cochée la case : elle permet de laisser la possibilité à l'utilisateur de démarrer le programme automatiquement à la fin de l'installation.exe en-dessous. le nom du créateur ainsi que le site web du programme. Ne cochez pas la case. Vous devez rentrer le nom de votre programme. le nom de votre programme avec le numéro de version. en Java…) On va montrer comment créer un programme d'installation pour le Logiciel Gestion Commerciale : 1. Cela permettra à l'utilisateur de changer le chemin d'installation. Inno Setup … 2. Donc : c:\commerce\source\commerce.

vous pourriez indiquer les bugs connus de votre programme.txt (ou . on demandera la langue désirée au début de l'installation.) Allow user to change Start Menu folder name : l'utilisateur peut changer le nom du dossier du menu démarrer.113 - .. Seuls ceux qui connaissent le mot de passe pourront installer votre programme. ( les DLL dont a besoin le programme. Si vous cochez plusieurs langues.. on vous demande le nom du programme d'installation. Ensuite. le programme d'installation a été généré ! . les images. cliquez sur Oui Au bout de quelques secondes. Par Le premier champ permet d'indiquer dans quel dossier devra être créé le programme d'installation. du gras. Les langues disponibles dans le programme d'installation. les améliorations apportées par la nouvelle version etc. La fenêtre suivante est la dernière : vous n'avez plus qu'à cliquer sur Finish ! Compiler l'installation. Les fichiers texte à afficher avant et après l'installation (ainsi que la license du programme).. C'est une barre de raccourcis située juste à droite du menu Démarrer.Apprendre Delphi7 par l’exemple Chapitre 4 : trucs & Astuces les fichiers dont a besoin votre programme pour fonctionner. Allow user to create a Quick Launch icon : l'utilisateur peut créer un raccourci dans la barre Quick Launch.. Allow user to disable Start Menu folder creation : l'utilisateur peut désactiver la création des raccourcis dans le menu démarrer. les sons etc. Vous pouvez indiquer n'importe quel fichier .rtf si vous voulez faire un peu de mise en forme comme mettre de la couleur.). Allow user to create a desktop icon : laisse la possibilité à l'utilisateur de créer un raccourci sur le bureau. le 4ème champ permet de protéger l'installation par mot de passe.ico) personnalisé pour l'installation. La partie "License File" sera utile notamment si vous distribuez votre programme sous license libre (GNU / GPL) comme ça se fait le plus souvent pour les programmes Open Source. Create an Internet Shortcut in the Start Menu folder : un lien vers votre site web sera ajouté au Menu Démarrer Create an Uninstall icon in the Start Menu folder : ajoute une icône de désinstallation dans le menu démarrer. exemple. Le troisième champ permet de choisir un fichier d'icône (.

III. 2. {25 est le numéro de page d’aide (Map) liée à ce message de dialogue} . Le curseur se pointe automatiquement en bas de page précédé par le symbole choisi (#).On choisit dans son menu : file new et on choisit le type du fichier Help (pour nous on choisit : Help Project) Et on donne un nom à ce projet (l’extension sera par défaut HLP). On écrit dans sa propriété : « helpcontext » le numéro de sa page d’aide (exemple 10). Donc on suit les étapes suivantes : On pose le curseur devant le mot clé d’une page choisie : Exemple : pour la page d’explication de la fiche Client on ecrit dans la premier ligne de la page le titre : Client ensuite on met le surseul du claveir avant ce mot. on écrit le mot identificateur de cette page d’aide (généralement ça sera le mot clé de la page.EXE proposé par l’environnement Delphi pour formater et compiler notre fichier Help (chemin de ce fichier : c:\program files\borland\delphi7\help\tools). donc pour notre exemple on ecrit Client). En fin on compile notre fichier en cliquant sur le bouton : SAVE AND COMPILE et notre fichier Help final sera généré (il faut que le compilateur indique 0 notes (pas d’erreurs de compilation)).Pour lier un bouton d’aide à une page d’aide (Map) on écrit dans son événement « Onclick » : application. 3.On écrit en suite dans chaque page l'explication du fonctionnement d'une fiche du logiciel. 3. 3. L’insertion d’une nouvelle page se fait comme suite : Choisir dans le menu Word : insertion saut saut de page Ok. On répète ce procédé pour toute les pages du fichier d‘aide. Une boite de dialogue s’affiche ou on écrit dans sa zone de texte « personnalisé » le symbole # et on ferme cette boite par Insérer.helpfile :=’c:\mes documents\Tp. Aussi on modifi la propriété KeyPreview true. et dans la zone « Mapped numeric value » on insére un numéro de cette page d’aide (un nombre entier >=1). [MBKO].On fini l’opération en enregistrant ce fichier Word avec format RTF (rich text format) (format text riche). l’indexation se fait par l’insertion dU symbole # pour indexer une page d’éxplication ( appelée Map ) attribuée à une fiche ou un message de dialogue. MTinformation. //5 est le numéro de la page d’aide (Map) liée à ce bouton d’aide Cette instruction peut être utilisée aussi dans le menu : ? Aide. Dans le menu on choisit : insertion note de bas de page.En haut de chaque page il faut écrire un mot clé qui va être indexé ensuite par le fichier d’aide. II.On insére le nombre de pages nécessaire à notre fichier d’aide (à savoir le nombre de fiches du logiciel qu’on veut éxpliquer).Apprendre Delphi7 par l’exemple Chapitre 4 : trucs & Astuces CONCEPTION DES FICHIERS HELP POUR LES LOGICIELS On procède en 3 étapes : I.Dans cette étape on doit lancer le compilateur HCW. DANS NOTRE LOGICIEL DELPHI : 1. DANS LE COMPILATEUR HCW : 1. 4. DANS L’EDITEUR DE TEXTE MICROSOFT WORD : 1.114 - .hlp’ .On fait la liaison entre notre logiciel et notre fichier Help en insérant la commande suivante dans l’événement « oncreate » du menu principal : application. 25) . 4.Pour lier un message dialogue à une page d’aide (Map) on écrit ce message comme suite : Messagedlg(‘je vous propose un Help’. cette page (10) s’affichera lors de l’éxécution du logiciel si on tape dans cette fiche sur la touche F1.5) .helpcommand(help_context. Pour notre page d’exemple on ecrira : Client) . 2. et cela en cliquant pour chaque Map sur le bouton ADD et on insère dans la zone « Topic ID » le mot clé du Map (l’un des mot clés d’indexation écrit dans les bas de pages en Word qu’on les a précédé par les symboles #.Une fenêtre d’édition du Help s’affiche et on manipule les Boutons à droite comme suite : Clique sur le bouton FILE ou on se pointe vers le fichier RTF contenant le texte d’aide crée en Word et cela en cliquant sur le bouton ADD (possibilité d’addition de plusieurs fichiers d’aide RFT).hlp dans le dossier mes documents}. Clique sur le bouton MAP ou on va indexer les pages d’éxplication des fiches et messages de dialogue.pour lier une fiche à sa page help correspendante : On clique sur cette fiche en évitant tous ses composants. 2. {En supposant que le fichier Help été enregistré sous le nom Tp.

Après on doit installer ce composant pour que Delphi pourra l'utiliser (après l'installation de ce composant. . cela assure la modification de l'interface de tous les autres fiches suivantes.Après l'insertion de ce composant on choisi le modele d'interface voulu dans sa propriété Clic Ici (on trouve tous les modeles proposés par skindata dans le dossier skins du chamin d’installation de skindata) On suite on choisi dans la propriété : On lance l'execution et tous le logiciel changera d'interface. . La forme de la fiche après avoir utiliser le composant SKINDATA . .Il vaut mieu inserer le composant skindata dans la premiére fiche lancée du logiciel qui sera generalement la fiche de mot de passe. il apparaît a la fin de la palette des composants comme un objet a inserer dans une fiche du votre application).on doit avant telecharher ce composant d'un site web quelconques (plusieurs sites de developpement proposent ce composant avec une grande variétés d'interfaces possible).115 - .Apprendre Delphi7 par l’exemple Chapitre 4 : trucs & Astuces SKIN DATA C'est un utilitaire qui aide a modifier l'interface d'un logiciel (améliorer la partie visuelle du logiciel) .

116 - .Apprendre Delphi7 par l’exemple QUELQUES MODÈLES Chapitre 4 : trucs & Astuces Une fiche avec le modele STEEL Une fiche avec le modele DEEP Une fiche avec le modele RealOne Une fiche avec le modele MSN .

.117 - .

Font : pour manipuler le format du texte. Caption : pour donner un texte d’interface au bouton Checked : contrôle l’état (cocher ou décocher) Caption : pour introduire le texte d’interface. Shortcut : affecter un raccourci clavier à cet élément.118 - . (bkclose pour fermer une fiche) Gliph : affecter une image (icône) à ce bouton. Onclick Onkeydown Onmousemove Onclick Onmousemove IMAGE Image d’ariere plan ou de logo . Onchange Onkeydown. Imageindex : pour lier une image à cet élément. SUPPLEMENT BITBTN Bouton autoprogrammé SPEEDBUTTON Bouton d’action favorisé Kind : choisir le comportement du bouton. LABEL Éclaircir l’interface EDIT Zone de saisie BUTTON Bouton encapsulant source d’action un code Onclick Onmousemove. Hint : introduire un texte d’aide au bouton. Items : (ou double clique sur le PopupMenu) pour afficher l’éditeur du menu turbo. Images : pour lier un composant image (avec sa gamme des icônes) au MainMenu. Showhint : pour afficher le texte d’aide. EVENEMENTS MAINMENU Création d’un principal menu POPUPMENU Création d‘un turbo menu Onclick : pour chaque élément du menu turbo on introduit dans cet événement le code source adéquat. Onclick Onmousemove. Pour chaque élément du menu : Caption : pour donner un nom à l’élément. Font : pour manipuler le format du texte. Text : représente le texte saisie (propriété à manipuler) Caption : pour donner un nom d’interface au bouton Font : pour manipuler le format du texte. Text : contient la valeur choisie parmi celles de la liste Onclick : pour chaque élément du menu principal on introduit dans cet événement le code source adéquat. Align : l’image occupera tous l’espace de la fenetre (alclient) Picture : choisir une image dans le disque dur. Popupmenu : assure la liaison avec un PopupMenu. Onclick Onkeydown Onmousemove CHECKBOX Case à cocher (choix libre) RADIOBUTTON Case à option (choix exclusif) COMBOBOX Liste déroulante de choix Onclick Onmousemove. Imageindex : pour lier une image à cet élément. Checked : pour voir si le composant est coché ou non Items : pour introduire les éléments de la liste ligne par ligne. Caption : pour donner un nom d’interface au composant. Showhint : afficher le texte d’aide Stretch : la taille de l’image sera égale la taille du cadre Autosize : agrandir l’image a la taille de son cadre. Pour chaque élément du menu : Caption : pour donner un nom à l’élément.Apprendre Delphi7 par l’exemple Annexe LES COMPOSANTS DELPHI LES PLUS UTILISÉS COMPOSANT PROPRIETE STANDARD Items : (ou bien double clique sur le MainMenu) pour afficher l’éditeur du menu principal. Hint : pour introduire le texte d’aide. Images : pour lier un composant image (avec sa gamme des icônes) aux PopupMenu. Shortcut : affecter un raccourci clavier à cet élément. Onchange Onclick Onkeydown.

ACCEESBD DATASOURCE Composant intermédiaire d’accès BD Dataset : représente la source de données (table. SQL : cette propriété lance une petite fenêtre d’édition du script SQL de cette requête. Pour ajouter un nouveau bouton on clique par le bouton droite de la sourie sur ce composant et on choisit sur le menu turbo l’élément « nouveau bouton ». Active : cette propriété provoque le lancement l’animation (active :=true) Ce composant contrôle la date sous forme d’un calendrier. Afterinsert ……. audio…. ANIMATE Propose des d’animation Clique par le bouton droite de la sourie sur le composant et choisir dans le menu turbo « nouvelle page ». la date choisie sera dans sa propriété « date ».play . . Databasename : l’alias de la (les) table(s) qu’on va manipuler dans la requête. mais on peut manipuler sa position par la propriété « Align ». Afterinsert… QUERY Requête SQL Beforeopen. Name : le nom de programmation de la table. CommonAVI : cette propriété propose une liste des effets d’animation. Afteredit Beforeinsert.Apprendre Delphi7 par l’exemple Annexe WIN32 PAGECONTROL Propose des pages à onglets IMAGELIST Liste d’icônes à introduire dans un menu ou une barre d’outils. L’instruction qui déclenche l’effet multimédia est: Mediaplayer1. Params : pour donner le type de chaque paramètre. Par le double clic sur ce composant on pourra créer une procédure « Ontimer » qui contiendra les instructions à répéter consécutivement. Devisetype : représente le type du fichier multimédia à manipuler. Afteredit Beforeinsert. Beforeopen. à la fin il faut supprimer le double flou de chaque image par le bouton « supprimer ». requête SQL …) liée avec ce composant.119 - .. à la fin on fait la liaison entre une gamme d’images préparée dans le composant «imagelist» et la barre d’outils par sa propriété «images» SYSTEME Ce composant assure la répétition d’une action dans un intervalle de temps fixé par la propriété « interval ». Filename : cette propriété assure la liaison entre ce composant et un fichier vidéo. Double clique sur le composant et dans la boite de dialogue qui s’affiche on clique sur le bouton «ajouter » pour insérer une nouvelle image à la gamme déjà choisie. Afteropen Beforeedit. Ce composant se place automatiquement dans la partie haute (entête) de la fiche. Qu’on va utiliser. Active :=true pour activer la connexion à la BD. Afteropen Beforeedit. TIMER Boucle chronologique MEDIAPLAYER Animation multimédia Onclick BDE TABLE Composant d’accès à une table d’une BD Databasename : représente l’alias de la table Tablename : la table à manipuler. TOOLBAR Création d’une d’outils barre Onclick OnMouseMove. Active :=true pour activer la requête.on clique sur le cadre intérieur de chaque page « tabsheet » et on introduit dans sa propriété « caption » le nom de la page. OnDataChange OnUpDateData OnTimer Onchange Onmousemove Onchange effets Onstart Onstop DATETIMEPICKER Pointeur vers une date Onchange Onclick Onkeydown.

OnClick OnZoom QUICKREP Etat d’impression QRLABEL Interface de l’état QRDBTEXT Imprimer les données d’un champ d’une BD QRSHAPE Formes d’encadrement Bands : pour introduire les bandes dans l’état Dataset : représente la source de données à imprimer Zoom : contrôle la taille de l’état à la conception Caption : insertion du texte à imprimer (texte fixe). Font : pour manipuler le format du texte à imprimer. On double clique sur ce composant et dans la boite de dialogue qui s’affiche on clique sur le bouton ajouter de l’onglet série (inférieur) pour choisir le type de la représentation graphique. Datafield : représente le champ de données à afficher. Datasource : représente la source de données. Ce composant aide à encadrer les éléments de l’état d’impression pour mieux les présenter. DBCHART Représentation graphique d’une source de données. La propriété « filename » donne le nom et l’emplacement du fichier ouvré. OnColExit OntTitleClick Datasouce : cette propriété sera liée avec le composant DATASOURCE représentant la source de données à contrôler. DBCOMBOBOX Affiche un champ d’une source de données et propose une liste de valeurs à introduire. La propriété « color » donne les paramètres de la couleur choisie.120 - . utilise les DLL Windows pour afficher la boite de dialogue standard de manipulation de la police d’écriture. DBEDIT Affiche un champ d’une source de données. Items : contient la liste des valeurs à proposer à introduire dans la BD. DIALOGUES Onpreview Beforeprint Onprint Onprint OPENDIALOG Boite dialogue ouvrir FONTDIALOG Boite dialogue police COLORDIALOG Boite dialogue couleur Ce composant utilise les DLL Windows pour afficher la boite de dialogue standard d’ouverture d’un fichier. Onchange Onclick Onkeydown. DBLOOKUPCOMBOBOX Annexe Datasouce : cette propriété sera liée avec le composant DATASOURCE représentant la source de données à afficher. Datafield : représente le champ de données à afficher. Datasource : représente la source de données. Afficher un champ d’une source de données et proposer une liste de valeurs à introduire à la BD d’une autre source Onclick Onkeydown. Datafield : représente le champ de données à afficher. Listesource : la source des données de la liste. Onclose Onshow Onclose Onshow Onclose Onshow . La propriété « font » donne les paramètres de la police choisie.Apprendre Delphi7 par l’exemple CONTROLBD DBGRID Affichage de la source de données (champs et enregistrements) DBNAVIGATEUR Représente les principaux opérations de manipulation des BD. Datasource : représente la source de données. Datasource : représente la source de données. utilise les DLL Windows pour afficher la boite de dialogue standard de manipulation de la couleur. Datafield : représente le champ de données à afficher. Listefield : le(s) champ(s) dans la liste Keyfield : le champ qu’on affichera sa valeur. et dans l’onglet série (supérieur) On choisit dans le sous onglet source de données dans la liste l’élément « dataset » et on fait la liaison avec notre data source et on choisit le champ d’étiquettes « libellés » et le champ de quantifications « sectorielle » QREPORT Beforeaction onclick Onchange Onkeydown. Sa propriété « shape » nous donne le choix du style d’encadrement.

Sign up to vote on this title
UsefulNot useful