Académique Documents
Professionnel Documents
Culture Documents
Support 1 Delphi
Support 1 Delphi
Initiation Delphi
1 AVERTISSEMENT
Ce document est distribu uniquement lors d'un cycle de formation Delphi ne peut tre
reproduit partiellement ou intgralement: tous droits rservs.
La connaissance pralable d'un langage de programmation structure (de prfrence
Pascal) est fortement recommande, mais non indispensable.
Conventions:
le texte entre crochets reprsente une option facultative,
le texte en italique des lignes de programme
page 2/65
2 INTRODUCTION
Delphi est un systme de dveloppement visuel rapide sous Windows (Rapid
Application Development) qui permet de crer des applications fentres directement
excutables (.EXE) et redistribuables librement sous Windows ou DOS. Il est noter qu'i
existe une version pour Linux nomme KYLIX (compatible avec les composants CLX, il
suffit de recompiler). Sa simplicit d'emploi autorise une utilisation immdiate, car il suffit de
cliquer-glisser des composants dans une fiche et de grer quelques vnements pour crer des
applications simples. Des assistants, modles et tuteurs interactifs facilitent la prise en main
du logiciel.
Delphi utilise le langage Pascal Orient Objet (il est toutefois possible d'utiliser
d'anciennes sources en Pascal standard grce au compilateur en ligne de commande). Ce
langage est facile apprendre et beaucoup plus simple que le C++ traditionnel. Les objets
utiliss ont des proprits et des mthodes. Les proprits sont les caractristiques de l'objet
(couleur, taille, ...) tandis que les mthodes sont les procdures (classiques ou
vnementielles) et fonctions qui y sont rattaches.
Des outils puissants sont rattachs Delphi. Le canevas facilite les graphismes et vite
l'appel aux API de Windows (cette solution reste videmment possible). Les principales
botes de dialogue de Windows existent en tant qu'objets et sont facilement rutilisables.
L'utilitaire BDE permet la cration et l'accs ais aux bases de donnes de tous types. La
liaison avec ACCESS se fait directement, grce un driver natif intgr.
Il est facile d'crire des DLL utilisables par n'importe quel autre programme sous
Windows. Ces DLL peuvent contenir des fiches Delphi, des procdures, des donnes ou des
ressources graphiques (bitmaps, icnes, curseurs).
La cration d'objets (visuels ou non) rutilisables est un gain de temps apprciable pour
le dveloppement. L'intgration des objets Active X peut complter la bibliothque existante.
Il existe d'autres systmes de dveloppement rapide sous Windows. Delphi est
particulirement bien plac:
moins de lignes de code et rapidit de compilation
possibilit d'utiliser des procdures vnementielles partages
notion de modles rutilisables (fiches, menus, objets)
orientation objet totale et native
richesse des composants fournis: pas d'OCX acheter en complment
assembleur intgr, compilateur en ligne de commande
dbogage facile au niveau du source et du processeur
possibilit d'allocation dynamique de la mmoire en utilisant les pointeurs
page 3/65
3 Nouveauts
Consulter l'aide en ligne sous "nouveauts" On note des:
page 4/65
PRESENTATION
Sans le savoir, vous utilisez des objets dans votre ordinateur. Par exemple, vous dsirez
changer la carte graphique. C'est un objet: vous ne connaissez pas exactement son
fonctionnement interne mais vous dsirez des rsultats. Vous pouvez interchanger facilement
cet objet puisque l'interface est standard (connecteurs). Vous n'avez donc pas besoin de
changer toute l'unit centrale ou de faire des tudes pousses en lectronique pour ce faire. Il
suffit d'changer la carte par une autre plus performante.
L'avantage de cette notion d'objet est la possibilit de partager les composants avec
d'autres utilisateurs. Vous pouvez donner votre ancienne carte vido l'un de vos
collaborateurs. D'autre part, il n'est pas ncessaire de connatre le dtail du fonctionnement de
l'objet pour l'utiliser. La maintenance est facilite, il suffit d'changer l'objet sans toucher au
reste de l'application.
4.2
CONCEPTS DE BASE
Proprits
simples
Objet = entit
Procdures
Mthodes
vnementielles
Fonctions
4.2.1 Proprits
Ce sont les composants de l'objet. Sa taille, sa couleur, son nom, ... sont des proprits.
Les proprits sont initialises la cration de l'objet et certaines peuvent tre modifies par
programmation. Delphi possde un diteur de proprits qui permet de les modifier en phase
de conception de projet.
4.2.2 Mthodes
Les mthodes relvent du comportement de l'objet: elles recensent ce que l'objet "sait"
faire. S'il sait par exemple faire une multiplication, le nom du module de programme concern
est appel mthode.
page 5/65
4.2.2.1 Fonctions
Les fonctions sont des modules (ou sous-programmes) qui retournent une seule valeur
ou rsultat aprs acceptation d'un certain nombre d'arguments (0 n).
4.2.2.2 Procdures simples
Les procdures sont des modules qui effectuent des actions. Elles acceptent galement
des arguments. Elles peuvent retourner des arguments modifis (s'ils sont dclars en donnersultat).
4.2.2.3 Procdures vnementielles
Elles conditionnent les ractions de l'objet vis--vis des actions extrieures (clavier,
souris, ...). Ce sont des procdures appeles par un dclencheur. Windows recense un grand
nombre d'vnements dont la nature est prcise par un systme de messages internes. Par
exemple, le fait d'appuyer sur une touche du clavier ou de dplacer la souris provoque
l'mission d'un message interne Windows qui pourra tre trait par la procdure
vnementielle.
4.2.3 Programmation structure
Contrairement au premiers langages (basic) qui utilisaient des tiquettes avec des
instructions de saut de type "goto" o l'on risquait un enchevtrement dans le droulement du
programme, la POO demande une programmation modulaire et le langage Pascal est
particulirement adapt. L'criture d'un programme se fait sous forme de blocs hirarchiss,
ce qui permet une meilleure comprhension. L'indentation des modules donne une lecture
proche du dveloppement algorithmique.
4.2.4 L'encapsulation
C'est le concept de base de la POO. L'ide est de rassembler les donnes et les modules
de programme dans une seule et mme structure appele objet. Les donnes sont appeles
"proprits" et les modules sont les "mthodes". On peut utiliser des mthodes de l'objet sans
connatre le dtail de l'implmentation de chacune d'elle. L'encapsulation protge les donnes
contre leur utilisation par d'autres modules extrieurs.
4.2.5 L'hritage
Les objets sont capables d'tre drivs partir d'objets prexistants. Les objets "fils"
hritent les proprits et mthodes de leur parent de faon automatique. Il suffit alors de
rajouter des proprits et mthodes spcifiques: ce procd est appel programmation par
exception. De plus, tous les changements effectus dans l'objet "parent" sont rpercuts
automatiquement sur les objets "descendants" sans manipulation supplmentaire.
page 6/65
4.2.6 Le polymorphisme
Le nom d'une mthode existante peut tre rutilis dans un objet "fils" en dclarant une
implmentation diffrente. Le polymorphisme est la capacit de dsigner des mthodes
diffrentes (bien que portant le mme nom) en fonction de l'objet concern. Par exemple le
signe "+" peut servir l'addition, la concatnation ou l'incrmentation d'une date.
Dans le cas de redfinition(OVERRIDE) d'une mthode, il est possible de rutiliser le
code hrit (INHERITED) et d'ajouter simplement quelques lignes (qui pourront par exemple
redfinir certaines proprits).
4.2.7 Dveloppeur ou utilisateur?
On distingue deux catgories de personnes. Les dveloppeurs qui connaissent bien la
POO et qui crent des objets et les utilisateurs qui construisent leurs applications partir de
ces objets prfabriqus.
4.3
LEXIQUE
La source principale de confusion pour les dbutants en POO est le grand nombre de
nouveaux termes techniques
4.3.1 Classe (CLASS)
C'est l'ensemble des dfinitions, proprits et mthodes qui serviront crer l'objet. Elle
dfinit la structure de l'objet et quelles en seront les proprits. Ses modifications seront
rpercutes sur les classes descendantes.
4.3.2 Objet (OBJECT)
C'est une instance de la classe. Il a une existence physique et occupe de la place en
mmoire. Il est cr partir d'une classe. Toutes les modifications effectues en excution
n'affectent en rien les descendants de sa classe.
4.3.3 Instanciation
C'est le processus qui cre en mmoire un objet bas sur une classe.
page 7/65
page 8/65
4.4
CONCLUSION
Le but de la POO est de crer des composants rutilisables pour faciliter la cration de
projets par assemblage d'lments prfabriqus.
Les avantages sont normes:
rutilisation de l'existant sans limite (pas d'critures rptitives),
dveloppement RAD visuel possible (une application peut se crer comme un
assemblage lors d'un puzzle),
cloisonnement de scurit entre les donnes (vite les effets de bord),
facilit d'volution (il suffit de placer des objets plus volus),
et de maintenance (possibilit de tester individuellement chaque objet).
L'hritage et le polymorphisme accroissent de faon sensible la productivit du
programmeur.
page 9/65
action
slection
dslection
ouverture
fermeture
dplacement
duplication
interrogation
destruction
insertion
manipulation souris
clic sur l'objet
rsultat
page 10/65
6 L'cran de Delphi
On voit la barre de titre, la barre des menus, la barre d'outils ( gauche), la palette des
composants, la fentre principale, l'diteur de code (en dessous) et l'diteur de proprits (et la
vue arborescente des objets). Une fiche est cre d'office, c'est la fentre principale de
l'application (modifiable).
Touches de fonction importantes:
F12: bascule entre l'affichage de la fiche et son code
F11: fait apparatre l'inspecteur d'objets.
page 11/65
6.1
page 12/65
6.2
C'est une barre d'outils de type particulier: on y trouve les objets qui existent dj dans
Delphi. Les onglets correspondent aux catgories de composants: cliquer sur l'onglet pour
changer de palette. Pour placer un composant dans la fiche, on peut cliquer sur un composant
puis cliquer dans la fiche (cliquer-glisser pour redimensionner de suite). Il est galement
possible de double-cliquer sur un composant: il se mettra automatiquement au centre de la
fiche en cours. Pour placer plusieurs composants identiques, slectionner le type avec majclic.
Il existe divers types de composants:
visuels: ils sont visibles l'excution (sauf indication contraire); certains d'entre eux
peuvent prendre le "focus", c'est dire tre slectionns par l'utilisateur
non-visuels: ne sont visibles qu'en phase de cration; ils disparaissent l'excution.
Les composants peuvent se reproduire avec copier-coller.
Voici les composants les plus utiliss dans une application standard.
page 13/65
Composant
Cadre
MainMenu
PopupMenu
Label
Edit
Memo
Button
CheckBox
RadioButton
ListBox
ComboBox
ScrollBar
GroupBox
RadioGroup
Panel
ActionList
Utilisation
Composant cadre (nouveau): sert de conteneur de composants
Menu principal
Menu surgissant
Texte en lecture seule pour l'utilisateur (ex: titre)
Texte en lecture-criture modifiable par l'utilisateur (zone de saisie)
Mmo: comme le composant prcdent, mais possibilit d'utiliser plusieurs
lignes de texte
Bouton d'action: c'est le composant le plus utilis
Case cocher. Propose une option que l'utilisateur peut faire passer de Oui
Non ou de Vrai Faux. Les cases cocher peuvent servir afficher un
groupe de choix qui ne sont pas mutuellement exclusifs. Les utilisateurs
peuvent slectionner plusieurs cases cocher dans un groupe.
Bouton radio. Propose une option que l'utilisateur peut faire passer de Oui
Non ou de Vrai Faux. Les boutons radio peuvent servir afficher un groupe
de choix qui sont mutuellement exclusifs. Les utilisateurs ne peuvent
slectionner qu'un seul bouton radio par groupe.
Bote liste. Affiche une liste droulante de choix.
Bote options. Affiche une liste de choix en combinant une bote liste et une
bote de saisie. Les utilisateurs peuvent saisir des donnes dans la bote de
saisie ou slectionner un lment dans la zone bote liste.
Barre de dfilement. Propose un moyen de modifier la zone visualise d'une
liste ou d'une fiche. Une barre de dfilement peut galement tre utilise pour
se dplacer par incrments dans un intervalle de valeurs.
Bote groupe. Sert de conteneur des options associes dans une fiche.
Groupe de boutons radio. Cre une bote groupe qui contient des boutons
radio sur une fiche.
Volet. Cre dans une fiche des volets pouvant contenir d'autres composants.
Les volets peuvent servir crer des barres d'outils ou des lignes d'tat.
Composant permettant la centralisation du code vnementiel
page 14/65
MaskEdit
StringGrid
DrawGrid
Image
Shape
Bevel
ScrollBox
CheckListBox
Splitter
StaticText
ControlBar
Application
Events
Value List Editor
Labeled Edit
ColorBox
Chart
ActionManager
ActionMainMenu
Bar
Utilisation
Bouton bitmap. Cre un composant bouton pouvant afficher une image.
TurboBouton. Propose un bouton pouvant afficher une image mais pas un
libell. Les TurboBoutons sont frquemment regroups dans un volet afin
de crer une barre d'outils.
Comme le composant "Edit" mais permet une saisie formate
Grille de chanes. Cre une grille pouvant tre utilise pour afficher des
donnes chanes de caractres en lignes et en colonnes comme dans un
tableur.
Grille d'affichage. Cre une grille permettant d'afficher des donnes en
lignes et en colonnes. Plus difficile utiliser que le composant prcdent.
Image, gre maintenant galement les jpeg
Forme. Dessine des formes gomtriques : cercle ou ellipse, carr ou
rectangle (arrondi ou non).
Biseau. Cre des lignes ou des botes avec un aspect tridimensionnel
cisel.
Bote de dfilement. Cre un conteneur redimensionnable affichant
automatiquement des barres de dfilement lorsque c'est ncessaire.
Bote liste de cases cocher. Affiche une liste droulante semblable une
bote liste, mais avec une case cocher ct de chaque lment.
Diviseur. Plac sur une fiche entre deux contrles aligns, il permet aux
utilisateurs de redimensionner les contrles, l'excution, en faisant glisser
la ligne de division.
Texte statique. Un composant texte non modifiable, comme le composant
Label, mais contenant un handle de fentre, ce qui est utile quand la touche
raccourci du composant doit appartenir un contrle fentr. Utilisez le
composant StaticText pour donner l'utilisateur des informations sur l'tat
en cours de l'application.
Composant utilis pour contenir des barres d'outils
Contrle des vnements au niveau application (nouveau)
Gre des couples: cl, valeur
Zone de saisie avec tiquette
Liste de couleurs pour choix
Graphique
Composant centralisateur de procdures vnementielles
Barre de menu d'ActionManager
page 15/65
ActionToolBar
CustomizeDlg
page 16/65
Composant
TabControl
PageControl
ImageList
RichEdit
TrackBar
ProgressBar
HotKey
Animate
DateTimePicker
MonthCalendar
TreeView
ListView
HeaderControl
StatusBar
ToolBar
CoolBar
PageScroller
ComboBoxEx
Utilisation
Onglets: permet d'accder des pages d'informations
Pages: comme le contrle prcdent, mais il y a de la place pour placer
des composants
Liste d'images: sert souvent stocker les images des boutons des barres
d'outils modernes
Editeur de texte format: crer un logiciel de traitement de textes devient
facile avec ce composant
Glissire de rglage: permet l'utilisateur de dfinir une valeur
analogique
Barre de progression: sert souvent indiquer la proportion d'achvement
du travail
Raccourci-clavier qui peut tre dfini par l'utilisateur
Clip vido muet
Bote liste permettant la saisie de dates ou d'heures.
Calendrier: l'utilisateur peut slectionner une date ou une plage de dates
Vue arborescence
Affichage mode liste
Entte de colonne
Barre d'tat
Barre d'outils nouvelle gnration
Barres d'outils multiples style "internet explorer'
Zone d'affichage pouvant servir aux barres d'outils
Liste droulante avec images
page 17/65
Grce aux composants de la page Systme de la palette des composants, il est possible
d'utiliser dans une application Delphi des contrles spcialiss du systme.
Composant
Timer
PaintBox
Utilisation
Minuterie: permet de dclencher des vnements intervalles rguliers
Bote peindre. Spcifie une zone rectangulaire de la fiche constituant la
dlimitation des dessins de l'application.
MediaPlayer
Multimdia. Affiche un contrle de style tlcommande pour lire ou
enregistrer des fichiers multimdias son ou vido.
OleContainer
Conteneur OLE. Cre dans une fiche une zone client OLE (Incorporation
et Liaison d'Objet).
DdeClientConv Conversation client DDE. tablit une connexion client avec une
application serveur DDE (change Dynamique de Donnes).
DdeClientItem lment client DDE. Spcifie les donnes du client DDE (change
Dynamique de Donnes) transfrer lors d'une conversation DDE.
DdeServerConv Conversation serveur DDE. tablit une connexion serveur avec une
application client DDE (change Dynamique de Donnes).
DdeServerItem lment serveur DDE. Spcifie les donnes du serveur DDE (change
Dynamique de Donnes) transfrer lors d'une conversation DDE.
page 18/65
Utilisation
Bote de dialogue d'ouverture.
Bote de dialogue d'enregistrement.
Bote de dialogue d'ouverture d'image avec prvisualisation
Bote de dialogue d'enregistrement d'image avec prvisualisation
Bote de dialogue des polices
Bote de dialogue des couleurs
Bote de dialogue d'impression
Bote de dialogue de configuration d'impression.
Bote de dialogue de recherche
Bote de dialogue de remplacement
page 19/65
DBLookupCombo
TabSet
Outline
TabbedNotebook
Notebook
Remplacez-le par
DBLookupListBox
DBLookupComboBox
TabControl
TreeView
HeaderControl
PageControl
PageControl
Utilisation
Liste de rfrence de base de donnes. Bote de liste oriente donnes
pour afficher l'excution les valeurs trouves dans les colonnes d'une
autre table.
Bote options de rfrence de base de donnes. Bote options
oriente donnes pour afficher l'excution les valeurs trouves dans
les colonnes d'une autre table.
Onglets. Cre des onglets semblables ceux d'un classeur. Le
composant TabSet peut s'utiliser avec le composant Notebook pour
permettre aux utilisateurs de changer de page.
Arborescence. Affiche des informations sous forme d'arborescences de
diffrents formats.
Classeur onglets. Cre une zone d'affichage des donnes. Les
utilisateurs peuvent redimensionner chaque section de cette zone pour y
afficher diffrentes quantits de donnes.
Classeur. Cre un composant pouvant contenir plusieurs pages. Le
composant TabSet peut s'utiliser avec le composant Notebook pour
permettre aux utilisateurs de changer de page.
page 20/65
Composant
Header
FileListBox
DirectoryListBox
DriveComboBox
FilterComboBox
Utilisation
En-tte. Cre une zone d'affichage des donnes. Les utilisateurs peuvent
redimensionner chaque section de cette zone pour y afficher diffrentes
quantits de donnes.
Bote liste de fichiers. Affiche une liste droulante des fichiers du
rpertoire en cours.
Bote liste des rpertoires. Affiche la structure des rpertoires du lecteur
actif. Les utilisateurs peuvent changer de rpertoire dans une bote liste
des rpertoires.
Bote options des lecteurs. Affiche une liste droulante des lecteurs
disponibles.
Bote options de filtrage. Spcifie un filtre ou un masque afin
d'afficher un sous-ensemble des fichiers.
page 21/65
6.3
L'inspecteur d'objets
L'inspecteur d'objets de Delphi est la passerelle entre l'aspect visuel de votre application
et le code qui lui permet de fonctionner.
L'inspecteur d'objets vous permet de :
dfinir en mode conception les proprits des composants que vous placez sur une
fiche (ou de la fiche elle-mme),
crer les gestionnaires d'vnements.
Le slecteur d'objet en haut de l'inspecteur affiche est une liste droulante contenant
tous les composants de la fiche active, ainsi que leur type. Vous pouvez ainsi slectionner
rapidement diffrents composants de la fiche active.
Vous pouvez modifier la largeur des colonnes de l'Inspecteur d'objets en faisant glisser
la ligne de sparation vers une nouvelle position.
page 22/65
Page Proprits
Page Evnements
La page Evnements de l'Inspecteur d'objets vous permet d'associer des vnements aux
objets de votre projet. Trois utilisations sont possibles:
UTILISATION
double-clic cot de l'vnement
EFFET
cration automatique d'un entte de procdure
par dfaut
introduction d'un nom de procdure
cration automatique d'un entte de procdure
avec le nom choisi
ouverture d'une liste droulante (s'il y a choix d'une procdure commune plusieurs
dj des procdures compatibles)
vnements
page 23/65
6.6
L'diteur de code
Dans certains cas, on voit dans la partie de gauche l'explorateur de code. Il facilite la
navigation dans vos fichiers. La fentre de l'explorateur de code contient une arborescence qui
montre tous les types, classes, proprits, mthodes, variables globales et routines globales
dfinis dans votre unit. Il montre galement les autres units listes dans la clause uses
L'diteur de code est un diteur complet. Il vous permet d'accder au code (source) des
modules de votre projet. De nombreuses commandes sont disponibles dans le menu
contextuel de l'diteur de code. Pour personnaliser l'diteur de code, utilisez la bote de
dialogue "Outils" - "Options d'environnement". Pour obtenir de l'aide sur un lment dans
l'diteur de code, placez le pointeur de souris sur le terme qui vous intresse et appuyez sur
F1.
Lors de la compilation, si vous recevez un message d'erreur, Delphi :
affiche l'erreur dans la bote de message de l'diteur de code
met en surbrillance la ligne de code qui pose problme.
page 24/65
7 Premier projet
7.1
Notions lmentaires
On remarque la barre de titre, la case systme comportant une icne et des boutons pour
agrandir, rduire ou fermer la fentre.
L'inspecteur d'objets permet d'agir sur les proprits et mthodes vnementielles de
l'objet.
page 25/65
Il est vident que cette premire application n'est pas encore excutable. Pour ce faire, il
est ncessaire de compiler (traduire en binaire). Nous n'avons pas crit une ligne de
programme, le systme s'en est charg. Examinons les lignes de code gnres (.PAS).
Lignes de code
Explications
unit Unit1;
interface
uses
Windows, Messages, SysUtils,
Classes, Graphics, Controls,
Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Dclarations prives }
public
{ Dclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
end.
Fin du module
page 26/65
nom du programme
uses
Forms,
Unit1 in 'UNIT1.PAS' {Form1};
modules utiliss
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1,
Form1);
Application.Run;
end.
excution de l'application
Fin du programme principal
On peut galement visualiser le code de la fiche (.DFM), grce l'option "voir comme
texte" de son menu contextuel.
object Form1: TForm1
Left = 295
Top = 132
Width = 696
Height = 480
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 120
TextHeight = 16
end
Revenir la fiche avec "voir comme fiche" du menu contextuel.
Pour enregistrer le projet, choisir "enregistrer projet sous" dans le menu fichier. Il
faudra donner un nom aux diffrents modules (.PAS) et au projet (DPR).
page 27/65
7.2
Excution
Si l'on dsire des renseignements sur l'erreur, il suffit cliquer sur le message d'erreur ou
d'avertissement et d'appuyer sur la touche F1 (aide en ligne) et on obtient la fentre suivante:
page 28/65
Signification
options de compilation et informations de versions
source du projet
programme excutable compil
unit compile
dfinition de la feuille
source pascal
ressources: icne de l'application
configuration du compilateur
diagrammes
Pour examiner certains de ces fichiers, il est pratique d'utiliser l'explorateur Windows.
Mettre un raccourci vers le bloc-notes (notepad.exe) dans le rpertoire SendTo.
page 29/65
8 Modification du projet
Relancer Delphi et ouvrir le projet prcdent. Nous dsirons prsent installer un
bouton qui change la couleur du fond de la fentre en rouge.
8.1
Choisir un bouton ("Tbutton") par un clic dans la palette standard et cliquer dans la
fiche. On peut galement double-cliquer dans la palette et le bouton se mettra
automatiquement au milieu de la fiche. Ce bouton se nomme "Button1" et ne fait rien pour
l'instant. Si l'on examine le module source, on trouve sa dclaration dans les types.
Deux proprits importantes: "caption" qui permet de changer l'affichage du texte sur le
bouton et "name" qui est le nom qui servira adresser l'objet. Changer le nom du bouton (c'est
indispensable pour les projets importants) avec quelque chose de plus significatif: BtRouge.
On constate que la proprit "caption" est galement modifie. Changer cette proprit pour
que le bouton affiche "Colorer en rouge". Le composant peut tre redimensionn grce ses
poignes (visibles quand slectionn).
8.2
La liste des vnements peut s'observer grce l'inspecteur d'objets. Pour crer une
procdure simple "OnClic", il suffit de double-cliquer sur le bouton.
Le code suivant est gnr:
procedure Tform1.BtRougeClick(Sender: Tobject);
begin
end;
Cette procdure vnementielle est prte accueillir une ou plusieurs lignes
d'instructions entre "begin" et "end". Si l'on dsire rajouter des commentaires (et c'est
indispensable pour une bonne maintenance), utiliser les mthodes suivantes:
{ commentaires: plusieurs lignes possibles }
(* commentaires: plusieurs lignes possibles *)
// commentaires: sur une seule ligne
Si je ne connais pas la faon de colorer la fentre, je vais chercher les proprits de
l'objet Tform grce l'aide en ligne. Il suffit de slectionner "Form1" et d'appuyer sur le
touche F1. Ensuite, cliquer sur "proprits". La liste affiche "color": cliquer sur cette
proprit. On trouve que "clRed" correspond au rouge.
page 30/65
8.3
Amliorations
Il est dommage de ne pas avoir de bouton pour remettre la couleur d'origine et un autre
pour quitter le programme. On pourrait double-cliquer sur la fiche pour rtablir la couleur
d'origine.
Slectionner la fentre et double-cliquer ct de l'vnement "OnDblClick" dans
l'inspecteur d'objet. Le code suivant est gnr:
procedure Tform1.FormDblClick(Sender: Tobject);
begin
end;
L'aide nous dit que "clWindow" pour la couleur de fond courante des fentres. La
procdure devient donc:
procedure Tform1.FormDblClick(Sender: Tobject);
begin
Form1.color:=clWindow;
end;
Excuter et tester.
La palette "supplments" nous fournit un composant intressant: TBitBtn. C'est un
bouton comportant une image (glyphe) et ayant des fonctions prprogrammes (Kind). Mettre
cette proprit "Kind" "bkClose".
page 31/65
Aligner les deux boutons gauche grce la palette d'alignement (menu "Voir").
Exercice:
Enlever le bouton "rouge" et placer trois curseurs dans des panneaux de couleur pour
rgler l'intensit des 3 couleurs de base: rouge, vert et bleu. Les intensits varient de 0 255.
La fonction RGB (voir l'aide en ligne) est utile. Un seul gestionnaire d'vnement suffira.
page 32/65
9 Elments de programmation
9.1
Dclaration de variables
Une variable est un nom qui, dans du code, reprsente une adresse mmoire dont le
contenu peut changer lorsque le code est excut. Vous devez dclarer une variable avant de
l'utiliser. Les tapes requises sont les suivantes :
Choix du nom d'une variable
Choix du type d'une variable
9.1.1 Choix du nom d'une variable
Lorsque vous dclarez une variable, vous devez choisir un nom. Pour faciliter la lecture
de votre code, il est prfrable de choisir un nom parlant, qui vous rappelle la signification de
la variable. Par exemple, Jour, Nom ou Total sont des noms plus vocateurs que X, Y ou Z.
En dehors du choix de noms vocateurs, il convient de garder l'esprit un certain
nombre de rgles qui s'appliquent aux variables et tous les autres identificateurs:
Les identificateurs peuvent avoir une longueur de 63 caractres.
Sils dpassent cette longueur, le compilateur ne tient pas compte des caractres
supplmentaires.
Les identificateurs doivent commencer par une lettre ou par un trait de
soulignement (_).
Les caractres suivants peuvent tre des lettres, des traits de soulignement ou les
chiffres de 0 9.
Ils ne peuvent contenir de caractres gnriques comme $, %, *, etc.
Par exemple, si vous utilisez des identificateurs appels Faire@Midi ou
Retour_en_%, vous aurez une erreur de syntaxe.
Vous ne devez pas utiliser un mot rserv de Pascal objet pour dsigner un
identificateur: and, as, asm, array, begin, case, class, const, constructor, destructor,
div, do, downto, else, end, except, exports, file, finally, for, function, goto, if,
implementation, in, , inherited, inline, initialization, interface, is, label, library,
mod, nil, not, object, of, or, packed, procedure, program, property, raise, record,
repeat, set, shl, shr, string, then, to, try, type, unit, until, uses, var, while, with, xor
Evitez dutiliser des identificateurs dj dfinis dans le langage Pascal objet pour
dsigner vos identificateurs. Par exemple, les mots Boolean et Integer sont des
types de donnes prdfinis.
Conventions d'criture: nous allons adopter une sparation des significations par
majuscules comme par exemple: TMonObjetPersonnelSecret. Interdiction formelle de mettre
des espaces ou des accents.
page 33/65
page 34/65
page 35/65
ENTIERS
type
Integer
Shortint
Smallint
Longint
Int64 (nouveau)
Byte
Word
Longword
ou cardinal
tendue
2147483648..2147483647
128..127
32768..32767
2147483648..2147483647
2^63..2^631
0..255
0..65535
0..4294967295
forme
32 bits sign
8 bits sign
16 bits sign
32 bits sign
64 bits sign
8 bits non sign
16 bits non sign
32 bits non sign
Il est facile d'utiliser des entiers en base hexadcimale: faire prcder le nombre par le
signe $.
DECIMAUX
type
Single
Double
(ancien real)
Extended
Comp
Currency
tendue
1.5 x 10^45 .. 3.4 x 10^38
5.0 x 10^324 .. 1.7 x 10^308
1920
1920
1920
10
8
8
BOOLEENS
Boolean
page 36/65
CARACTERES
AnsiChar
WideChar
Char
Un caractre ANSI.
Un caractre Unicode.
Varie en fonction de l'implmentation. Dans cette version du Pascal Objet,
Char est semblable AnsiChar.
On peut utiliser le code ANSI du caractre en le faisant prcder par le signe # (ex:
#10).
CHAINES
Type
ShortString
AnsiString
WideString
String
Longueur maximum
255 caractres
~2^31 caractres
~2^30 caractres
Mmoire ncessaire
de 2 256 octets
de 4 octets 2Go
de 4 octets 2Go
Utilisation
Compatibilit ascendante
Caractre sur 8 bits (ANSI)
Caractres Unicode;
serveurs COM et interfaces
Varie en fonction de la directive de compilation $H. Par dfaut, string est
semblable AnsiString
POINTEURS
Un pointeur est une variable qui contient l'adresse mmoire de l'objet manipul.
La dclaration se fait sous la forme: var NomPointeur: ^TypeObjet; ou par le mot-cl
"pointer" qui reprsente un pointeur non typ ( transtyper lors avant le dfrencement).
Utilisation:
new(NomPointeur) rserve la mmoire correspondant l'objet
NomPointeur^ permet de rcuprer l'objet
dispose (NomPointeur) dtruit l'objet (pointeur nil)
L'adresse d'un objet peut tre rcupre par la fonction Addr ou @.
VARIANTS
Variant
Si vous ne voulez pas utiliser les types de donnes prdfinis, vous pouvez dfinir vos
propres types de donnes. Les types prdfinis sont gnralement suffisants pour la plupart
des applications Delphi.
page 37/65
page 38/65
page 39/65
page 40/65
page 41/65
Si vous voulez attribuer la valeur zro toutes les variables Verif du tableau, vous
pouvez le faire laide dune boucle for. Comme un indice peut tre une variable, il est plus
facile dutiliser une boucle for que daffecter une valeur chaque lment du tableau avec des
instructions daffectation distinctes. Cette boucle for affecte la valeur 0,0 aux dix variables :
for J := 1 to 10 do Verif(J) := 0,0;
Vous pouvez dfinir des tableaux en tant que types. Par exemple :
type
TVerif = array[1..100] of Double;
Vous pouvez ensuite dclarer des variables du type tableau. Lexemple ci-dessous
dclare que Compte est une variable de type TVerif, soit un tableau de 100 nombres rels.
var
Compte : TVerif;
9.1.5.4 Tableaux multidimensionnels
Exemple:
type TTable = array[1..20, 1..20] of Double;
page 42/65
page 43/65
9.2
page 44/65
page 45/65
page 46/65
page 47/65
10 Quelques instructions
Voici quelques instructions utiles; il y en a d'autres dcouvrir dans l'aide
10.1 Arithmtiques
Abs
Ceil
Exp
Flor
Frac
Frexp
Int
IntPower
Ln
Log10
Log2
LogN
Max
Min
Pi
Power
Round
Sqr
Sqrt
Trunc
page 48/65
Toutes les routines de date et d'heure utilisent les variables de formatage Date/Heure.
page 49/65
page 50/65
10.6 Divers
Exclude
FillChar
Hi
Include
Lo
Move
ParamCount
ParamStr
Random
Randomize
SizeOf
Swap
UpCase
page 51/65
10.7 Ordinaux
Dec
Inc
Odd
Pred
Succ
page 52/65
page 53/65
page 54/65
1.1
Procdures
Les procdures sont utilises pour effectuer des actions, mais peuvent galement servir
renvoyer des valeurs. Comme les fonctions, elles peuvent accepter des paramtres transmis
par valeur (option par dfaut), par variables en lecture-criture (prcdes par le mot-cl
"var") ou des constantes (prcds par le mot-cl "const"). La syntaxe en est la suivante:
procedure NomProcedure(arg1:type; arg2:type; .argn:type);
begin
intructions;
end;
Ecrire une procdure qui gnre deux bips une seconde d'intervalle:
procedure DeuxBips();
begin
beep();
sleep(1000);
beep();
end;
L'appel cette procdure peut tre dclenche par l'appui d'un bouton:
procedure TForm1.Button1Click(Sender: TObject);
begin
DeuxBips;
end;
page 55/65
12 Les menus
12.1 Menu principal
La mise en place d'une barre de menus est simplifie par le concepteur de menus. Placer
sur la fiche un composant de type "TMainMenu". Double-cliquer sur lui pour accder au
concepteur de menus. Il suffit alors de taper les noms en validant avec la touche "entre".
Pour se dplacer, on peut utiliser la souris ou les flches de direction.
Particularits:
Accs rapide
Sparation
Touches de raccourci
Sous-menu
Dplacement d'lments
On peut utiliser des modles existants de menu ou crer des modles personnels (voir
menu contextuel).
Si l'on utilise des gestionnaires d'vnements partags, on peut les attribuer dans la page
vnements de l'inspecteur de proprits.
Ensuite, fermer le concepteur de menus. Il est indispensable d'attribuer une procdure
vnementielle chaque lment: ouvrir le menu et cliquer sur l'option. L'diteur de code
crit tout seul l'entte de la procdure: il ne reste qu' complter.
Exercice: crer un projet de type bloc-notes (dans un nouveau rpertoire "Notes"). Y
mettre des menus (fichier, dition, ...). Utiliser les botes de dialogue prfabriques
(enregistrer, ouvrir).
12.2 Menus surgissants
Placer un composant de type TPopupMenu sur votre fiche. Appeler l'diteur de menus
par un double-clic sur lui. Complter comme prcdemment. Il faut ici affecter les
vnements avant de refermer le concepteur.
Utilisation: Affecter la proprit PopupMenu de l'un des composants de votre fiche avec
le nom de ce menu.
page 56/65
page 57/65
En utilisant ajouter, vous pouvez charger votre liste. Des bitmaps se trouvent dans le
rpertoire "C:\Program Files\Fichiers communs\Borland Shared\Buttons\". Ensuite il suffit de
choisir "nouveau bouton" (ou sparateur) dans le menu contextuel du composant "Toolbar".
La proprit "ImageIndex" du bouton dfinit l'image utilise.
La proprit "Flat" de Toolbar permet d'avoir un effet de bouton surgissant comme dans
certains logiciels rcents bien connus.
On peut aussi utiliser le composant "Coolbar" et placer des "Toolbar" garnis dans ses
bandes redimensionnables (style internet).
page 58/65
15 Barre d'tat
Le composant correspondant existe sur cette version de Delphi, il s'agit de TStatusBar.
C'est une ligne de volets, gnralement place en bas d'une fiche, qui affiche des informations
sur l'application en cours d'excution. Chaque volet est reprsent par un objet TStatusPanel
numr dans la proprit Panels. La proprit SimplePanel peut tre utilise pour faire
basculer, l'excution, la barre d'tat entre l'affichage d'un seul volet et celui de plusieurs
volets.
15.1 Mise en place
Placer un composant "TStatusBar" sur la fiche. Si l'on dsire plusieurs volets, il faut
attribuer la proprit "panels". L'diteur de proprit se prsente sous la forme suivante:
15.2 Exercice
Crer un nouveau projet. Mettre l'heure dans la seconde partie d'une barre d'tat 3
volets. Utiliser pour cela un timer systme (voir l'aide en ligne pour l'utilisation). La fonction
TIME donne l'heure ( convertir en texte).
Option: afficher "MAJ" dans la partie de gauche quand le verrouillage des majuscules
est actif. Il faut intercepter la frappe des touches en mettant la proprit "KeyPrev" de la fiche
"true" (vrai). Le code de la touche est "VK_CAPITAL".
Voir la fonction "GetKeyState".
page 59/65
TOUCHE
bouton gauche de souris
bouton droit de souris
bouton mdian de souris
(s'il existe!)
retour arrire (backspace)
tabulation
entre
pause
verrouillage majuscules
Echap.
espace
page prcdente
page suivante
fin
dbut ()
impression cran
insertion
suppression
zro
9
A
Z
zro du pav numrique
9 du pav numrique
multiplication
addition
soustraction
point dcimal
division
F1
F12
verrouillage numrique
arrt dfilement
page 60/65
16 Exercices proposs:
crer un bloc notes amlior, multi documents
raliser une calculatrice simple, puis bande, enfin scientifique (puissance,
factorielle, sinus, cosinus, tangente, binaire, hexadcimal, )
page 61/65
17 O trouver de l'aide?
Aide en ligne
Apprentissage en ligne de Delphi3 (S&SM): sur le CD de Delphi3
Les manuels papier de Delphi4
PASCAL (Philippe SPOLJAR chez Sybex poche)
DELPHI Professionnel - Programmation systme 32 bits (Dick LANTIM chez
Eyrolles)
DELPHI2 - Secrets d'Experts (Charles CALVERT chez S&SM)
Outils de dveloppement Delphi 1&2 (Gilles BETZ chez Sybex Mgapoche)
DELPHI 3 (Dick LANTIM chez Eyrolles)
Internet: www.inprise.com et les groupes de News
page 62/65
AVERTISSEMENT _____________________________________________________ 2
INTRODUCTION ______________________________________________________ 3
Nouveauts ____________________________________________________________ 4
PRESENTATION ________________________________________________________5
4.2
4.2.1
4.2.2
4.2.3
4.2.4
4.2.5
4.2.6
4.2.7
4.3
Proprits______________________________________________________________________ 5
Mthodes ______________________________________________________________________ 5
Programmation structure _________________________________________________________ 6
L'encapsulation _________________________________________________________________ 6
L'hritage ______________________________________________________________________ 6
Le polymorphisme ______________________________________________________________ 7
Dveloppeur ou utilisateur? _______________________________________________________ 7
LEXIQUE _______________________________________________________________7
4.3.1
4.3.2
4.3.3
4.3.4
4.3.5
4.3.6
4.3.7
4.3.8
4.3.9
4.3.10
4.3.11
4.4
CONCLUSION __________________________________________________________9
6.2
6.2.1
6.2.2
6.2.3
6.2.4
6.2.5
6.2.6
6.3
6.4
Page Proprits__________________________________________________________23
6.5
6.6
page 63/65
7.2
Excution ______________________________________________________________28
8.2
8.3
Amliorations ___________________________________________________________31
9.1.1
9.1.2
9.1.3
9.1.4
9.1.5
9.2
9.2.1
9.2.2
9.2.3
9.2.4
9.2.5
9.2.6
9.2.7
10
Quelques instructions_________________________________________________ 48
10.1
Arithmtiques___________________________________________________________48
10.2
Date et heure____________________________________________________________49
10.3
Gestion fichiers__________________________________________________________50
10.4
10.5
10.6
Divers _________________________________________________________________51
10.7
Ordinaux_______________________________________________________________52
11
Fonctions_______________________________________________________________53
1.1
Procdures _____________________________________________________________55
12
12.2
13
13.2
13.3
Info-bulles ______________________________________________________________57
13.4
14
15
page 64/65
15.1
15.2
Exercice________________________________________________________________59
16
17
page 65/65