Vous êtes sur la page 1sur 60

Programmation Delphi 7.

Introduction
Delphi r epr ésent e une nouvelle f açon de développer des applicat ions sous
Windows. I l associe la vit esse et la convivialit é d’un envir onnement de développement
visuel à la puissance d’un langage obj et , au compilat eur le plus r apide au monde et à une
t echnologie de base de données de point e.
Avec Delphi, vous avez maint enant la possibilit é de const r uir e des applicat ions
Client / Ser veur en un t emps r ecor d. Delphi per met de cr éer des f ichier s .EXE
indépendant s, des f ichier s .DLL (Bibliot hèques de lien dynamique), des applicat ions de
base de données locales ou dist ant es, des applicat ions OLE ainsi que des applicat ions
Client / Ser veur . L’envir onnement de concept ion visuel de Delphi vous per met de cr éer
des applicat ions Windows 32 bit s pour Windows 9x et Windows NT plus vit e qu’avec
n’impor t e quel out il de développement .
Tout au long de ces pages, vous allez appr endr e à développer des applicat ions
Windows en Delphi. La simplicit é du langage et le car act èr e visuel de l ‘envir onnement
f ont de Delphi un des out ils des plus conviviaux. En f ait , la cr éat ion d’une applicat ion en
Delphi, consist e en gr ande par t ie dans la disposit ion des cont r ôles qui f or mer ont
l’int er f ace. Vot r e applicat ion appar aît au f ur et à mesur e que vous aj out ez les obj et s,
et t elle qu’elle le ser a à l’ut ilisat eur . Delphi est , à ce pr opos, l’un des t ous pr emier s
langages de pr ogr ammat ion à avoir int égr é un envir onnement r éellement WYSI WYG
(What You See I s What You Get , ou t el écr it t el écr an). Des pr oj et s « bonus » r épar t is
t out au long de ce suppor t vous invit ent à met t r e « la main à la pât e », pour cr éer des
applicat ions complèt es et f onct ionnelles.
Visual Basic est un langage Basé obj et . D’aut r es langages sont dans ce cas. I ls se
ser vent d’obj et s et de mét hodes, mais ne r épondent pas aux concept s f ondament aux
des langages or ient és obj et qui sont l’encapsulat ion, l’hér it age et le polymor phisme.
Delphi est un vér it able langage or ient é obj et . I l per met de combiner dans une classe des
données et du code (Encapsulat ion), de cr éer de nouvelles classes à par t ir de classes
par ent es (hér it age) et enf in d’alt ér er le compor t ement hér it é (polymor phisme).
Les applicat ions Windows appar aissent à l’écr an f or mées d’élément s assez
semblables. Par exemple, le bout on st andar d est r epr ésent é sous la f or me d’un r ect angle
gr is saillant compor t ant un t ext e spécif ique en r appor t avec sa f onct ion. Delphi r epr end
la f onct ionnalit é du bout on, la capacit é de r épondr e à un clic de la sour is et d’af f icher
du t ext e. I l l’emballe dans un obj et appelé composant . Ce composant est st ocké dans la
bibliot hèque de composant s. Delphi est livr é avec une impor t ant e bibliot hèque qui
cont ient t ous les obj et s dont on a besoin pour cr éer un pr ogr amme Win32 digne de ce
nom.
La nat ur e or ient ée d’obj et de Delphi per met en cas de besoin d’aj out er des
f onct ionnalit és ou de modif ier le compor t ement d’un composant , en dér ivant simplement
un nouveau composant à par t ir de l’un de ceux qui se t r ouvent dans la bibliot hèque.
Delphi se ser t d’un compilat eur et d’un lieur aut hent ique qui pr oduisent des
exécut ables en code machine pur . Ut iliser un vr ai compilat eur pr ésent e encor e
l’avant age de pouvoir cr éer des DLL qui cont iennent des composant s pr ovenant de la
bibliot hèque des composant s. On pour r a ensuit e se ser vir de ces DLL pour ét endr e des

®
Samirboualam@HOTMAI L.COM 1 juin
Programmation Delphi 7.0

applicat ions de Delphi, ou pour r endr e ser vice à des pr ogr ammes développés avec des
out ils moins sophist iqués.
Enf in, Bor land a pr is conscience que la plupar t des applicat ions t our nent aut our
des bases de données. Collect er des inf or mat ions, les t r ait er et les r est it uer est le r ôle
de l’or dinat eur . Comme les développeur s st ockent en génér al les inf or mat ions dans une
base de données, Delphi pr opose des obj et s et des composant s qui r éduisent la quant it é
d’ef f or t s nécessair es pour cr éer des applicat ions or ient és bases de données.
At t ent ion
Ce suppor t n’enseigne pas les bases de la pr ogr ammat ion. I l appr end seulement à
ut iliser Delphi et suppose la connaissance des concept s f ondament aux de la
pr ogr ammat ion t els que var iable, f onct ion et boucle.

®
Samirboualam@HOTMAI L.COM 2 juin
Programmation Delphi 7.0

I INTRODUCTION
A la f in de cet t e par t ie, vous ser ez capable de:
? Par ler des car act ér ist iques de Delphi,
? Compar er Delphi avec d' aut r es envir onnement s de pr ogr ammat ion,
? Expliquer les pr incipes de f onct ionnement de Delphi.

I.1 Présentation
Delphi est un envir onnement de pr ogr ammat ion per met t ant de développer des
applicat ions pour Windows 3.x, Windows 9x et Windows NT. I l incar ne la suit e logique
de la f amille Tur bo Pascal avec ses nombr euses ver sions.
Le Tur bo Pascal (DOS et Windows) ne subir a appar emment plus de mises à j our .
Delphi est un out il moder ne, qui f ait appel à une concept ion visuelle des applicat ions, à la
pr ogr ammat ion obj et , de plus, il pr end en char ge le maint ien aut omat ique d' une par t ie du
code sour ce.
Voici quelques unes des car act ér ist iques de Delphi:
? Pr ogr ammat ion obj et .
? Out ils visuels bidir ect ionnels .
? Compilat eur pr oduisant du code nat if .
? Tr ait ement complet des except ions .
? Possibilit é de cr éer des exécut ables et des DLL .
? Bibliot hèque de composant s ext ensible .
? Débogueur gr aphique int égr é .
? Suppor t de t out es les API de Windows: OLE2, DDE, VBX, OCX, ...

I.2 Delphi et les autres


La plupar t des applicat ions Windows sont encor e écr it es en C ou C++ pour des
r aisons essent iellement hist or iques. Micr osof t pousse bien ent endu le C++ du f ait que
l' envir onnement Windows lui-même conçu sous f or me d' obj et s.
A la naissance de Windows, Micr osof t donnait également la possibilit é d' écr ir e
des applicat ions Windows en Pascal, mais pr obablement aucune applicat ion r éelle et
commer ciale n' a j amais ét é écr it e dans ce langage. Le pr emier changement maj eur dans
le développement sous Windows f ut l' appar it ion de Visual Basic:
? Char meur par sa r elat ive f acilit é de pr ogr ammat ion
? Pénalisé par un passé lour d de cat ast r ophes dues à la moit ié de son nom : Basic
? Décevant par ses per f or mances.
Visual Basic a r endu d' immenses ser vices à ceux qui ont su l' ut iliser à bon
escient , c' est -à-dir e pour ce qu' il sait f air e. Un cer t ain nombr e d' applicat ions à lar ge
dif f usion sont écr it es à base de Visual Basic; par exemple Visio 5. Visual Basic a comblé
une lacune, dét our né quelques pr ogr ammeur s C, mais sur t out per mis à d' aut r es
pr ogr ammeur s d' ent r er en scène.
Alor s pour quoi Delphi? La quest ion a un sens car , à pr emièr e vue, en compar ant
Delphi et Visual Basic, on penser ait plut ôt à du plagia. En r éalit é il n' en est r ien. Par sa
concept ion, son envir onnement de développement et ses per f or mances, Delphi f ait de
plus en plus d' adept es.

®
Samirboualam@HOTMAI L.COM 3 juin
Programmation Delphi 7.0

C' est sa cour t e hist oir e qui t end à le pr ouver , au t r aver s de quelques
const at at ions:
? De plus en plus, des j our naux et r evues publiant habit uellement des pr ogr ammes
(souvent des ut ilit air es) écr it s en C, se conver t issent à Delphi. C' est le cas par exemple
du t r ès r épandu PC Magazine.
? Les chif f r es des vent es ont même r éussi à sauver Bor land (l' édit eur de Delphi),
au-delà de t out e at t ent e r éalist e.
? De l' avis quasi unanime Delphi sur passe lar gement Visual Basic, même et sur t out
on compar e sa der nièr e ver sion 32 bit s et le nouveau Visual Basic 6.
? SUN, cr éat eur de J ava et Hot J ava, a f ait appel à Bor land pour cr éer des
composant s Delphi per met t ant de const r uir e des applicat ions J ava sur I nt er net .
Et le C ? Mis à par t des quest ions de langage (donc de synt axe) est -il vr aiment
plus per f or mant qu' un out il comme Delphi ? I l vaut mieux évit er t out af f r ont ement . En
t out cas, les compilat eur s Tur bo C++, Bor land C++ pr oduit s par Bor land ont t ouj our s ét é
par mi les plus per f or mant s du mar ché. Or il se t r ouve que Bor land a ut ilisé le même
noyau de compilat eur pour son Delphi et pour son C++. Par exemple, le code génér é est
aussi opt imisé pour l' un que pour l' aut r e. Par t ant de là, les per f or mances doivent
pr obablement êt r e compar ables. La vie d' un développeur Windows ne se r ésume plus
qu' à un choix de langage.
I l y a bien d' aut r es envir onnement de développement à par t les t r ois cit és ci-
dessus, mais leur f aible dif f usion les mar ginalise.

I.3 Principes de développement en Delphi


Delphi f ait évidemment par t ie de la f amille de la pr ogr ammat ion dest r uct ive,
comme ne peuvent que l' êt r e les langages de développement moder nes sous Windows. On
ne peut plus se per met t r e d' at t endr e des années avant de découvr ir (ou d' appr endr e
par cœur ) que l' obj et "bar r e de déf ilement ver t icale" possède t elle ou t elle pr opr iét é.
Les pr opr iét és, ent r e aut r es, des obj et s doivent êt r e immédiat ement et t ouj our s
visibles au pr ogr ammeur . Pour const r uir e l' int er f ace d' une applicat ion, ce der nier place
des obj et s sur une f iche "f enêt r e" et les per sonnalise en modif iant évent uellement leur s
pr opr iét és et / ou en leur at t achant des inst r uct ions liées à des événement s donnés.
Bien que pour cer t aines applicat ion (souvent mont r ées comme exemples) il ne soit
pas nécessair e d' écr ir e du code (ni de connaît r e le Pascal), il vaut mieux avoir une solide
expér ience de la pr ogr ammat ion avant de se lancer dans un développement r éel.

I.4 Delphi et Windows


Delphi per met de cr éer et de manipuler t out obj et de Windows. Tous les obj et s
et une gr ande par t ie de l' API de Windows sont encapsulés dans des composant s Delphi.
Les messages Windows sont r edir igés par Delphi ver s les obj et s auxquels ils sont
dest inés. Dans t ous les cas, il est t ouj our s possible de f air e appel dir ect ement à l' API
de Windows.

®
Samirboualam@HOTMAI L.COM 4 juin
Programmation Delphi 7.0

II ENVIRONNEMENT DE TRAVAIL
A la f in de cet t e par t ie, vous ser ez capable de:
? Connaît r e les composant s de base de Delphi.
? Ut iliser les dif f ér ent es opt ions des menus.
? Reconnaît r e les diver s t ypes de f ichier s qui const it uent un pr oj et .
? Dist inguer ent r e pr opr iét és et événement s concer nant les composant s Delphi.

II.1 L’interface de développement de Delphi


Examinons l' int er f ace de développement de Delphi

Figure II.1 : Interface de Delphi


L' int er f ace de développement se divise en t r ois zones :
? Dans la par t ie supér ieur e de l' écr an f igur e la f enêt r e de pr ogr amme, la bar r e
d' out ils ainsi que la palet t e des composant s. Les f onct ions concer nant le pr oj et sont
sit uées à gauche dans la bar r e d' out ils, à dr oit e se t r ouve la palet t e des composant s.
? Sous la f enêt r e de pr ogr amme à gauche, f igur e l' inspect eur d' obj et s. I l vous per met
de déf inir l' aspect et le compor t ement de composant s.
? A dr oit e de l' inspect eur d' obj et s, Delphi af f iche la pr emièr e f enêt r e de pr ogr amme.
I l at t end que vous la déf inissiez. A chaque f enêt r e cor r espond un t ext e sour ce qui
dét er mine son f onct ionnement .
II.2 La barre de menu
Au dessous de la bar r e de t it r e et sur t out e sa lar geur s' ét ale un r uban de
commandes appelé bar r e de menu. Chaque en t êt e de menu possède une let t r e souligné
qui le r end accessible avec le clavier (Alt et la let t r e souligné du menu).

®
Samirboualam@HOTMAI L.COM 5 juin
Programmation Delphi 7.0

Le t ableau suivant pr ésent e la st r uct ur e des menus de Delphi et les commandes


les plus impor t ant es:
Menu Fonct ion
Fichier Ce menu cont ient les f onct ions per met t ant de cr éer , ouvr ir et enr egist r er
des f ichier s.
Fichier / Nouveau Cr éez ici les dif f ér ent s f ichier s, f iches vides et les élément s de
pr ogr ammes.
Edit ion Ce menu vous pr opose les commandes qui per met t ent d' exploit er le pr esse-
papier s, il cont ient aussi quelques f onct ions de déf init ion des f enêt r es.
Cher cher I ci f igur ent les f onct ions de r echer che et de r emplacement .
Voir Concer ne les pr ogr ammes de gr andes t ailles, pour en examiner la st r uct ur e
et r ecevoir des inf or mat ions.
Pr oj et Cr éez ici les f ichier s exécut ables à par t ir des t ext es sour ces. Vous
r ecevr ez des inf or mat ions sur le pr ogr amme et pour r ez déf inir cer t ains
par amèt r es et opt ions.
Exécut er Ce menu pr opose les f onct ions pour lancer et exécut er en pas à pas les
pr ogr ammes.
Exécut er / Exécut er Cet t e commande lance des applicat ions, Delphi f onct ionnant en t âche de
f ond.
Composant s Modif iez à l' aide des commandes de ce menu la palet t e des composant s,
int égr ez des composant s supplément air es.
Base de données Ce menu pr opose les assist ant s au développement de base de données.
Out ils Déf inissez ici les dif f ér ent s par amèt r es de Delphi, appelez des out ils
ext er nes.
Aide Accédez dir ect ement à l' aide de Delphi.

II.3La barre d'outils


La bar r e d' out ils per met d' accéder dir ect ement avec la sour is à cer t aines
commandes des menus.

Figure II.2: La barre d'outils


Elle cont ient les bout ons per met t ant d' enr egist r er et d’ouvr ir des f ichier s, de
basculer d' une f iche ou d' une unit é à une aut r e, d' aj out er / suppr imer une f iche au/ du
pr oj et , de r édiger le t ext e sour ce, de basculer ent r e la f iche et l' unit é qui lui est
associée et d' exécut er pas à pas un pr ogr amme. Les bar r es d' out ils de Delphi sont
per sonnalisables, ce qui signif ie qu' on peut l' adapt er à nos besoins en r aj out ant ou en
suppr imant des bout ons.

II.4 La palette des composants


La palet t e des composant s est un élément ext r êmement impor t ant . Les
composant s sont des élément s à par t ir desquels les pr ogr ammes Delphi sont cr éés.
Cit ons les menus, les zones de saisie et les bout ons.
Delphi s' accompagne de composant s. Ceux-ci f igur ent dans une palet t e, ce qui
vous per met de les int égr er r apidement dans vos pr ogr ammes.

®
Samirboualam@HOTMAI L.COM 6 juin
Programmation Delphi 7.0

La nat ur e or ient ée obj et de Delphi f ait que, chaque composant ét ant un obj et , on
pour r a s’on ser vir comme base pour un nouveau dont le compor t ement ser a enr ichi ou
modif ié. On pour r a ensuit e aj out er le nouveau composant à la bibliot hèque des
composant s et le r éut iliser . La commande List e de composant s du menu Voir per met
d' accéder à t ous les composant s.

Figure II.3: La palette des composants


Les composant s sont r épar t is en pages, classées par domaine d' applicat ion que
nous découvr ir ons au f ur et à mesur e dans ces pages.
La conf igur at ion par déf aut des pages de la palet t e des composant s est la suivant e:
? St andard: cet t e page cont ient des composant s élément air es qui ét aient déj à
pr ésent s dans les pr emièr es ver sions, comme TMainMenu, TBut t on, TList Box et
TLabel.
? Supplément : cet t e page cont ient des composant s plus spécialisés qui sont appar us
dans des logiciels plus r écent s, comme TSpeedBut t on, TSt r ingGr id, TI mage. Le
composant TSplit t er mér it e une at t ent ion par t iculièr e: il per met de concevoir une
int er f ace compor t ant des sect ions dont la t aille est aj ust able, comme c' est le cas
pour la bar r e d' out ils et la palet t e de composant s dans la f enêt r e pr incipale de
Delphi ou même l' Explor at eur de Windows. TChar t est aussi une nouveaut é dans
cet t e page. I l per met d' incor por er f acilement dans vos pr ogr ammes en Delphi des
gr aphes de qualit é pr of essionnelle.
? Syst ème: cet t e page cont ient des composant s dont la f onct ionnalit é r epose
essent iellement sur le syst ème d' exploit at ion. le composant TTimer en est
l' exemple: il exécut e une f onct ion à int er valles r égulier s, dont la valeur est déf inie
par l' ut ilisat eur . c' est le syst ème d' exploit at ion qui mesur e les int er valles.
? Win32 : cet t e page cont ient les nouveaux composant s int r oduit s par Windows 95 et
les der nièr es ver sions de NT. I l s' agit des composant s TTr eeView et TList View.
? I nt ernet : cet t e page cont ient des composant s qui per met t ent de pr oduir e des
applicat ions pour I nt er net . I l s' agit , par exemple, des composant s HTTPApp,
HTTPPr od et TcpClient .
? AccèsBD : cet t e page pr opose aux ut ilisat eur s des composant s qui leur f acilit ent
l' usage des inf or mat ions concer nant les ensembles de données. I l s' agit par exemple
de TTable et TSession. Ce ne sont pas des composant s visuels dans la mesur e où ils
ne s' af f ichent pas au moment de l' exécut ion.
? Cont rôleBD : cet t e page cont ient des composant s appelés des cont r ôles or ient és
données. I ls f our nissent une int er f ace visuelle pour les composant s non visuels de la
page AccèsBD. I l s' agit par exemple des composant s TDBGr id, TDBNavigat or .
? QReport : cet t e page f our nit une sér ie de composant s dont on se ser t pour cr éer des
ét at s sans les complicat ions de Repor t Smit h.
? Dialogues: cet t e page cont ient les composant s qui encapsulent la f onct ionnalit é des
boit es de dialogues de Windows, comme TOpenDialog et TSaveDialog. Vous
l' ut iliser ez pour vous conf or mer à l' est hét ique st andar d de Windows.
? ADO : cet t e page vous per met t ent de vous connect er aux inf or mat ions des bases
de données via ADO (Act iveX Dat a Obj ect s)

®
Samirboualam@HOTMAI L.COM 7 juin
Programmation Delphi 7.0

? I nt erBase : cet t e page vous per met t ent de vous connect er dir ect ement à une base
de données I nt er Base sans ut iliser de mot eur t el que le BDE ou ADO ( Act ive Dat a
Obj ect s).
? BDE : cet t e page vous per met t ent de vous connect er aux inf or mat ions des bases de
données via le BDE ( Borland Dat abase Engine).
? Exemples: cet t e page pr opose des exemples de composant s per sonnalisés. Le
composant TGauge qui s' y t r ouve n' est pr oposé qu' à des f ins de compt abilit é. La
page Win32 cont ient une bar r e de pr ogr ession qui se conf or me à la nouvelle
int er f ace Windows.
? Act iveX : cet t e page cont ient un cer t ain nombr e de composant s qui illust r ent
l' apt it ude de Delphi à employer les cont r ôles OLE et Act iveX.

II.5 L'inspecteur d'objet


I l est l' un des t r ois out ils les plus pr écieux dont vous disposez pour la concept ion
de l' int er f ace. les deux aut r es, le concept eur de f iches et l' édit eur de codes ser ont
t r ait és plus loin dans ce chapit r e.
Deux onglet s vous donnent accès aux pr opr iét és et aux événement s du
composant . Elles dét er minent son aspect et son compor t ement . Vous pouvez f ixer ces
valeur s et les modif ier au st ade de l' exécut ion.
Les pr opr iét és sont des inf or mat ions qui appar t iennent à
un obj et et qui le décr ivent . La couleur d' une voit ur e est
une pr opr iét é de l' obj et "voit ur e". Les obj et s et les
composant s de Delphi possèdent aussi des pr opr iét és,
comme la lar geur du composant TBut t on ou le t ext e
af f iché par TLabel.
L' inspect eur d' obj et s cont ient une list e dér oulant e qui se
t r ouve en haut de la f enêt r e et qui dr esse la list e des
composant s de la f iche que vous êt es en t r ain de
concevoir . Vous pouvez sélect ionner un composant dans
cet t e list e, ou vous ser vir de la sour is pour le sélect ionner
sur la f iche.
Le r est e de la f enêt r e de l' inspect eur d' obj et s dr esse,
sur deux pages sépar ées, la list e des pr opr iét és du
composant act uellement sélect ionné:
? Propriét és: dr esse la list e des pr opr iét és publiées
(published) du composant , par exemple, la lar geur ou la
police employée pour af f icher le t ext e.
? Evénement s: dr esse la list e d' un t ype par t iculier de
pr opr iét és publiées, les événement s. Un événement
est une pr opr iét é qui ne cont ient pas d' inf or mat ions
concer nant le composant . Elle dét ient un lien ver s un Figure II.4: l'inspecteur d'objets
segment de code en Pascal Obj ect qui s' exécut er a
lor sque l' événement ser a déclenché.
Chaque page est elle même divisée en deux colonnes, la
gauche cont enant les noms des pr opr iét és et la dr oit e les
valeur s des pr opr iét és

®
Samirboualam@HOTMAI L.COM 8 juin
Programmation Delphi 7.0

II.5.1 Modifier les propriétés


Un composant digne de ce nom init ialiser a ses pr opr iét és lor squ' on le cr ée. Le
composant se t r ouve donc t ouj our s dans un ét at valide. Comment pour r ait -on af f icher un
composant TBut t on dont la pr opr iét é couleur de f ond ne ser ait pas déf inie?
L' inspect eur d' obj et s per met de changer ces par amèt r es init iaux. Les
changement s ser ont enr egist r és dans le f ichier DFM (pour Delphi For M, ou f iche
Delphi) de la f iche. Le compilat eur s' en ser vir a pour génér er aut omat iquement du code
qui af f ect er a les nouvelles valeur s à la pr opr iét é au moment de l' exécut ion.
I l exist e quat r e t ypes d' édit eur s de pr opr iét és:
? Text e: la valeur de pr opr iét é est comme un t ext e qu' on édit e. Ce t ype d' édit eur de
pr opr iét és ser t pour les pr opr iét és numér iques comme Widt h et les pr opr iét és de
t ype chaîne de car act èr es comme Capt ion.
? Enumérat ion: ce t ype de pr opr iét é peut pr endr e une seule valeur dans un ensemble
pr édéf ini. L' inspect eur d' obj et s af f iche une list e dér oulant e des valeur s possibles.
La pr opr iét é Cur sor est , par exemple, une valeur à énumér at ion: un composant
emploie t el cur seur plut ôt qu' un aut r e par mi ceux qui sont disponibles pour
l' applicat ion.
? Ensemble: une pr opr iét é de ce t ype peut pr endr e plusieur s valeur s dans un ensemble
pr édéf ini. L' inspect eur d' obj et s af f iche ce t ype de pr opr iét és dans une list e
ext ensible de couple Tr ue/ False. I l s' agit , par exemple, de la pr opr iét é Bor der I cons
de TFor m: on peut inclur e ou exclur e t out e icône suscept ible d' appar aît r e sur la
bor dur e de la f enêt r e.
? Obj et : une pr opr iét é de ce t ype est elle-même un obj et , elle est af f ichée dans une
list e ext ensible dont on pour r a édit er chaque pr opr iét é. Cer t ains obj et s possèdent
leur s pr opr es édit eur s de pr opr iét é. Ce sont des boit es de dialogues qui per met t ent
d' édit er t out e la pr opr iét é d' un coup. On act ive ces pr opr iét és per sonnalisées soit
par un double-clic sur la pr opr iét é, soit en cliquant sur le bout on libellé par un ellipsis
(…). La pr opr iét é Font f our ni l' exemple des deux mét hodes: on peut la développer
dans une list e et elle possède un édit eur per sonnalisé.

II.5.2 Les propriétés événement


Les applicat ions Windows sont commandées par les événement s: les dif f ér ent es
par t ies de l' applicat ion s' exécut ent en r éponse à la sit uat ion du moment . On par le de
gest ion d' événement s. la plupar t des composant s f our nissent déj à une gest ion
d' événement s élément air es. Le clic sur un bout on déclenche un événement qu' on peut
int er cept er et ut iliser pour exécut er un code en Pascal Obj ect af in de f er mer une
f enêt r e, enr egist r er un f ichier , suppr imer un enr egist r ement …et c.
On int er cept e un événement en at t r ibuant le nom d' une pr océdur e en Pascal
Obj ect à la pr opr iét é d' événement . lor sque le composant dét ect er a un événement , par
exemple, un clic de la sour is, il appeller a la pr océdur e ainsi r éf ér encée.
La pr opr iét é événement emploie un édit eur de pr opr iét é à énumér at ion.
L' événement ne peut exécut er qu' une seule pr océdur e par mi l' ensemble des pr océdur es
pr ésent es dans l' unit é qui est associée à la f iche.

®
Samirboualam@HOTMAI L.COM 9 juin
Programmation Delphi 7.0

II.6 Les éditeurs


Delphi se ser t d' un f ichier DFM pour st ocker les pr opr iét és des composant s. Le
concept eur de f iches af f iche ce f ichier . Le code associé à la f iche, par exemple la
déf init ion de la f iche ou les pr océdur es d' événement s, est st ocké dans une unit é de
Delphi ou dans un f ichier PAS (pour Obj ect PAScal ou Pascal Obj ect ). L' édit eur de code
af f iche ce f ichier .
Delphi pr opose pour le développement deux édit eur s :
? L' édit eur de f iche qui per met de const r uir e les f enêt r e de l' applicat ion,
? L' édit eur de t ext e sour ce compr enant l' ensemble des commandes qui const it uent
le pr ogr amme.

Figure II.5: Editeur de fiches Figure II.6: Editeur de codes

II.6.1 Editeur de fiches


Les f iches sont les f enêt r es des applicat ions. L' édit eur de f iche vous per met de
les const r uir e à l' aide de la sour is. Vous emploier ez les composant s de la palet t e et
l' inspect eur d' obj et s.
Le concept eur de f iches n' est pas un pr ogr amme dist inct s' inscr ivant dans l' EDI ,
mais ce t er me désigne l' aper çu de la f iche au moment de la concept ion, par opposit ion, à
celle qu' on aur a au moment de l' exécut ion. Les composant s non visuels comme TTable et
TTimer appar aît r ont dans le concept eur de f iche , et l' on pour r a les sélect ionner et les
manipuler avec l' inspect eur d' obj et s. pendant la concept ion, il est possible d' af f icher
plusieur s f iches à la f ois, une seule pouvant êt r e act ive. En collabor at ion avec
l' inspect eur d' obj et s, le concept eur de f iches per met d' ef f ect uer les opér at ion
suivant es:
? Aj out er des composant s à une f iche.
? Modif ier les pr opr iét és de la f iche et de ses composant s.
? Relier les gest ionnair es d' événement s du composant au code Pascal Obj ect
que cont ient l' édit eur de code.
II.6.2 L'éditeur de texte source.
C' est avec cet édit eur que vot r e applicat ion commence à pr endr e cor ps. Avec le
concept eur de f iches et l' inspect eur d' obj et s, vous pouvez donner libr e cour s à vot r e
imaginat ion, mais vous n' obt iendr ez j amais qu' une int er f ace.

®
Samirboualam@HOTMAI L.COM 10 juin
Programmation Delphi 7.0

Le t ext e sour ce cont ient les commandes qui const it uent le pr ogr amme. Text e
sour ce et f iches sont t r ansf or més en un pr ogr amme exécut able par l' envir onnement de
pr ogr ammat ion.
A chaque f iche cor r espond un f ichier sour ce, appelé Unit é. Nous pr ogr ammer ons
dans cet t e unit é l' aspect et le compor t ement de la f iche et de chacun de ses
composant s. Les commandes du t ext e sour ce sont t r ait ées à l' exécut ion du pr ogr amme.
L' inspect eur d' obj et s ne per met de par amét r er les composant s que pendant la
concept ion.
On peut per sonnaliser l' édit eur de code en passant par le boît e de dialogue
Opt ions d' envir onnement (menu Out ils).
On peut déj à const at er que Delphi génèr e aut omat iquement le code
cor r espondant à la f iche pr incipale For m1. Dans Delphi, chaque f iche est décr it e comme
un obj et (associé à une classe).
Delphi applique un pr incipe f ondament al lor s de la cr éat ion d' applicat ions: Chaque f iche
correspond à une unité.
On peut voir sur la f igur e I I .6 que Delphi a aut omat iquement déclar é la var iable
For m1. Cet t e var iable déf init un obj et qui est une inst ance de la classe Tf or m1.
Avant d' aller plus loin, il f aut insist er sur un point essent iel de l' ut ilisat ion de
Delphi. Pour le conf or t de l' ut ilisat eur , Delphi donne aut omat iquement un nom à chaque
nouvel obj et ou composant . I l s' agit d' un nom par déf aut . Par exemple For m1, But t on1,
But t on2, List box1... On peut bien ent endu t r availler avec ces noms, mais cet t e manièr e
de f air e est t r ès f or t ement déconseillée. Donc: I l est impérat if de donner un nom
(explicit e) à chaque nouvel obj et . Au lieu de But t on1 on aur a, par exemple, Quit t er ; au
lieu de List box1 on aur a, par exemple Couleur s. Les r aisons pour se plier à cet t e
discipline deviennent évident es au f ur et à mesur e que l' on t r availle avec Delphi.

II.7 Structures des fichiers du projet Delphi


Une applicat ion r éalisée sous Delphi génèr e les f ichier s ci-apr ès :

Fichier Contenu de fichier


* .dpr Ce f ichier cont ient le code sour ce du f ichier pr incipal
* .df m Ce f ichier cont ient les par amèt r es des f iches Delphi
* .pas Ext ension des unit és. Génér alement elles appar t iennent à une f iche dont
elles déf inissent l' aspect et le compor t ement là l' exécut ion
* .dcu Une unit é compilé de cet t e ext ension cont ient les r out ines de l' unit é de
même nom et les données des f iches cor r espondant es
* .exe Le f ichier Exe cont ient le pr ogr amme compilé, exécut able
indépendamment de Delphi
* .r es Fichier des r essour ces du pr oj et t elles que les bout ons et les images.

®
Samirboualam@HOTMAI L.COM 11 juin
Programmation Delphi 7.0

III NOTIONS DE BASE SUR LA POO


Le concept de l' or ient at ion obj et t r iomphe depuis quelques années déj à. il
amélior e la pr ogr ammat ion st r uct ur ée en allant au delà des f onct ions et des pr océdur es
pour f or mer un syst ème encor e plus souple et plus f acile à ét endr e. Dès lor s que l' on
ut ilise Delphi, on ne peut évit er la pr ogr ammat ion or ient ée obj et (POO) car t ous les
composant s, ainsi que diver ses st r uct ur es de base comme les except ions, r eposent sur
cet t e t echnique.
La not ion d' obj et r epose sur une ent it é physique (une classe), des pr opr iét és, des
mét hodes et des événement s.

Propriét és: Déf inissent les car act ér ist iques physique de l' obj et .
Mét hodes: Ensemble de pr océdur es et f onct ions int égr ées à la st r uct ur e de la classe.
Evénement s: Ensembles d' act ions auxquelles r éagit l' obj et . I ls sont exposées comme des
mét hodes pr ot égées af in que les obj et s puissent appeler le gest ionnair e
d' événement appr opr ié pendant son f onct ionnement nor mal.
Les concept s f ondament aux de la POO sont : encapsulat ion, hér it age et polymor phisme.

III.1 Encapsulation :
Les obj et s de la POO sont des ent it és concr èt es à l' int ér ieur d' un pr ogr amme,
t elles les zones de saisie, les f iches ou les messages d' er r eur . Un obj et pr ésent e
cer t aines pr opr iét és et peut ef f ect uer cer t aines act ions. Pr enons par exemple une zone
de saisie. L' une des ses pr opr iét és est const it uée par le t ext e af f iché. Elle est par
ailleur s capable de changer de cont enu. Les pr opr iét és sont r epr ésent ées par des
var iables, les act ions sont assur ées par des f onct ion ou des pr océdur es.
La sépar at ion des var iables qui mémor isent les pr opr iét és et des r out ines qui les
modif ient est appelée Encapsulat ion. Elle ser t à maint enir la f lexibilit é d' ut ilisat ion des
obj et s t out en évit ant les er r eur s de mise en œuvr e.

III.2 Héritage :
L' hér it age consist e pour une classe à r epr endr e les mét hodes et les var iables
d' une aut r e classe. I l n' est plus nécessair e de pr océder à de nouvelles déclar at ions si
elles sont déj à ef f ect uées dans la classe dit e de base.
L' hér it age per met à des classes de r epr endr e mét hodes et var iables des classes
ancêt r es. Elles n' ont pas besoin d' êt r e r edéclar ées et peuvent êt r e mises en ser vice
comme leur s modèles.
Gr âce à ce mécanisme, on peut commencer par déf inir des classes génér ales,
d' où l' on dér ive pr ogr essivement des classes plus spécialisées. Une classe donnée peut
engendr er aut ant de classe f illes que l' on désir e, qui peuvent êt r e à leur t our des
classes de base pour d' aut r es classes.

Polymorphisme :
Le polymor phisme donne la possibilit é d' ut iliser des mét hodes de même nom pour
implément er des inst r uct ions dif f ér ent es.
Gr âce au Polymor phisme, une mét hode gar de son nom t out en changeant de
cont enu. On peut ainsi invoquer de manièr e unif or me des mét hodes appar t enant à des

®
Samirboualam@HOTMAI L.COM 12 juin
Programmation Delphi 7.0

classes dif f ér ent es. Les inst r uct ions exécut ées ne sont pas les mêmes mais cet aspect
des choses échappe à l' appelant .
En d' aut r es t er mes, on peut appeler une mét hode sans connaît r e le dét ail des
inst r uct ions exécut ées qui s' adapt er ont à la classe concer née.
La mét hode Create const it ue un exemple de mét hode Polymor phe. Elle est
char gée d' inst ancier une classe et d' init ialiser l' obj et cr éé. I l est f acile d' imaginer que
ces opér at ions sont souvent t r ès dif f ér ent es d' une classe à une aut r e. Un obj et f enêt r e
ne possède pas les même pr opr iét és qu' un bout on. Malgr é t out , l' un et l' aut r e sont
cr éés par la mét hode Create, qui exécut e à chaque f ois le j eu d' inst r uct ions appr opr ié.

III.3 Droits d'accès :


Pour per met t r e au pr ogr ammeur de spécif ier quelles sont les var iables et
mét hodes d' un obj et qui sont ou non accessibles de l' ext ér ieur , Pascal Obj et dispose de
quat r e mot s clés:

Mot clé Accès aut orisé


Public Les var iables et mét hodes déclar ées publics (Public) sont accessibles sans
r est r ict ions depuis l' ext ér ieur .
Published Les var iables et mét hodes dit es publiées (Published ) se compor t ent à
l' exécut ion comme leur s équivalent publics. Mais elles sont déj à accessibles
au moment de la concept ion ( exemple : l' inspect eur d' obj et s).
Prot ect ed Les var iables et mét hodes déclar ées pr ot égées (Prot ect ed) ne sont
accessibles que de l' int ér ieur de l' obj et et de ses dér ivés.
Privat e Les var iables et mét hodes déclar ées pr ivées (Privat e) sont accessibles de
l' ext ér ieur , mais uniquement à par t ir de l' unit é qui les abr it e.

Ces spécif icat eur s ser vent à f ixer les dr oit s d' accès souhait és.

®
Samirboualam@HOTMAI L.COM 13 juin
Programmation Delphi 7.0

IV LE LANGAGE PASCAL DE BASE


A la f in de cet t e par t ie, vous ser ez capable de:
? connaît r e la st r uct ur e du langage Pascal (non obj et );
? ut iliser les diver s t ypes de données du Pascal;
? ut iliser des inst r uct ion séquent ielles, it ér at ives et sélect ives.
IV.1 La programmation structurée
Un or dinat eur peut êt r e assimilé à un syst ème pr oduisant des r ésult at s à par t ir
d' inf or mat ions f our nies et de "mar ches à suivr e" per met t ant de les t r ait er . Les
inf or mat ions sont const it uées par des données, et les mét hodes de t r ait ement par des
algor it hmes. Pour obt enir des r ésult at s, la descr ipt ion des données et les algor it hmes
doivent êt r e codés sous f or me de pr ogr ammes int er pr ét ables par l' or dinat eur . En ef f et ,
le pr ocesseur de celui-ci ne peut exécut er qu' un nombr e r elat ivement r est r eint
d' inst r uct ions élément air es (le code machine).
Les pr ogr ammes sont donc le r ésult at d' une succession d' ét apes compr ises ent r e
la spécif icat ion inf or melle du pr oblème et sa codif icat ion. I l y a ainsi ent r e ces deux
pôles un "t r ou" qu' il s' agit de combler . Par mi les moyens ou les out ils per met t ant d' y
par venir on peut cit er not amment des envir onnement s de pr oduct ion de logiciel (par
exemple Delphi), des mét hodes f our nissant un encadr ement au concept eur ou encor e
des langages de spécif icat ion per met t ant de pr éciser les ét apes int er médiair es. Un
aut r e aspect du r appr ochement de la phase de codif icat ion ver s la spécif icat ion du
pr oblème est const it ué par le développement ou l' ut ilisat ion de langages de
pr ogr ammat ion per met t ant un niveau d' abst r act ion plus élevé.
Un des obj ect if s de la pr ogr ammat ion st r uct ur ée est la concept ion de logiciel
f iable, ef f icace et d' une maint enance plus aisée. I l peut êt r e at t eint de manièr e
asympt ot ique et par diver s moyens. Un pr ogr amme n' est pas j ust e ou f aux; sa qualit é
est une not ion globale, const it uée par plusieur s élément s, dont nous allons ét udier les
plus impor t ant s.
La f iabilit é est une pr opr iét é inf or melle et par f ois dif f icile à cer ner . Cet t e
pr opr iét é peut êt r e at t eint e gr âce à deux qualit és du langage de pr ogr ammat ion.
D' abor d, la f acilit é d' écr it ur e doit per met t r e d' expr imer un pr ogr amme de f açon
nat ur elle ou en t er mes du pr oblème à r ésoudr e. Le pr ogr ammeur ne doit pas êt r e
dér angé par des dét ails ou des habit udes du langage, mais doit pouvoir se concent r er sur
la solut ion r echer chée. Les langages moder nes de haut niveau t endent ver s cet obj ect if .
Ensuit e, la lisibilit é du pr ogr amme doit per met t r e d' en saisir aisément la const r uct ion
logique et de dét ect er plus f acilement la pr ésence d' er r eur s. Dans cet t e opt ique,
l' inst r uct ion Got o, par exemple, r end dif f icile la lect ur e du pr ogr amme de f açon
descendant e. Tout ef ois, dans cer t ains cas, les obj ect if s énoncés au début de cet t e
sect ion peuvent êt r e at t eint s dans de meilleur es condit ions par l' ut ilisat ion d' un Got o
(bien placé et bien document é) plut ôt que par une const r uct ion st r uct ur ée; sa pr ésence
est alor s accept able. De t elles sit uat ions sont t out ef ois ext r êmement r ar es.
Si l' ef f icacit é ét ait au début l' obj ect if pr incipal de la concept ion d' un
pr ogr amme, act uellement cet t e not ion a évolué pour englober non seulement des
cr it èr es de vit esse d' exécut ion et de place mémoir e, mais aussi l' ef f or t r equis par la
maint enance du logiciel.

®
Samirboualam@HOTMAI L.COM 14 juin
Programmation Delphi 7.0

En ef f et , la nécessit é de la maint enance impose au logiciel qu' il soit lisible et


modif iable. Ces qualit és sont souvent liées à des cr it èr es est hét iques. On peut
néanmoins cit er quelques f act eur s qui f acilit ent les int er vent ions dans un pr ogr amme: un
découpage appr opr ié, une mise en page clair e, un choix adéquat des noms d' obj et s
ut ilisés, des comment air es cohér ent s placés j udicieusement .
IV.2 Les variables
Une var iable est une zone mémoir e. Pour accéder à cet t e zone mémoir e, nous
ut ilisons dans le code que nous t apons, un mot pour l' ident if ier . Ce mot est le nom de la
var iable. Lor s de la compilat ion, Delphi a besoin de savoir quelle quant it é de mémoir e, il
doit r éser ver . Nous devons commencer à déclar er la var iable (à l' aide du mot clé Var ) en
indiquant son t ype.
Exemples de déclar at ions :
var Num: integer;
var Nom : string;
Les deux var iables ainsi déclar ées ne sont pas du même t ype, la pr emièr e per met
de r et enir un nombr e ent ier (posit if ou négat if ) alor s que la deuxième est f ait e pour
r et enir une chaîne de car act èr es (c' est -à-dir e une suit e de car act èr es let t r es, chif f r es
ou signes…).
Pour met t r e une valeur dans une var iable ( on dit af f ect er une valeur à la
var iable), il f aut indiquer :
A gauche le nom de la var iable
Suivi du symbole :=
A dr oit e une valeur du bon t ype (sous f or me simple, ou sous f or me à calculer ).
Exemples d' af f ect at ion :
Num := 123;
Matricule := -20549;
Resultat := 15+17*3;
Message := 'Etude de la programmation avec Delphi.';
IV.3 Où peut-on placer les déclarations?
Les déclar at ions peuvent êt r e placées dans une pr océdur e ou une f onct ion, avant
le mot begin. Les af f ect at ions peuvent êt r e placées dans une pr océdur e ou une f onct ion,
apr ès le mot begin et avant le mot end;. Nous ver r ons plus t ar d que d' aut r es places sont
possibles.
Vous pouvez par exemple modif ier la pr océdur e But t on1Click comme suit :
procedure TForm1.Button1Click(Sender: TObject);
var UneVariable: integer;
var UneAutre: string;
begin
UneVariable:=53;
UneAutre:='Bonjour, ceci est une chaîne.';
ShowMessage(UneAutre);
end;
Remar ques :
? le point -vir gule, est nécessair e apr ès chaque inst r uct ion pour la sépar er de la
suivant e.
? La var iable nommée UneVar iable ne ser t à r ien, elle n' est j amais ut ilisée, aussi
Delphi ignor e t out ce qui concer ne UneVar iable lor s de la compilat ion af in
d' opt imiser le code dans le f ichier exécut able cr éé.

®
Samirboualam@HOTMAI L.COM 15 juin
Programmation Delphi 7.0

IV.4 Les types


IV.4.1 Généralités sur les types
Lor sque vous déclar ez une var iable, le compilat eur a besoin de savoir quelle place
il doit lui r éser ver en mémoir e. En ef f et , il ne f aut pas la même place pour r et enir un
nombr e ent ier et une chaîne.
Avec Delphi, il f aut 4 oct et s pour r et enir un I nt eger , alor s qu' un St ring
nécessit e 9 oct et s en plus des car act èr es composant la chaîne. De plus Delphi a besoin
de connaît r e les opér at ions qu' il peut ef f ect uer avec la var iable. I l peut mult iplier des
ent ier s mais pas des chaînes !
Un t ype est une sor t e de modèle de var iable mais ce n' est pas une variable. Un
t ype ne pr end pas de place en mémoir e, il per met seulement au compilat eur de savoir
quelle place il f aut pr évoir pour chaque var iable déclar ée avec ce t ype et d' int er dir e
t out e opér at ion qui ne conviendr ait pas pour ce t ype.
Par exemple
Type Str80 = string[80];
Signif ie que nous venons de déf inir un t ype nommé St r 80 qui nous per met t r a de
r et enir une chaîne de 80 car act èr es maximum. Aucune place mémoir e n' est allouée à ce
st ade.
La déclar at ion de t ype peut êt r e placée dans la par t ie I nt erf ace ou dans la par t ie
I mplément at ion ou encor e au début (avant le Begin) d' une pr océdur e ou d' une f onct ion.
En aj out ant les lignes
Var S1 : Str80;
Var S2 : Str80;
Delphi r éser ve la mémoir e suf f isant e pour r et enir 80 car act èr es pour S1 et 80
car act èr es pour S2.
Les déclar at ions des var iables peuvent êt r e placées à plusieur s endr oit s mais
pour l' inst ant , on se cont ent er a de les placer au début d' une pr océdur e ou d' une
f onct ion avant le mot Begin.
La ligne :
S1:=123;
causer a une er r eur lor s de la compilat ion.
Alor s que la ligne :
S1:='Bonjour à tous';
est cor r ect e.
L' inst r uct ion d' af f ect at ion d' une valeur à une var iable peut êt r e placée à
plusieur s endr oit s mais pour l' inst ant , on se cont ent er a de la placer ent r e le Begin et le
End d' une pr océdur e ou d' une f onct ion.

IV.4.2 Les types numériques


Les deux t ypes numér iques les plus ut ilisés sont : Integer et Real
Dans le pr emier on est limit é à des nombr es ent ier s de –2 147 483 648 à 2 147 483 647.
-4951
Dans le deuxième les nombr es à vir gule sont admis et la plage va de 3.6 x 10 à
4932
1.1 x 10 avec des valeur s posit ives ou négat ives.

®
Samirboualam@HOTMAI L.COM 16 juin
Programmation Delphi 7.0

IV.4.3 Les types chaînes


Les chaînes cour t es (255 car act èr es maximum) peuvent êt r e du t ype
Shor t St r ing. Depuis la ver sion 2 de Delphi, le t ype String per met de manipuler des
chaînes de t out e t aille.
La place allouée pour une var iable de t ype String change aut omat iquement
lor sque la chaîne change de t aille.

IV.4.4 Le type boolean


Le t ype boolean ne per met que deux ét at s. Une var iable de t ype Boolean ne peut
valoir que True ou False.

IV.4.5 Les types tableaux


Un t ableau per met de r et enir un ensemble de données de même t ype.
I l f aut pr éciser apr ès le mot Ar r ay le pr emier et le der nier indice du t ableau.
Type TMonTableau = array[5..8] of integer;
Quand le compilat eur r encont r er a ces lignes, il n' allouer a pas de mémoir e.
Remar quez le T per met t ant de se souvenir qu' il s' agit d' un t ype. C' est pr at ique, c' est
une bonne habit ude mais ce n' est pas obligat oir e.
Var MonTableau : TMonTableau;
Quand le compilat eur r encont r er a cet t e ligne, il allouer a la mémoir e nécessair e.
Les deux lignes de code pr écédent es pouvaient se r éduir e à une seule :
Var MonTableau : array[5..8] of integer;
Le t ableau ainsi cr éé per met de r et enir 4 nombr es ent ier s. Voici des exemples de
lignes de pr ogr amme cor r ect es :
MonTableau[5] := 758;
MonTableau[6] := MonTableau[5] * 2;
MonTableau[7] := -123;
MonTableau[8] :=MonTableau[5] - MonTableau[7];
Label1.Caption := IntToStr(MonTableau[8]);
La der nièr e ligne suppose que la f iche cont ient un label nommé Label1.
Exemples
Var NotesConcours : array[1..12] Of Real;
Var NotesPromo : array[1..100,1..12] Of Real;
La pr emièr e var iable t ableau per met t r ait de r et enir le r ésult at d' un candidat à un
concour s compor t ant 12 épr euves.
La deuxième var iable t ableau per met t r ait de r et enir le r ésult at de 100 candidat s à un
concour s compor t ant 12 épr euves.
Pour indiquer que le candidat numér o 25 a eu 13,5 à l' épr euve numér o 4, on pour r a
écr ir e :
NotesPromo[25,4] := 15.5;
Pour connaît r e le r ésult at du candidat numér o 25 à l' épr euve numér o 4, on pour r a
écr ir e :
Label1.Caption:='Le candidat a eu ' + IntToStr(NotesPromo[25,4]);

®
Samirboualam@HOTMAI L.COM 17 juin
Programmation Delphi 7.0

IV.4.6 Les types enregistrements


Ne pas conf ondr e avec l' enr egist r ement d' un f ichier sur le disque, il s' agit ici
d' un r egr oupement de t ypes plus simples.
Type TUnePersonne = Record
Nom : string[25];
Prenom : string[25];
Age : ShortInt;
End;
Quand le compilat eur r encont r er a ces lignes, il n' allouer a pas de mémoir e.
Var UnePersonne:TUnePersonne;
Quand le compilat eur r encont r er a cet t e ligne, il allouer a dans la mémoir e une zone d' au
moins 51 oct et s.
UnePersonne.Nom := Boualam;
UnePersonne.Prenom := samir;
UnePersonne.Age := 29;
Quand le compilat eur r encont r er a ces lignes, il r emplir a les zones mémoir es
pr écédemment allouées.
Pour quoi pas un t ableau d' enr egist r ement s ?
Type TTableauPersonnes = array[1..50] of TUnePersonne;
Var TableauPersonnes : TTableauPersonnes;
Pour indiquer par exemple que la t r oisième per sonne s' appelle Boualam Ali et qu' elle a 28
ans, on pour r a t aper :
TableauPersonnes[3].Nom := BOUALAM;
TableauPersonnes[3].Prenom := Ali;
TableauPersonnes[3].Age := 28;
Pour copier cet t e per sonne à la pr emièr e place du t ableau, on pour r a au choix f air e :
TableauPersonnes[1].Nom := TableauPersonnes[3].Nom;
TableauPersonnes[1].Prenom := TableauPersonnes[3].Prenom;
TableauPersonnes[1].Age := TableauPersonnes[3].Age;
Ou plus simplement :
TableauPersonnes[1] := TableauPersonnes[3];

IV.5 Tests
IV.5.1 If then
if expr ession qui peut êt r e vr aie ou f ausse t hen
begin
/ / ce qu' il f aut f air e si vr ai
end;
/ / suit e f ait e dans t ous les cas

Si, par exemple, vous devez gér er le st ock d' un magasin, vous ser ez amené à
cont r ôler le nombr e d' ar t icles af in de décider à quel moment il f audr a passer la
commande. La par t ie du pr ogr amme pour r ait cont enir :

if NbrSacsCimentEnStock < 50 then


begin
EnvoyerCommande('Sacs de ciment',120);
end;

®
Samirboualam@HOTMAI L.COM 18 juin
Programmation Delphi 7.0

Bien sûr ces lignes supposent que la var iable Nbr SacsCiment EnSt ock soit déf inie
et que sa valeur r ef lèt e ef f ect ivement le st ock. Elles supposent également que la
pr océdur e Envoyer Commande exist e et qu' elle demande un par amèt r e chaîne puis un
par amèt r e ent ier .
Pr enons un exemple qui ut ilise le hasar d. Nous allons lancer un dé par exemple
1000 f ois et nous allons compt abiliser le nombr e de f ois que l' on obt ient le 6. Nous
devr ions en génér al obt enir aux envir ons de 167, mais r ien n' int er dit en t héor ie
d' obt enir 1000 f ois le 6 ou de ne j amais le voir !
Dans une nouvelle applicat ion, placez un label et un bout on sur la f iche. En
cliquant sur le bout on, une boucle va simuler les 1000 lancer s du dé, le label nous
per met t r a de voir le r ésult at . Le t est ser a f ait à l' int ér ieur de la boucle (ent r e le begin
et le end cor r espondant au f or ).
Essayez de f air e ce pr ogr amme puis compar er avec ce qui suit .
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
LabelResultat: TLabel;
ButtonLancer: TButton;
procedure ButtonLancerClick(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ButtonLancerClick(Sender: TObject);
var i:integer;
var Nbr6:integer;
begin {début de la procédure}
randomize;
Nbr6:=0;
for i := 1 to 1000 do
begin {début de la boucle}
if random(6)+1 = 6 then
begin {début du test}
inc(Nbr6);
end; {fin du test}
end; {fin de la boucle}
LabelResultat.Caption:='Nombre de 6 : ' + IntToStr(Nbr6);
end; {fin de la procédure}
end.
I l est nécessair e de met t r e 0 dans la var iable Nbr 6 avant de commencer la
boucle, en ef f et , à l' ent r ée dans une pr océdur e ou une f onct ion, les var iables déclar ées
localement ont une valeur quelconque.

®
Samirboualam@HOTMAI L.COM 19 juin
Programmation Delphi 7.0

Essayez de suppr imer la ligne Nbr 6 := 0 et vous obt iendr ez des r ésult at s
cer t ainement f ar f elus.
Essayez de ne pas déclar er la var iable Nbr 6 dans la pr océdur e mais de la
déclar er dans la par t ie classe (ent r e le mot pr ivat e et le mot public). Ne met t ez pas la
ligne Nbr 6 : = 0 ; .

Fig IV.1 Fig IV.2


Cliquer sur le bout on : « Lancer 1000 f ois » Vous obt enez

La pr emièr e f ois que vous cliquez sur le bout on, la var iable Nbr 6 commence à 0,
vous obt enez un nombr e de 6 r aisonnable, la deuxième f ois, il y a cumul avec les lancer s
de la pr emièr e f ois… Si vous ar r êt ez et lancez à nouveau le pr ogr amme, Nbr 6
r ecommence à 0.
Une var iable déclar ée dans la par t ie classe est mise aut omat iquement à 0 pour les
var iables numér iques, à False pour les var iables booléennes et à chaîne vide pour les
var iables chaînes.

IV.5.2 If then else


I l ar r ive assez souvent qu' une act ion doive êt r e f ait e si le t est est vr ai et une
aut r e si le t est est f aux.
if expr ession qui peut êt r e vr aie ou f ausse t hen
begin
/ / ce qu' il f aut f air e si vr ai
end
else
begin
/ / ce qu' il f aut f air e si f aux
end;
/ / suit e f ait e dans t ous les cas

En supposant que Moy ait ét é déf inie comme r eal et qu' elle cont ienne le r ésult at
d' un examen, une par t ie du pr ogr amme pour r ait êt r e :

®
Samirboualam@HOTMAI L.COM 20 juin
Programmation Delphi 7.0

if Moy >= 10 then


begin
Label1.Caption := 'Examen réussi';
end
else
begin
Label1.Caption := 'Echec';
end;
Pour indiquer "supér ieur ou égal" on ut ilise > suivi de =.
L' expr ession Moy >= 10 peut êt r e vr aie (Tr ue) ou f ausse (False)

IV.6 Une boucle


Une boucle per met de r épét er une par t ie d' un pr ogr amme un cer t ain nombr e de
f ois. La synt axe de la boucle est :
For nom de var iable ent ièr e := pr emièr e valeur To der nièr e valeur Do
Begin
ce qu' il f aut f air e plusieur s f ois
End;
Pour met t r e ceci en évidence sur un exemple, j e vous pr opose de cr éer un
deuxième bout on, (j e suppose que vous l' appelez (pr opr iét é Name) "But t onBoucle" et
que vous met t ez "&Essai de boucle" dans sa pr opr iét é Capt ion. Le « Et commer cial »
per met de souligner la let t r e qu’il pr écède pour qu’elle ser t de t ouche de r accour ci
clavier en combinaison avec la t ouche Alt (Alt + e). Fait es un double clic sur le bout on et
complét ez la pr océdur e obt enue comme suit :
Procedure TForm1.ButtonBoucleClick(Sender: TObject);
Var i,S : Integer;
Var Resultat : String;
begin
s:=0;
for i:=1 to 10 do
begin
S :=S+i
End;
Resultat :=IntToStr (S);
ShowMessage ('La somme des dix premières valeurs est ' + Resultat);
end;

Fig IV.3 Fig IV.4


Cliquer su le bout on Essai de boucle ou vous obt iendr ez :
Appuyer au clavier sur Alt E

®
Samirboualam@HOTMAI L.COM 21 juin
Programmation Delphi 7.0

En exécut ant le pr ogr amme et en cliquant sur le bout on "Essai de boucle", vous
obt enez un message qui af f iche la somme des dix pr emièr es valeur s (de 1 à 10).
La f onct ion I nt ToSt r per met de conver t ir le nombr e placé dans la var iable S en une
chaîne. Lor sque la var iable S cont ient par exemple le nombr e 3, la var iable Result at
r eçoit la chaîne ' 3' . Les deux chaînes ‘’La somme des dix pr emièr es valeur s est ‘' et
Result at sont mises l' une au bout de l' aut r e à l' aide du signe +. On dit que les chaînes
ont ét é concat énées.

IV.7 Débogage
Placez le cur seur sur la ligne commençant par For et t apez sur F5 (on peut aussi
f air e "Aj out er point d' ar r êt " à l' aide du menu Exécut er ). Exécut ez le pr ogr amme et
cliquez sur le bout on "Essai de boucle". Le pr ogr amme s' ar r êt e sur la ligne cont enant le
point d' ar r êt . Ut ilisez F8 ou F7 pour avancer en "Pas à Pas".
Pour obser ver le cont enu d' une var iable, il suf f it de placer (sans cliquer ) le
point eur de la sour is sur le nom de la variable et d' at t endr e une seconde. Avec t out es
les ver sions, placez le cur seur sur la var iable et f ait es CTRL + F7 (ou ut ilisez
"Evaluer / modif ier " dans le menu Exécut er ). Pour cont inuer l' exécut ion du pr ogr amme à
la vit esse nor male, vous pouvez t aper sur F9.
Remar que :
Si vous obt enez le message "La var iable … est inaccessible ici du f ait de
l' opt imisat ion" vous pouvez dans "Pr oj et " "Opt ion" "Compilat eur " suppr imer la coche
dans "Opt imisat ion". L' exécut able obt enu ser a un peu moins per f or mant , mais vous
pour r ez voir t out es les var iables dès la pr ochaine compilat ion.

IV.8 Comment supprimer un composant


Pour suppr imer par exemple But t on1, vous allez commencer par vider t out es les
mét hodes liées aux événement s de But t on1. Dans not r e cas, seul l' événement "OnClick"
déclenche une pr océdur e. Suppr imez les lignes sit uées ent r e la ligne "Pr ocedur e …" et la
ligne "Begin" ainsi que les lignes ent r e Begin et End;
Vot r e pr océdur e doit devenir :
procedure TForm1.Button1Click(Sender: TObject);
begin

end;
Tapez sur F12 pour voir la f iche et suppr imez le bout on "But t on1"
A la pr ochaine sauvegar de ou à la pr ochaine compilat ion, les lignes inut iles ser ont
aut omat iquement suppr imées.

®
Samirboualam@HOTMAI L.COM 22 juin
Programmation Delphi 7.0

V QUELQUES CONSEILS
A la f in de cet t e par t ie, vous ser ez capable de:
? ut iliser Delphi avec un peu plus d' assur ance,
? impr imer depuis un pr ogr amme Delphi,
? const r uir e une applicat ion const it uée de plusieur s f iches.

V.1 Questions fondamentales


Quand on abor de Delphi on est souvent ar r êt é par des pr oblèmes de moindr e
impor t ance, mais qui demandent du t emps pour les r ésoudr e. Nous allons en ét udier
quelques uns dont la r ésolut ion n' est pas évident e, ét ant ent endu que d' aut r es ser ont
ét udiés au f ur et à mesur e dans les pages suivant es.
Comment t r ouver de l' aide en cas de pr oblèmes ?
Le syst ème d' aide de Delphi est ext r êmement bien conçu, bien qu' il soit (ou
par ce qu' il est ) volumineux. Tout ef ois on peut s' y per dr e et avoir du mal à t r ouver les
r enseignement s cher chés. Pour mieux compr endr e son ut ilisat ion nous allons voir
quelques conseils.
I l est impor t ant , dans un envir onnement t el que Delphi, d' ut iliser cor r ect ement
et ef f icacement l' aide en ligne. Les pr oblèmes r encont r és peuvent êt r e diver s:
? on est complèt ement per du.
? on ne sait pas comment expr imer ce qu' on cher che.
? on t our ne en r ond.
? et c. …
Passons en r evue quelques exemple d' appels à l' aide:
On aimer ait connaît r e la synt axe d' une inst r uct ion Pascal
? placer le cur seur sur un mot , par exemple if
? appuyer sur <F1> et at t endr e le r ésult at .
On aimer ait savoir s' il exist e une pr océdur e qui donne la dat e du j our
? lancer l' aide de Delphi et choisir "Réf ér ence de la bibliot hèque Delphi" .
? r echer cher , par exemple, le mot "dat e" ce qui devr ait r ésoudr e le pr oblème.
On aimer ait savoir comment aj out er des ligne dans un composant mémo
? pour obt enir de l' aide concer nant un obj et de Delphi, placez-le d' abor d sur une
f iche, sélect ionnez-le, puis appuyer sur <F1>.
génér alement l' aide donne une explicat ion succinct e sur l' ut ilisat ion de cet obj et , mais
donne également la list e des pr opr iét és, mét hodes et événement s associés à cet obj et .
de f il en aiguille on t r ouve génér alement les r enseignement s cher chés.
Comment t er miner une applicat ion ?
I l f aut savoir que Delphi gèr e un obj et "Applicat ion" qui r epr ésent e j ust ement
l' applicat ion en cour s. cet obj et possède ent r e aut r es une mét hode "Ter minat e" qui
t er mine l' exécut ion de l' applicat ion.
Comment cr éer et ut iliser d' aut r es f iches que la f iche pr incipale ?
? cr éez la f iche pr incipale "f iche1" (avec par exemple un bout on pour appeler une
seconde f iche).
? cr éez la seconde f iche "f iche2".
? dans la par t ie I mplement at ion de la f iche1 placez la clause: uses unit2; où
unit 2 est l' unit é associée à la f iche2

®
Samirboualam@HOTMAI L.COM 23 juin
Programmation Delphi 7.0

pour ouvr ir la f iche2 depuis la f iche1, t apez:


Form2.show;
pour f er mer la f che2, t apez:
Form2.close;

V.2 Comment imprimer ?


I l y a plusieur s manièr e d' impr imer avec Delphi

V.2.1 Impression du contenu d'une fiche


Si on place un bout on Print dans une f iche il est possible d' impr imer le cont enu
de la f iche de la manièr e suivant e:
procedure Tform1.PrintClick (Sender: Tobject);
begin
Print;
end;

V.2.2 Utilisation du printdialog


Voici un exemple d' ut ilisat ion du dialogue st andar d d' impr ession:
procedure Tform1.PrintClick (Sender: Tobject);
var i : integer;
begin
if PD1.execute then begin
Print;
if (PD1.Copies > 1) then
for i := 1 to PD1.Copies - 1 do
Print;
end;
end;

V.2.3 Impression par ma méthode "Brute"


Lor squ' il s' agit d' impr imer du t ext e sans t r op de r af f inement s, avec une seule
f ont e, on peut ut iliser une mét hode simple, dont voici un exemple:
procedure Tform1.ImprimerClick(Sender: TObject);
var PrintFile: system.text;
i : integer;
begin
if PD1.execute then begin
assignPrn (PrintFile);
Rewrite (PrintFile);
Printer.Canvas.Font := Liste.Font;
for i := 0 to Liste.Items.count - 1 do
Writeln (PrintFile, Liste.Items[i]);
System.CloseFile (PrintFile);
end;
end;

I l f aut cependant aj out er l' unit é Pr int er s dans la clause "uses".

®
Samirboualam@HOTMAI L.COM 24 juin
Programmation Delphi 7.0

V.3 Comment introduire un délai d'attente ?


Dans un envir onnement comme Windows, et de sur cr oît Windows 9x ou Windows
NT, il n’est pas j udicieux d’int r oduir e une t empor isat ion comme en mode "DOS" avec une
inst r uct ion du genr e delay (nnn) . En ef f et , il f aut évit er de monopoliser le pr ocesseur
dans un envir onnement mult it âches. D’aut r es moyens per met t ent d’obt enir le r ésult at
désir é. Dans Delphi 1.0 on peut ut iliser un t imer avec la pr opr iét é int erval ayant pour
valeur le délai désir é. Une f ois l’événement OnTimer déclenché, il suf f it de désact iver le
t imer .
Delphi per met de f air e appel à la f onct ion sleep. Pour obt enir un délai de 3
secondes on écr ir a: Sleep (3000);

V.4 Comment laisser la main à Windows de temps à autre ?


I l est par f ois impor t ant de laisser Windows r épondr e à des messages pr ovenant
de l' applicat ion en cour s ou d' aut r es applicat ions concur r ent es. C' est le cas, par
exemple, lor s de longues boucles de calculs ou lor sque l' on veut laisser r éagir
l' applicat ion en cour s. Dans ces cas on peut insér er l' inst r uct ion:
Applicat ion. ProcessMessages;
Ceci per met , par exemple dans une boucle sans f in, de pouvoir ar r êt er
nor malement l' applicat ion. En ef f et , la demande d' ar r êt de l' applicat ion se t r aduit par
l' envoi d' un message. Pour qu' il soit pr is en compt e, il f aut laisser Windows pr endr e la
main.

V.5 Application comportant plusieurs fiches


Génér alement , lor sque l' on maît r ise l' appel et l' af f ichage des f iches, on a
t endance à cr éer des applicat ions compor t ant beaucoup de f iches. Ce n' est pas t ouj our s
une bonne idée. Pour s' en convaincr e, il suf f it de r egar der aut our de soi. Beaucoup
d' applicat ions (Wor d, Excel, pr ogr amme de dessin diver s…) sont de t ype MDI (avec une
f iche pr incipale et une ou plusieur s f enêt r es f illes, t out es du même t ype). I l est assez
r ar e de voir des applicat ions qui ouvr ent de mult iples f enêt r es. Mais alor s, comment
f air e ?
Plusieur s t echniques sont possibles, per met t ant de r éduir e le nombr e de f iches.
On peut :
? ut iliser une seule f iche et changer sont cont enu selon les besoins;
? f air e abondamment appel aux boît es de dialogue depuis une f iche pr incipale.
? ut iliser les f iches mult ipages à onglet s;
? changer de mét ier .

Si t out ef ois, on est cont r aint à l' ut ilisat ion de plusieur s f iches, il f aut connaît r e
quelques pr incipes.
Supposons que depuis For m1 (dans unit 1) on veuille ouvr ir For m2 (dans unit 2); il
convient de placer la clause uses unit 2 ; dans la par t ie implement at ion de l' unit é unit 1.
En cas d' oubli, Delphi pr opose de placer cet t e clause à vot r e place par le message
suivant :

®
Samirboualam@HOTMAI L.COM 25 juin
Programmation Delphi 7.0

Fig V.1
Apr ès avoir accept é voici la clause uses que Delphi aj out e à l' unit é de la For m1:
unit Unit1;
interface

implementation
uses Unit2;
Voyons maint enant ce que signif ie exact ement af f icher une f enêt r e. Quand on
commence une nouvelle applicat ion (avec une f iche vide) le pr oj et se pr ésent e sous la
f or me suivant e:
program Project1;
uses Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
On peut alor s aj out er une seconde f iche au pr oj et à l' aide de l' opt ion Nouvelle
f iche du menu Fichier . Le pr oj et devient alor s:
program Project1;
uses Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
Par déf aut , Delphi cr ée aut omat iquement les deux f iches. Mais cr éer ne signif ie
pas mont r er . Une seule f iche (la pr emièr e) est af f ichée lor s du lancement du
pr ogr amme. La seconde est cr ée, mais pas af f ichée. On peut l' af f icher et la cacher à
l' aide des mét hodes Show, Hide et Close. Show mont r e la f iche. Hide cache la f iche
(met la pr opr iét é visible à f alse). Close f er me la f iche.

®
Samirboualam@HOTMAI L.COM 26 juin
Programmation Delphi 7.0

VI PREMIERS PAS
A la f in de cet t e par t ie, vous ser ez capable de:
? accéder au code sour ce d' une applicat ion,
? const r uir e une applicat ion t r ès simple.

VI.1 Adjonction d'objets sur une fiche


Nous allons suivr e ces bons conseils et commencer à placer des obj et s sur not r e
f iche (que nous appeller ons Exemple).

VI.2 1ère étape: mise en place d'un bouton


Le moyen le plus simple pour placer un obj et (ou cont r ôle, ou encor e composant )
sur une f iche est de le r epér er dans la list e pr oposée par Delphi (par t ie supér ieur e de
l' écr an) et de double-cliquer sur son icône. Un obj et de ce t ype est alor s insér é au
cent r e de la f iche. Un aut r e moyen pour placer un obj et est le suivant : apr ès avoir cliqué
sur son icône, il f aut cliquer sur la f iche et déplacer la sour is; l' obj et pr end alor s les
dimensions imposées.

Fig. VI.1
Voici comment le code cor r espondant à la f iche est aut omat iquement modif ié par Delphi

Fig. VI.2

®
Samirboualam@HOTMAI L.COM 27 juin
Programmation Delphi 7.0

On peut const at er que:


Lor sque l' on change le nom de la f iche de For m1 en Exemple (dans les pr opr iét és
de l’inspect eur d’obj et s), Delphi t r anspose ce changement dans le code sour ce. Une
f iche possède aussi une pr opr iét é appelée Capt ion (t it r e ou ét iquet t e). Cet t e pr opr iét é
pr end par déf aut la valeur du nom de l' obj et . Tout ef ois il est possible de modif ier ce
t it r e. C' est Capt ion et non Name qui appar aît comme t it r e de la f iche.
Delphi a placé un nouveau champ dans la classe Texemple: But t on1 qui est de t ype
(pr édéf ini) Tbut t on. I l cor r espond à not r e nouveau bout on.

VI.3 Sauvegarde du projet


Delphi appelle Pr oj et une applicat ion Windows qu' il gèr e. Avant de sauvegar der
t ous les f ichier s d' un pr oj et sur disque il est conseillé de cr éer un r éper t oir e
per met t ant de les accueillir . La sauvegar de s' obt ient à l' aide de l' opt ion Fichier /
Enr egist r er le pr oj et sous... Si aucune sauvegar de n' a encor e ét é ef f ect uée, Delphi
pr opose d' abor d d' enr egist r er la unit sous le nom UNI T1.PAS. I l vaut mieux, comme
indiqué plus haut , changer le nom que Delphi pr opose par déf aut ; par exemple, indiquons
EXU1.pas. Puis Delphi demande le nom du pr oj et et pr opose PROJ ETCT1.DPR. Là nous
spécif ions, par exemple, EXE1.DPR. Dans la f igur e qui suit , on voit comment Delphi a
r éper cut é ces choix dans le code sour ce. Af in de ne pas avoir de dout es sur les
dif f ér ent s noms de f ichier s, il convient de bien compr endr e comment Delphi les gèr e.

Fig. VI.3
J usqu' à pr ésent nous avons vu une unit, mais pas de pr ogr amme pr incipal. Où se
cache-t -il ? On peut le voir à l' aide de la commande Voir le Sour ce du pr oj et du menu
Pr oj et . Sur la f igur e VI .3 on voit une f enêt r e avec deux onglet s: un pour le pr ogr amme
pr incipal (pr oj et ) et un pour la unit. Si le pr oj et f ait appel à plus d' unit, il y aur ait plus
d' onglet s.

®
Samirboualam@HOTMAI L.COM 28 juin
Programmation Delphi 7.0

On const at e que EX1 est le nom du pr oj et (EX1.DPR), mais aussi le nom du


pr ogr amme. De plus, dans la clause uses on voit la ligne:
exu1 in 'exu1.pas' {Exemple};
où:
- exu1 est le nom int er ne de la unit.
- exu1.pas est le nom du f ichier dans lequel se t r ouve la unit (pas f or cément le même)
- Exemple est le nom de la f iche associée à cet t e unit .
On peut êt r e déçu par la simplicit é du pr ogr amme pr incipal. En f ait , il ne ser a
j amais beaucoup plus imposant que cet exemple.

VI.4 Pourquoi tant de fichiers ?


Un vr ai pr oj et complexe écr it en Delphi peut compt er , du moins dans la phase de
développement , plusieur s dizaines de f ichier s. On compr end donc pour quoi il est
impor t ant de bien savoir à quoi ils cor r espondent et où il convient de les sauvegar der .
Dans la plupar t des exemples simples de ce cour s, les f ichier s génér és sont les suivant s:
Type Créat ion Nécessaire Descript ion
pour compiler
DPR Développement Oui Pr oj et (pr ogr amme pr incipal)
PAS Développement Oui Sour ce des units
DCU Compilat ion Non Units compilées
EXE Compilat ion Non Code exécut able de l' applicat ion
DFM Développement Oui Cont ient la descr ipt ion des pr opr iét és d' une
f iche et des cont r ôles qu' elle cont ient
RES Développement Oui Fichier binair e associé au pr oj et . Cont ient l' icône
par déf aut . Plusieur s f ichier s RES peuvent êt r e
aj out és au pr oj et
~PA développement non Copie de sauvegar de du PAS cor r espondant
~DP développement non Copie de sauvegar de du DPR cor r espondant
~DF développement non Copie de sauvegar de du DFM cor r espondant
Fig. VI.4
D' aut r es t ype de f ichier s peuvent êt r e cr éés, ut ilisés ou gér és par Delphi:
Type Créat ion Nécessaire pour Descript ion
compiler
BMP, I CO développement non (mais peuvent êt r e Bit maps et icons diver s
nécessair es à
l' exécut ion)
DOF développement oui si des opt ions sont Cont ient les valeur s cour ant es des
spécif iées opt ions du pr oj et
DSK développement non Cont ient des inf or mat ions concer nant
l' envir onnement de développement
(posit ion des f enêt r es, édit eur , et c…)
DSM compilat ion non Cont ient les inf or mat ions associées
au Br owser
fig. VI.5

®
Samirboualam@HOTMAI L.COM 29 juin
Programmation Delphi 7.0

VI.5 2ème étape: utilisation des composants


Revenons à not r e pr emier pr ogr amme et aj out ons-lui quelques f onct ionnalit és,
par exemple:
? le bout on déj à placé va ser vir à ar r êt er le pr ogr amme.
? un nouveau bout on "Dessin" appeller a une seconde f iche sur laquelle on placer a
une image de t ype BMP. Ce bout on ser a r endu invisible.
? un nouveau champ de t ype Edit dont le cont enu pour r a r endr e le bout on "Dessin"
visible.
Voici comment se pr ésent e la nouvelle f iche pr incipale:

Fig. VI.6

Nous allons f air e r éagir not r e pr ogr amme à 3 événement s:


? Lor sque le cont enu du champ Edit est "démar r er " le bout on "Dessin" doit devenir
visible.
? lor sque l' on clique sur le bout on "Fin" le pr ogr amme doit se t er miner .
? Lor sque l' on clique sur le bout on "Dessin" le pr ogr amme doit ouvr ir une seconde
f iche.
A ce point il est t r ès impor t ant , voir même vit al, de compr endr e le pr incipe du
r aisonnement qui mène à la const r uct ion d' un pr ogr amme. I l f aut t ouj our s se poser la
quest ion suivant e: J e veux qu' il se passe quoi, lor sque quel événement se pr oduit sur
quel obj et ?
Répondr e à ces t r ois quest ions est obligat oir e. Si un dout e subsist e concer nant -
ne ser ait -ce qu' une de ces t r ois quest ions-, alor s le pr incipe même de la r éalisat ion
d' applicat ions Windows avec Delphi est f or t ement compr omis.
Pour chacun de nos t r ois obj et s nous allons r épondr e à ces t r ois quest ions:
? j e veux qu' il se passe "r endr e le bout on Dessin visible" quand l' événement
"changement du cont enu et cont enu vaut ' démar r er ' " se pr oduit sur l' obj et
"Edit ".
? j e veux qu' il se passe "ar r êt du pr ogr amme" quand l' événement "cliquer " se
pr oduit sur l' obj et "bout on Fin".
? j e veux qu' il se passe "ouvr ir une seconde f iche" quand l' événement "cliquer " se
pr oduit sur l' obj et "bout on Dessin".
En ef f et , il y a génér alement une r éponse lor squ' un événement sur vient sur un
obj et donné. Voyons maint enant comment implément er ces r éponses.

®
Samirboualam@HOTMAI L.COM 30 juin
Programmation Delphi 7.0

Nous décr ivons ici une des diver ses mét hodes per met t ant de placer des
inst r uct ions de pr ogr amme (du code) "der r ièr e" un obj et en r éponse à un événement .
Commencez par cliquer sur le champ Edit pour le sélect ionner .

Fig. VI.7
Dans l' inspect eur d' obj et s, choisissez l' onglet "Evénement s" et double-cliquez
dans la case blanche en f ace de l' événement "OnChange". Cela signif ie que l' on veut
écr ir e du code qui ser a exécut é chaque f ois que le cont enu de cet obj et change:

Fig. VI.9
Fig. VI.8 Voici ce qui appar aît alor s:

Nous allons placer le code suivant à l' endr oit où Delphi a posit ionné le cur seur . A
chaque f ois que le cont enu du champ Edit change, la pr océdur e Texemple.mot Change est
appelée. Quand le cont enu cor r espond à ce que nous avons pr é-déf ini pour r endr e le
bout on Dessin visible, la pr opr iét é "visible" de l' obj et "Dessin" est mise à "vr ai". I l est
donc possible, et même cour ant , de modif ier des pr opr iét és d' obj et s en r éponse à des
événement s.

®
Samirboualam@HOTMAI L.COM 31 juin
Programmation Delphi 7.0

Fig. VI.10

Pr océdez de la même manièr e avec le bout on "Fin". Voici le code cor r espondant :

Fig. VI.11

Avant de passer à la suit e il f aut cr éer


une nouvelle f iche (menu Fichier / Nouvelle
f iche) dont le nom ser a "Expo". Dans
cet t e f iche placez un cont r ôle de t ype
image dont on gar de le nom ("I mage1") et
un bout on de t ype Bit Bt n à part ir de la
palet t e Supplément et met t ez sa
pr opr iét é Kind à BkClose pour que la f iche
se f er me quand on clique dessus et cela
sans écr ir e la moindr e ligne de code. Ce
t ype de bout on à la f acult é de cont enir un
t ext e (Capt ion) et une image. Voici cet t e Fig. VI.12
f iche en const r uct ion:

®
Samirboualam@HOTMAI L.COM 32 juin
Programmation Delphi 7.0

Revenez sur la pr emièr e


f iche en placez le code
suivant dans l' événement
"OnClick" du bout on
"Dessin". Ce code se r ésume
à Expo.show où Expo est le
nom de la seconde f iche et
show est la mét hode
per met t ant de char ger et
d' af f icher une f iche.

Fig. VI.13

VI.6 Quelques précisions:


lor s de la sauvegar de du pr oj et , Delphi demande quel nom il doit donner au f ichier
cont enant l' unit é r at t achée à la f iche "Expo". Pour des r aisons de cohér ence (la
pr emièr e f iche ét ant dans "exu1.pas") nous choisissons "exu2.pas";
lor s de la compilat ion du pr oj et (menu Pr oj et / Compiler ) Delphi af f iche un
message d' er r eur . En ef f et , depuis la pr emièr e f iche on f ait r éf ér ence à la deuxième
f iche, mais cet t e der nièr e (donc son unit é) est inconnue de la pr emièr e f iche (donc
unit é). Dans une gr ande bont é d' âme Delphi pr opose d' aj out er la ligne uses exu2; dans
l' unit é de la pr emièr e f iche, ce qui per met de suppr imer l' er r eur .

Fig. VI.14

A ce st ade vous pouvez déj à exécut er le pr ogr amme, appeler la seconde f iche, la
f er mer , et c. Tout ef ois, la seconde f iche ne cont ient pas d' image visible. Nous allons voir
3 possibilit és de placer une image dans cet t e f iche.

Première solut ion: placer une image dans la pr opr iét é "Pict ur e" de l' obj et "I mage1’’ en
cliquant sur les 3 point s à côt é de "(vide)" puis cliquer sur le bout on Char ger et
sélect ionnez à par t ir d’un dossier une image.

®
Samirboualam@HOTMAI L.COM 33 juin
Programmation Delphi 7.0

Fig. VI.15 Fig. VI.16

Voici comment se
pr ésent e la f iche
apr ès avoir choisi
une image

Fig. VI.17

Deuxième solut ion: char ger une image depuis le code lor sque la f iche "Expo" est act ivée.
Par exemple, placez le code suivant dans l' événement "OnAct ivat e" de la f iche
"Expo": En ef f et , la pr opr iét é "pict ur e" possède une mét hode "loadf r omf ile" per met t ant
de char ger une image. Taper ent r e par ent hèse et ent r e cot e le nom du f ichier , du
lect eur et du chemin.

Fig. VI.18

®
Samirboualam@HOTMAI L.COM 34 juin
Programmation Delphi 7.0

Troisième solut ion: pr oposer à l' ut ilisat eur de choisir lui-même l' image qu' il veut voir .
Pour cela, on ut ilise un des composant s de dialogue st andar d pr oposés par Windows.
Suppr imez le code f igur ant sur la
f igur e VI .18. Aj out er un bout on dont le
nom est "Char ger " sur la seconde f iche.
Aj out er sur cet t e même f iche un
OpenDialog à par t ir de la palet t e de
composant s que l' on appeller a "Ouvr ir ".
Voici comment se pr ésent e la f iche

Fig. VI.19

placer le code suivant


dans l' événement
"OnClick" du bout on
"Char ger ":

Fig. VI.20
Lor s de l' exécut ion du pr ogr amme, une boit e de dialogue appar aît quand on clique
sur le bout on "Char ger ", sélect ionner le lect eur , le dossier puis le f ichier de l' image
ensuit e cliquer sur le bout on Ouvr ir . Dans le code que nous avons écr it (f igur e VI .20),
"Ouvr ir " est l' obj et "dialogue st andar d d' ouver t ur e de f ichier ", "execut e" est une des
mét hodes de ce dialogue; elle per met de l' exécut er ou de le mont r er . "Filename" est une
pr opr iét é de ce dialogue cont enant le nom du f ichier choisi. I l est f or t ement conseillé
de t est er le r ésult at de la mét hode "execut e" avant d' ut iliser "Ouvrir. f ilename", car si
l' ut ilisat eur abandonne le dialogue ("cancel") la pr opr iét é " f ilename" n' est pas ut ilisable.
I l est bien ent endu possible de spécif ier le r éper t oir e de dépar t , le ou les ext ensions de
f ichier s accept ées par déf aut , et c. Ces dif f ér ent es amélior at ions sont laissées comme
exer cice.

VI.7 Conclusion
Le pet it exemple const r uit ci-dessus a pour but de:
- mont r er quels sont les pr incipes de base à ut iliser pour const r uir e une applicat ion avec
Delphi.
- mont r er qu' avec quelques lignes de code il est possible de const r uir e une applicat ion
f onct ionnelle, sûr e et d' un aspect pr opr e
- donner envie de r éf léchir sur de nouveaux pr oblèmes à r ésoudr e à l' aide de Delphi
Rappelons encor e que :
Delphi per met d' obt enir des pr ogr ammes dont les per f or mances sont au moins aussi
bonnes que celles obt enues avec le meilleur compilat eur C, car der r ièr e Delphi il y a du C
pour ce qui est de la génér at ion du code et de l' opt imisat ion.

®
Samirboualam@HOTMAI L.COM 35 juin
Programmation Delphi 7.0

VII EXEMPLE D’APPLICATION


VII.1 Comment préparer un projet ?
L' exemple t r ait é dans ce chapit r e vous per met t r a de suivr e pas à pas le
pr ocessus st andar d de cr éat ion d' un pr oj et à commencer par la f iche pr incipale, les
menus j usqu' à appels de f iches et de pr océdur es.

VII.2 Résumé du projet


Nous développer ons une pet it e applicat ion qui per met de r éaliser les opér at ions
de base: Addit ion, pr oduit , Soust r act ion et Division. Les valeur s sont int r oduit es dans
deux zones de t ext es dif f ér ent es, puis on choisit à l' aide d' une commande de menu ou
un bout on de bar r e d' out ils l' opér at ion à r éaliser . On ver r a également comment af f icher
des t ext es d' aide pour guider l' ut ilisat eur . Ces t ext es d' aide vont s' af f icher comme
inf o-bulle et dans la bar r e d' ét at également (à la manièr e Of f ice). Ensuit e, on ver r a
comment r éaliser l' appel des f iches (A pr opos…). Et enf in, on s' int ér esser a aux
Except ions: Compr endr e la signif icat ion des except ions, les appliquer dans des
pr ogr ammes et développer ses pr opr es t r ait ement d' except ions.

VII.3 Créer la fiche principale


A son lancement , Delphi cr ée un pr oj et cont enant une f iche vide qu’il appelle
For m1 . Vous pouvez le pr endr e pour vot r e pr emier pr oj et ou en cr éer un nouveau par la
Commande Fichier/ Nouvelle applicat ion. Dans une applicat ion, la f iche pr incipale
compor t e génér alement une bar r e de menus et une bar r e d' out ils qui per met t ent
d' assur er les appels de f iches ou de pr océdur es.
Commençant par donner un nom plus or iginal à la f iche. Pour cela, sélect ionnez la
pr opr iét é Capt ion de l’inspect eur d’obj et . cet t e pr opr iét é déf init le t it r e de la f iche.
Saisissez alor s comme t it r e : Mon premier programme delphi. Remar quez que le t it r e
de la f enêt r e change au f ur et à mesur e de la saisie.

Fig 6.1
Pour qu’à l’exécut ion, la f iche pr incipale de l’applicat ion occupe le plein écr an,
choisissez la valeur WsMaximized pour la pr opr iét é WindowSt at e de la f iche.

®
Samirboualam@HOTMAI L.COM 36 juin
Programmation Delphi 7.0

VII.4 Ajouter des composants


Maint enant vous allez commencer à habiller vot r e f iche pour en f air e un masque
de saisie. Dans l' onglet St andard, cliquer sur le composant Label et déposer le sur la
f iche. I l s’appelle par déf aut Label1. A l’aide de la pr opr iét é Capt ion du label, donner un
nom signif icat if . Dans not r e cas c’est : &Valeur . On f ait pr écéder le nom par & pour le
r endr e accessible avec le clavier (Alt +V).
Raj out er deux aut r es labels que vous placer iez ver t icalement avec le pr emier
label. Nommez les r espect ivement : &Ar gument et &Résult at . Placez à cot é de ces t r ois
labels et ver t icalement aussi, t r ois composant s Edit . Changer les cont enus de la
pr opr iét é Text des composant s Edit pour qu’ils af f ichent zér o quand on exécut e le
pr ogr amme. Pour qu’ils aient les même dimensions, ut iliser les pr opr iét és Height
(Haut eur ) et Widt h (lar geur ). Af in de les aligner ver t icalement , ut iliser la même valeur
pour la pr opr iét é Lef t . Ou bien ut iliser la palet t e d’alignement du menu Voir pour bien
ligner les composant s (hor izont alement et ver t icalement )
Placer sur la f iche deux composant s UpDown que vous t r ouver ez dans la palet t e
Win32. changer leur s pr opr iét és Associat e af in de les lier à Edit 1 et Edit 2. Les
pr opr iét és Min et Max per met t ent de f ixer le plaf ond et le plancher qu’on peut
at t eindr e à l’aide des UpDown. La pr opr iét é I ncrement per met de spécif ier le pas
d’incr ément at ion ou de décr ément at ion du UpDown.
Remar que
Pour que les r accour cis clavier s f onct ionnent ent r e les labels et les Edit
r espect if s qui leur s sont associés, r elier chaque label à un Edit en ut ilisant la pr opr iét é
FocusCont r ol du composant Label.

Fig 6.2
Astuces
Pour placer plusieur s copies du même composant , combiner la t ouche Shif t au clic
de sour is au moment de la sélect ion du composant . I l suf f it ensuit e de déposer sur la
f iche par dif f ér ent clics le nombr e de copies souhait ées. Pour libér er la sour is, cliquer
sur le pr emier composant (le plus à gauche) sous f or me d' une f lèche.
Pour sélect ionner plusieur s composant s de la f iche en même t emps, maint enez la
t ouche Shif t enf oncée et cliquer sur les dif f ér ent s composant s.

®
Samirboualam@HOTMAI L.COM 37 juin
Programmation Delphi 7.0

VII.5 Création d’un menu


Dans l' onglet St andard, cliquer sur le bout on MainMenu puis déposer le sur la
f iche elle même. Double-cliquer sur ce composant et commencer à const r uir e vot r e menu
en déf inissant les libellés des commandes avec la pr opr iét é Capt ion. Commencer d’abor d
par cr éer t r ois en t êt e de menus, dont les pr opr iét és Capt ion r espect ives sont :
&Opér at ions, &Edit ion et &Aide.
Dans le pr emier menu (Opér at ions), déf inissez les ent r ées suivant es :
Capt ion Short Cut
&Addit ion Ct r l+A
&Pr oduit Ct r l+P
&Soust r act ion Ct r l+S
&Division Ct r l+D
-
&Fer mer Ct r l+F4
Dans le deuxième menu (Edit ion) on va met t r e les commandes : Couper (Ct r l+x),
Copier (Ct r l+C) et Coller (Ct r l+V).
Dans le t r oisième menu (Aide) qui va ser vir à l’appel d’une aut r e f iche, on va
placer une seule commande : A propos…
La pr opr iét é Shor t Cut per met de cr éer des r accour cis clavier s aux commandes
des menus.
Le signe moins (-) ser t à cr éer un t r ait sépar at eur ent r e un gr oupe de commandes
du menu.

Fig 6.3
Double cliquer sur la commande Fermer (à par t ir du concept eur des menus). Vous
êt es alor s dans l' unit é cor r espondant e de la f iche, à l' int ér ieur d' un cor ps de pr océdur e
génér ée aut omat iquement par le mot eur de Delphi. Taper la commande Close ;
Procedure TForm1.Button1Click (Sender: TObject);
begin
Close
end;
la commande Close per met de f er mer le pr ogr amme. Revenez sur la f iche en
appuyant au clavier sur F12.

®
Samirboualam@HOTMAI L.COM 38 juin
Programmation Delphi 7.0

Double cliquer sur Addit ion et r aj out er la ligne de code suivant e :


edit3.text:= floattostr(strtofloat(edit1.text) + strtofloat(edit2.text));
Double cliquer sur Produit et r aj out er la ligne de code suivant e :
edit3.text:= floattostr(strtofloat(edit1.text) * strtofloat(edit2.text));
Double cliquer sur Soust ract ion et r aj out er la ligne de code suivant e :
edit3.text:= floattostr(strtofloat(edit1.text) - strtofloat(edit2.text));
Double cliquer sur Division et r aj out er la ligne de code suivant e :
edit3.text:= floattostr(strtofloat(edit1.text) / strtofloat(edit2.text));

Remarque: On est obligé de conver t ir les valeur s saisies dans les dif f ér ent s composant s
Edit af in de pouvoir r éaliser des opér at ions de calculs avec ces données par ce qu’elles
sont , par déf aut , de t ype t ext e (Car act èr e). Si cet t e conver sion ne s’est pas f ait e,
l’opér at ion d’addit ion se solder ait par un r ésult at de concat énat ion de deux chaînes de
car act èr es (Ex: 5+3 donner ait comme r ésult at 53).
VII.6 Des commandes sans programmation
Dans Delphi, il est possible d’int r oduir e des commandes dans des menus sans
avoir à écr ir e la moindr e ligne de code. En ef f et , Delphi est dot é d’un composant appelé
Act ionList qui pr opose un j eu de commandes qu’on r et r ouve dans la plupar t d’applicat ions
pr of essionnelles.
Exemple : Les commandes du menu Edit ion : couper , Copier et Coller .

Commencer d’abor d par l’aj out d’un


composant Act ionList à par t ir de la palet t e
St andard, ensuit e double cliquer dessus.
Dans la boit e de dialogue qui appar aît
cliquer sur Nouvelle act ion st andard.

Fig 6.4

Une aut r e boit e de dialogue appar aît , elle cont ient le j eu de commandes pr oposé
par le Act ionList . Sélect ionner les act ions que vous voulez aj out er , puis conf ir mer par
OK. Dans not r e cas ce sont : Tedit Cut , Tedit Copy, Tedit Past e.

Fig 6.5

®
Samirboualam@HOTMAI L.COM 39 juin
Programmation Delphi 7.0

De r et our à la f iche, double cliquer sur le composant du menu, puis sélect ionner la
commande Couper du menu Edit ion, ensuit e à l’aide de la pr opr iét é Act ion de la
commande, lier la à Tedit Cut . Pr océder de la même manièr e pour Copier (TEdit Copy) et
Coller (TEdit Past e).
VII.7 Création d’un menu contextuel
Ce t ype de menu exist e depuis longt emps, mais il a acquis une signif icat ion
par t iculièr e avec Windows95 : Lor squ’on appuie sur le bout on dr oit de la sour is, un menu
cont ext uel s’af f iche, il pr opose de nombr euses f onct ions ut iles.
Comme son nom l’indique, ce t ype de menu se r éf èr e à un obj et pr écis. Si vous
appuyez sur le bout on dr oit de la sour is alor s que le cur seur est dans une zone de saisie,
un menu s’af f iche, dif f ér ent de celui qui s’af f icher a si le cur seur ét ait dans une zone de
list e. Le menu n’est donc pas accessible à par t ir de la t ot alit é de l’applicat ion.
Pour cr éer un menu cont ext uel, commencer d’abor d par le dépôt sur la f iche d’un
composant PopupMenu. Double cliquer dessus, et r aj out er les même commandes incluses
dans les menu Opér at ions et Edit ion.
Pour aj out er du code aux commandes du menu cont ext uel, il suf f it d’associer les
codes des commandes du menu Opérat ions aux commandes de ce menu et cela on
ut ilisant l’événement OnClick de chaque commande du menu cont ext uel. Pour les
commandes Couper , Copier et Coller ut iliser la pr opr iét é Act ion de chaque commande.
Pour associer ce menu cont ext uel à un obj et , sélect ionner cet t e obj et et
af f ect er à sa pr opr iét é PopupMenu le nom du menu. Dans not r e cas, sélect ionner la f iche
pr incipale et met t ez la pr opr iét é PopupMenu à PopupMenu1 du moment qu’on a cr éer
qu’un seul menu cont ext uel.

Fig 6.6
VII.8 Création d'une barre d'outils
A par t ir de la palet t e Win32 , déposer sur la f iche un composant Toolbar . Par
déf aut , ce composant s' appelle ToolBar 1 et s' af f iche en haut de la f iche car sa
pr opr iét é Align Vaut AlTop par déf aut .
Cliquer avec le bout on dr oit de la sour is sur le composant ToolBar et choisir dans
le menu cont ext uel qui s' af f iche Nouveau bout on ou Nouveau séparat eur . Aj out er de
cet t e manièr e quat r e bout ons pour les opér at ions de calcul puis un sépar at eur ensuit e
t r ois bout ons pour les opér at ions du pr esse papier s Couper , Copier et Coller .

®
Samirboualam@HOTMAI L.COM 40 juin
Programmation Delphi 7.0

Touj our s à par t ir de la palet t e Win32, déposer sur la f iche un composant


I mageList . Ce composant per met de st ocker la list e des images qu' on va placer sur
chacun des bout ons de la bar r e d' out ils. cliquer avec le bout on dr oit sur I mageList et
choisir la commande Edit eur de list e d’images.
Dans la boit e de dialogue qui appar aît , cliquer sur le bout on Aj out er puis choisir à
par t ir d' un dossier vos images. Ces images sont indexées à par t ir de zér o. Le pr emier
bout on de la bar r e d' out ils r ecevr a l' image zér o, le deuxième r ecevr a l' image 1 et ainsi
de suit e. Fer mer le boit e de dialogue.

Fig 6.7
Pour af f ect er les images ainsi sélect ionnées aux bout ons de la bar r e d' out ils,
sélect ionnez le composant Toolbar et met t ez sa pr opr iét é images à I mageList 1 .

Fig 6.8
Pour associer du code aux bout ons de la bar r e d' out ils, sélect ionner les bout ons
un à un puis dans l' événement OnClick lier chaque bout on à la commande de menu
équivalent e. De même, pour les commandes Couper , Copier et Coller ut iliser la pr opr iét é
Act ion de chaque bout on pour le lier à une act ion du Act ionList .

®
Samirboualam@HOTMAI L.COM 41 juin
Programmation Delphi 7.0

VII.9 Des conseils pour guider le programme


Les t ext es d’aide qui accompagnent chacun des composant s s’appellent Hint en
anglais et Conseils (ou suggest ions) en f r ançais. I ls s’af f ichent dans une boit e à cot é du
composant (inf o-bulle ) ou dans la ligne d’ét at du pr ogr amme.
Remar ques : Les r ègles pr éconisées par Micr osof t pour la r édact ion de des conseils sont
les suivant es:
? L' aide sur une commande explique pr écisément et simplement les f onct ions dont
les ut ilisat eur s disposent .
? Elle commence t ouj our s par un ver be au pr ésent .
? Si vous souhait ez que des composant s af f ichent des inf o-bulles, sélect ionner le
composant en quest ion (un bout on de bar r e d’out ils par exemple) et af f ect ez à sa
pr opr iét é ShowHint la valeur Tr ue. Puis dans la pr opr iét é Hint t aper le t ext e de
l’inf o-bulle.
Par cont r e, pour af f icher des t ext es d’aide sur la bar r e d’ét at , commencer
d’abor d par le dépôt d’un composant St at usBar qu’on t r ouve dans la palet t e Win32 . Ce
composant s’aligne sur le bor d inf ér ieur de la f iche par ce que la pr opr iét é Align, qui
déf init l’alignement du composant dans la f iche est égale à alBot t om par déf aut .
Af f ect er la valeur Tr ue à pr opr iét é Aut oHint de la bar r e d' ét at
Déf inissez la pr opr iét é SimplePanel à Tr ue af in de pr éciser que la ligne d’ét at ne
se const it ue que d’une seule sect ion. La ligne d’ét at n’af f iche alor s que le t ext e st ocké
dans la pr opr iét é SimpleText . Si la pr opr iét é SimplePanel est à False, la ligne d’ét at se
const it ue de plusieur s sect ions.

Fig 6.9
Ast uce : Pour simplif ier le t r avail dans l’envir onnement de pr ogr ammat ion, appuyer sur
la t ouche F11 pour appeler l’inspect eur d’obj et s et modif ier les pr opr iét és d’un
composant . Pour basculer ent r e l’édit eur de t ext e sour ce et l’édit eur de f iches appuyer
sur F12.
Revenez sur la f iche pr incipale par F12 et sélect ionner les composant s lesquels
vous voudr iez qu’ils af f ichent des messages d’aides. pour ce f air e, sélect ionner un
composant quelconque, met t ez sa pr opr iét é ShowHint à Tr ue et t aper le t ext e d’aide
dans la pr opr iét é Hint .

®
Samirboualam@HOTMAI L.COM 42 juin
Programmation Delphi 7.0

Remar que
Le sépar at eur ‘’| ’’ qui s’obt ient au clavier par la combinaison Alt Gr + 6 per met de
sépar er le t ext e de l’inf o-bulle de celui à af f icher sur la ligne d’ét at .
Si le conseil ne compr end pas de sépar at eur , la t ot alit é du t ext e est considér ée
comme un conseil cour t (inf o-bulle) et comme conseil long (t ext e de la ligne d’ét at ) et
donc il ser a af f iché et comme inf o-bulle et comme t ext e de la ligne d’ét at . En r evanche,
si vous début ez le t ext e par le sépar at eur , seul le t ext e de la ligne d’ét at s’af f iche. Et si
par cont r e, vous t apez un t ext e que vous t er minez par le sépar at eur , il ne s’af f iche alor s
que le t ext e de l’inf o-bulle.
VII.10 Ajout d’une fiche d'information
Cr éer une nouvelle f iche (nommée par déf aut Form2 ) en cliquant sur l' icône
Nouvelle Fiche sit ué sur la bar r e d' out ils, ou bien choisir dans le menu Fichier la
commande Nouvelle Fiche.
- Af f ect ez à la pr opr iét é Capt ion de cet t e f iche le nom : A pr opos…
- Af f ect ez à la pr opr iét é Height (Haut eur ) la valeur 220.
- Af f ect ez à la pr opr iét é Widt h (Lar geur ) la valeur 300.
- Af f ect ez à la pr opr iét é Bor der St yle la valeur bsDialog, cet t e pr opr iét é per met de
r endr e la t aille de la f iche non modif iable, c’est à dir e qu’on ne peut ni la r éduir e, ni
l’agr andir (Boit e de dialogue st andar d).
- Af f ect ez à la pr opr iét é Posit ion la valeur PoScr eenCent er af in qu’elle s’af f iche au
cent r e de l’écr an. En ef f et , la pr opr iét é Posit ion per met de choisir l’emplacement de la
f iche lor s de l’appel.
- Déposer sur cet t e f iche t r ois composant s label dont les pr opr iét és Capt ion sont
r espect ivement : La mini calculat r ice, Version : Du vendr edi 14-05-2004, Copyright ® :
t ous dr oit s r éser vés.
- Ut iliser la code ASCI I Alt +169 pour le obt enir le symbole du copyr ight ®
- Raj out er un composant But t on dont les pr opr iét és sont les suivant es:
Propriét é Valeur
Capt ion OK
ModalResult mr Ok
- Raj out er ent r e le t r oisième label et le bout on, un composant Bevel à par t ir de la
palet t e Supplément pour cr éer un t r ait sépar at eur ent r e les labels et le bout on. Les
pr opr iét é du Bevel sont :Height est égale à 3, Widt h est égale à 270 et Shape est
égale à bsTopLine.

Vous obt iendr ez une f iche qui r essemble à


la Fig 6.10

®
Samirboualam@HOTMAI L.COM 43 juin
Programmation Delphi 7.0

Maint enant que la f iche A propos est t er minée, on doit r éaliser l’appel à celle ci à
par t ir de la f iche pr incipale. Lor squ’on décide de l’af f ichage, on peut choisir s’il est
modal ou non.

VII.11Les fiches modales et non modales


Pendant l’exécut ion, il est possible, sous Windows, de commut er ent r e plusieur s
applicat ions. Dans cer t ains pr ogr ammes, il est en out r e possible de passer d’une f enêt r e
à une aut r e. Ces f enêt r es sont non modales.
En r evanche, si dans une applicat ion une f iche modale est act ive, elle int er cept e
la t ot alit é des signaux pr ovenant du clavier ou de la sour is : une aut r e f enêt r e ne peut
êt r e ut ilisée que lor sque la f enêt r e modale est désact ivée. C’est le cas des boit es de
dialogue par exemple.
Ainsi, on s’assur e que l’ut ilisat eur ne t r availle pas dans une f enêt r e quelconque
alor s que vous af f ichez des inf or mat ions impor t ant es dans une cer t aine f enêt r e, ou que
vous at t endez une r éponse.
Revenez sur la f iche pr incipale en cliquant dans la bar r e d’out ils sur le bout on
Voir une f iche. Double-cliquer sur le composant MainMenu puis cliquer sur le menu Aide
et enf in double cliquer sur la commande A propos… Vous devez déf inir l' act ion à
déclencher à savoir l' appel (af f ichage) de la f iche. Tapez :
Dans le cas d’un af f ichage modal
Form2.ShowModal ;
Dans le cas d’un af f ichage non modal
Form2.Show ;
Dans not r e cas, on va opt er pour un af f ichage modal (Comme t out es les boit es de
dialogues A pr opos…). La f iche à pr opos possède la mét hode ShowModal qui per met de
l' af f icher . ShowModal appelle une f iche en mode modal. Celle ci possède une pr opr iét é
ModalResult , qui déf ini son ét at . La pr opr iét é à la valeur mr None lor sque la f iche est
act ive. Si elle r eçoit la valeur mr Ok ou mr Cancel, la f iche est f er mée. La valeur de la
pr opr iét é ModalResult est r et our née à ShowModal en t ant que r ésult at de f onct ion.
Avant d’exécut er le pr ogr amme, aj out er la clause Uses au dessous de la ligne
I mplement at ion, et t aper ensuit e le nom de l’unit é de la f iche A propos… . Af in d’ét ablir
une liaison ent r e l’unit é de la f iche pr incipale et celle de la f enêt r e A pr opos…. Comme
suit :
implementation
Uses Unit2;
{$R *.DFM}
Où Unit 2 est le nom de l’unit é associée à la f iche A propos… et sous lequel elle
est enr egist r ée. Si cet t e unit é a ét é enr egist r é sous un aut r e nom, il f aut spécif ier ce
nom au lieu du nom par déf aut .
Exécut er le pr ogr amme en cliquant sur l' icône Exécut er sit uée sur la bar r e d' out ils ou
bien Appuyer sur la t ouche F9 au clavier . A ce st ade vous êt es en mesur e de f air e appel
à une f iche et de la f er mer au besoin.

®
Samirboualam@HOTMAI L.COM 44 juin
Programmation Delphi 7.0

VII.12 Les exceptions


Vous avez sans dout e déj à r encont r é des er r eur s de compilat ion et des er r eur s
logiques. Dans ce qui suit on va s' int ér esser aux er r eur s d' exécut ion. Ces er r eur s
r ésult ent de l' échec d' une f onct ion ou d' une mét hode opér ant dans la bibliot hèque
d' exécut ion, la bibliot hèque des composant s visuels ou même dans le syst ème
d' exploit at ion. Le code suscept ible de déclencher de t elles er r eur s doit envisager
t out es les évent ualit és de t r ait ement .
Une except ion est un changement dans les condit ions de t r ait ement qui pr ovoque
l' int er r upt ion ou même l' ar r êt de l' applicat ion. Une except ion peut sur venir n' impor t e
où dans l' applicat ion. Elle peut avoir plusieur s sour ces qui sont t out es en int er act ion plus
ou moins dir ect e avec le code.
VII.12.1 Interception des erreurs
Les er r eur s dans les pr ogr ammes ont plusieur s sour ces: les ut ilisat eur s peuvent
f our nir des données illégales pour les opér at ions envisagées, le pr ogr amme essaye
d' écr ir e sur une disquet t e pr ot égée, ou encor e d' accéder à une zone déj à at t r ibuée de
la mémoir e, d' ef f ect uer une division par zér o …La list e est quasiment inf inie.
Les pr ogr ammes devr aient int er cept er t out es les er r eur s possibles, de f açon
qu' elles n' inf luent pas négat ivement sur le dér oulement du pr ogr amme. Les ut ilisat eur s
doivent êt r e inf or més des causes possibles d' er r eur et il convient d' assur er qu' une
er r eur ne bloque pas le pr ogr amme.
Un message d' er r eur s' appelle Except ion. Le t r ait ement des except ions dans un
pr ogr amme s' appelle: St r uct ur ed Except ion Handling (SEH).
Lor squ' une er r eur se pr oduit dans un pr ogr amme , une except ion est émise. Elle
cont ient des inf or mat ions sur la cause de l' er r eur . Le t r ait ement des except ions
exploit e ces inf or mat ions pour que le pr ogr amme r éagisse en accor d. Delphi vous per met
d' int er cept er les except ions et de les t r ait er .
VII.12.2 Lorsque l'exception paraît
I llust r ons le t r ait ement des except ions par un exemple. Dans l' exemple
pr écédent , il y avait une opér at ion de division. Supposer que l' ut ilisat eur t ent e de f air e
une division par zér o (0), c' est à dir e que dans la zone de saisie Argument , il t ape la
valeur zér o. Une except ion est génér ée. En ef f et , on ne peut pas ef f ect uer cet t e
opér at ion. Le pr ogr amme est donc int er r ompu et un message est émis : Fig 6.11

Nous avons af f air e à une except ion de la classe EZer oDivide. Le nom de
l' except ion indique qu' une er r eur s' est pr oduit e lor s de l' opér at ion de division.
L' exécut ion du pr ogr amme est int er r ompue mais elle n' est pas t er minée. Appuyer une
deuxième sur la t ouche F9 pour cont inuer l' exécut ion, et examiner sa f enêt r e de
messages.

®
Samirboualam@HOTMAI L.COM 45 juin
Programmation Delphi 7.0

Fig 6.12
Les pr ogr ammeur s ne t olèr ent pas de t els messages d' er r eur ! nous devons t r ait er
nous mêmes les mauvaises saisies des ut ilisat eur s et r édiger un message compr is par
t ous. C' est exact ement le sens dans lequel vous pouvez exploit er le t r ait ement des
except ions sous Delphi. Rédigez des blocs d' inst r uct ion appelés uniquement en cas
d' er r eur . vot r e pr ogr amme aur a t out le loisir de r éagir aux er r eur s.
VII.12.3 Traiteme nt de l'exception
Modif ions l' inst r uct ion de division par t out dans le pr ogr amme. I l doit vér if ier si
la donnée saisie dans Argument est dif f ér ent de zér o (0). Si c' est le cas, l' opér at ion de
division se r éalise et un r ésult at s' af f iche. dans le cas cont r air e, not r e pr ogr amme
émet t r a un message d' er r eur .
L' élément décisif dans le t ext e sour ce est le bloc Try … Except . Le mot r éser vé
Try int r oduit le bloc. Le pr ogr amme t est e les except ions des inst r uct ions qui suivent
Try. Except f er me le bloc d' inst r uct ions sur veillé. Si dans l' une de ces inst r uct ions une
except ion se pr oduit , nous quit t ons immédiat ement le bloc. L' exécut ion se pour suit
apr ès Except . A cet endr oit f igur ent des inst r uct ions appelées lor squ' une er r eur se
pr oduit . Si aucune except ion n' est signalée, cet t e zone est saut ée.
Try
edit3.text:= floattostr(strtofloat(edit1.text)/strtofloat(edit2.text))
Except
Application.MessageBox ('Revoyez vos domaines de définition', 'Division par
zéro', mb_ok)
End;
Dans la sect ion Tr y, le pr ogr amme t ent e de f air e un opér at ion de division ent r e
les données saisies dans Edit 1 (Valeur ) et Edit 2 (Ar gument ). Si cela n' ent r aîne aucune
er r eur , l' exécut ion se pour suit , et le r ésult at de l' opér at ion est af f ichée dans Edit 3
(Résult at ). Si par cont r e l' opér at ion de division n' est pas possible, elle déclenche une
except ion. Le pr ogr amme se br anche à la sect ion Except et émet un message d' er r eur .

Fig 6.13
VII.13Conclusion
V ous venez de découvrir quelques composants fondamentaux vous permettant de concevoir
une interface très simple. V ous avez traité leurs propriétés (caractéristiques) et leurs comportements
pendant l'exécution du programme, c’est à dire leurs réactions à des événements (actions) donnés (tel
qu'un double click ou une sortie de la fenêtre) en effectuant une opération bien définie. A travers cet
exemple vous aurez compris que la gestion des événements n'est rien d'autre qu'un appel de procédure
pris en charge par le gestionnaire d'événement dont vous vous contentez de préciser les réactions.

®
Samirboualam@HOTMAI L.COM 46 juin
Programmation Delphi 7.0

VIII SECOND EXEMPLE D'APPLICATION: UNE CALCULATRICE


A la f in de cet t e par t ie, vous ser ez capable de:
? Pouvoir at t r ibuer une mét hode à plusieur s composant s,
? Maît r iser le par amèt r e "Sender ",
? Tr availler avec les composant s d' une f iche,
VIII.1 Description de l'application
Dans ce chapit r e nous allons écr ir e une applicat ion ayant comme point de dépar t
une calculat r ice simple. Nous complét er ons gr aduellement la calculat r ice en lui aj out ant
des f onct ionnalit és j usqu' à la r endr e r elat ivement sophist iquée.
- Cr éez une nouvelle applicat ion et nommez par exemple vot r e pr oj et Calculet t e.
- Placez sur la f iche un Label qui simuler a l' af f ichage à cr ist aux liquides des calculet t es.
- Placez 10 bout ons cor r espondant aux dix chif f r es, aj out ez les bout ons pour les quat r e
opér at ions, un ou deux b out ons pour les cor r ect ions, un pour le changement de signe, un
pour la vir gule et évidemment une t ouche égal.
- I l est possible de cr éer un bout on de la
bonne t aille et de le copier . I l r est e alor s à
choisir pour chaque bout on, un nom (name) et
son libellé (capt ion).
- Modif iez cer t aines pr opr iét és du label :
Aut osize à f alse, Alignment à t aRight J ust if y
Dans la suit e les composant s placés ser ont
appelés : LabelAf f ichage.
Bout onZer o, Bout onUn, Bout onDeux,
Bout onTr ois, Bout onQuat r e, Bout onCinq,
Bout onSix, Bout onSept , Bout onHuit ,
Bout onNeuf , Bout onPlus, Bout onMoins,
Bout onMult iplier , Bout onDiviser ,
Bout onPlusMoins, Bout onVir gule, Fig 7.1
Bout onCor r ect ion, Bout onEgal.
VIII.2 Les dix chiffres
A chaque f ois que l' ut ilisat eur choisir a un chif f r e, nous devons modif ier la zone
d' af f ichage en conséquence. Une solut ion simple consist e à cr éer dix mét hodes
(pr océdur es) pour r épondr e à l' événement "OnClick" de chaque bout on.
procedure TForm1.BoutonSeptClick(Sender: TObject);
begin
LabelAffichage.Caption := LabelAffichage.Caption + '7';
end;
I l est cependant possible d' ut iliser la même pr océdur e pour r épondr e à
l' événement "OnClick" de chaque bout on. Mais comment savoir alor s s' il f aut aj out er 1, 2
ou 3…? C' est en ut ilisant la var iable Sender . En ef f et , lor squ' un événement est génér é
par un obj et , la mét hode associée r eçoit en par amèt r e la var iable Sender qui est un
point eur sur l' obj et . Le point eur per met d' accéder aux pr opr iét és de l' obj et sur lequel
il point e. Af in de pr éciser que l' obj et est un bout on, nous devons indiquer au compilat eur
à l' aide du mot as que Sender est un point eur sur un bout on (et non sur un obj et
quelconque). Un obj et est de t ype TObj ect alor s qu' un bout on est de t ype TBut t on.

®
Samirboualam@HOTMAI L.COM 47 juin
Programmation Delphi 7.0

procedure TForm1.BoutonChiffre(Sender: TObject);


begin
LabelAffichage.Caption := (Sender as TButton).Caption;
end
En f ait , nous devons disposer d' une var iable qui nous per met t r a de savoir si
l' af f ichage doit êt r e net t oyé ou s' il f aut aj out er le chif f r e à la f in. Enf in nous devons
évit er les zér os au début du nombr e.
Placez une var iable de t ype booléen (boolean) dans la par t ie pr ivat e de la classe,
on pour r a par exemple la nommer NouveauNombr e.
procedure TForm1.BoutonChiffre(Sender: TObject);
begin
if NouveauNombre then
begin
LabelAffichage.Caption := '';
NouveauNombre := false;
end;
if LabelAffichage.Caption = '0' then
begin
LabelAffichage.Caption := (Sender as TButton).Caption;
end
else
begin
LabelAffichage.Caption := LabelAffichage.Caption + (Sender as
TButton).Caption;
end;
end;
Af in de pouvoir êt r e connect ée à un événement "OnClick", cet t e pr océdur e devr a
êt r e déclar ée dans la classe, avant le mot privat e.
Pour connect er cet t e pr océdur e à l' événement "OnClick" de chacun des 10
bout ons chif f r es, vous devez, dans le volet "Evénement s" de l' inspect eur d' obj et ,
choisir "Bout onChif f r e" dans la list e des pr océdur es compat ibles avec cet événement .
Vous ne devez donc pas f air e un double clic pour cr éer une nouvelle pr océdur e, vous
devez au cont r air e choisir par mi celles qui exist ent .
VIII.3 Les touches opérateurs
Lor sque l' ut ilisat eur choisit une des quat r e t ouches cor r espondant aux quat r e
opér at eur s, nous devons :
- Ef f ect uer l' opér at ion en cour s s' il y en a une.
- Ret enir le nombr e act uellement af f iché.
- Ret enir qu' il f audr a commencer un nouveau nombr e.
- Ret enir l' opér at ion demandée.
Pour l' inst ant cont ent ons-nous de cr éer une pr océdur e vide "Calcule" qui se
char ger a plus t ar d d' ef f ect uer l' opér at ion en cour s.
Nommons par exemple « Pile » une var iable de t ype Ext ended (semblable au t ype
r eal mais avec une meilleur e pr écision) qui per met t r a de r et enir le nombr e af f iché. Voir
l' aide en t apant sur F1 alor s que le cur seur est sur le mot Ext ended. Codons par exemple
avec le nombr e 1 l' opér at eur +, 2 l' opér at eur -, 3 l' opér at eur mult iplier et 4 l' opér at eur
diviser .

®
Samirboualam@HOTMAI L.COM 48 juin
Programmation Delphi 7.0

Nommons par exemple Oper at eur (sans accent ) une var iable ent ièr e r et enant ce
code. Voici la mét hode pour le bout on « plus ». Fait es de même pour les t r ois aut r es
opér at eur s.
privat e
NouveauNombr e :boolean; Pile:ext ended;Oper at eur :int eger ;

procedure TForm1.Calcule;
begin
// cette procédure n'est pas encore réalisée
end;
procedure TForm1.BoutonPlusClick(Sender: TObject);
begin
Pile := StrToFloat(LabelAffichage.Caption);
NouveauNombre := true;
Operateur := 1;
end;
St r ToFloat per met de conver t ir une chaîne en un nombr e décimal avec une
pr écision impor t ant e.
VIII.4 La touche "égal"
I l s' agit d' ef f ect uer le calcul et d' init ialiser la var iable NouveauNombr e. Le
calcul consist e à ef f ect uer l' opér at ion ent r e le nombr e r et enu dans la var iable Pile et le
nombr e qui est à l' af f ichage en t enant compt e de l' opér at ion demandée. C' est le r ôle de
la pr océdur e Calcule que nous allons t er miner maint enant :
procedure TForm1.Calcule;
begin
if Operateur = 1 then
begin
LabelAffichage.Caption :=
FloatToStr(Pile + StrToFloat(LabelAffichage.Caption));
end;
if Operateur = 2 then
begin
LabelAffichage.Caption :=
FloatToStr(Pile - StrToFloat(LabelAffichage.Caption));
end;
if Operateur = 3 then
begin
LabelAffichage.Caption :=
FloatToStr(Pile * StrToFloat(LabelAffichage.Caption));
end;
if Operateur = 4 then
begin
LabelAffichage.Caption :=
FloatToStr(Pile / StrToFloat(LabelAffichage.Caption));
end;
Operateur := 0;
end;
procedure TForm1.BoutonEgalClick(Sender: TObject);
begin
Calcule;
NouveauNombre := true;
end;

®
Samirboualam@HOTMAI L.COM 49 juin
Programmation Delphi 7.0

VIII.5 La touche Correction


Si l' ut ilisat eur clique sur la t ouche de cor r ect ion, nous devons oublier le nombr e
dans la var iable Pile, oublier l' opér at eur et met t r e 0 à l' af f ichage:
procedure TForm1.BoutonCorrectionClick(Sender: TObject);
begin
Pile := 0;
Operateur := 0;
LabelAffichage.Caption := '0';
end;
VIII.6 La touche virgule
Une virgule ou un point ? Cela dépend de la conf igur at ion de Windows.
Dans le cas d’une vir gule :
procedure TForm1.BoutonVirguleClick(Sender: TObject);
begin
if NouveauNombre then
begin
LabelAffichage.Caption := '0';
NouveauNombre := false;
end;
LabelAffichage.Caption := LabelAffichage.Caption + ‘,’;
end;
VIII.7 La touche +/-
Si l' af f ichage commence par le signe moins, nous devons l' enlever , sinon nous
devons le met t r e. I l nous f aut le moyen de compar er le pr emier car act èr e avec le
symbole -. Nous pouvons ut iliser la f onct ion Copy. Dans l' aide vous t r ouver ez :
function Copy(S: string; Index, Count: Integer): string;
Dans not r e cas Copy(LabelAf f ichage.Capt ion, 1, 1) cor r espond au pr emier
car act èr e du Capt ion de LabelAf f ichage ou à la chaîne vide si le label est vide.
Pour suppr imer le pr emier car act èr e nous pouvons également ut iliser Copy avec 2
pour I ndex et un gr and nombr e pour Count af in de pr endr e t ous les car act èr es r est ant s.
procedure TForm1.BoutonPlusMoinsClick(Sender: TObject);
begin
if LabelAffichage.Caption <> '0' then
begin
if Copy(LabelAffichage.Caption, 1, 1)='-' then
begin
LabelAffichage.Caption := Copy(LabelAffichage.Caption, 2, 255);
end
else
begin
LabelAffichage.Caption := '-' + LabelAffichage.Caption;
end;
end;
end;

®
Samirboualam@HOTMAI L.COM 50 juin
Programmation Delphi 7.0

VIII.8 Le programme n'est pas parfait


En ef f et :
? Nous ne t r ait ons pas le cas de la division par zér o.
? L' ut ilisat eur peut t aper un nombr e t r op gr and.
? I l peut également t aper plusieur s vir gules dans un nombr e.
? L' ut ilisat eur aimer ait cer t ainement pouvoir t aper les chif f r es au clavier .
Pour cela :
? La division par zér o peut êt r e t r ait ée avec t ry et except .
? Nous pouvons limit er le nombr e de car act èr es à l' aide de la f onct ion lengt h qui
per met de connaît r e le nombr e de car act èr es d' une chaîne. Si ce nombr e est
t r op gr and, on n' ef f ect ue pas l' aj out du chif f r e. L' ut ilisat eur pour r a t out ef ois
mult iplier plusieur s f ois un t r ès gr and nombr e par lui-même et f inir par obt enir
un message d' er r eur .
? Pour t est er si une vir gule exist e déj à, on peut ut iliser la f onct ion pos qui
r et our ne la posit ion d' une sous-chaîne dans une chaîne (et si la sous-chaîne
n' exist e pas, la f onct ion r et our ne 0).
? Pour accept er la f r appe des chif f r es au clavier , il f aut aj out er des mét hodes
pour r épondr e aux événement s OnKeyPr ess, OnKeyDown de la f iche. On pour r a
aussi met t r e à f alse la pr opr iét é TabSt op de chaque bout on et met t r e la
pr opr iét é KeyPr eview de la f iche à t r ue.

®
Samirboualam@HOTMAI L.COM 51 juin
Programmation Delphi 7.0

IX UN PETIT ÉDITEUR DE TEXTES


Ce chapit r e per met de mont r er l' ut ilisat ion :
? du composant Mémo.
? des menus.
? des messages.
? des boît es de dialogue.

IX.1 Composant Memo


Cr éez un nouveau pr oj et , placez un composant "Memo" (il s' appelle par déf aut
Memo1 et est de t ype TMemo), enr egist r ez vot r e unit é et vot r e pr oj et puis exécut ez
vot r e pr ogr amme.
Vous const at ez que le composant Memo per met de t aper du t ext e, de
sélect ionner , de copier (avec Ct r l C), de coller avec (Ct r l V), de couper (avec Ct r l X), de
déf air e (Cr t l Z) …
Si vous modif iez la pr opr iét é "Align" du composant Memo1 en choisissant
"alClient " t out e la f enêt r e est occupée par ce composant . A l' exécut ion, si l' ut ilisat eur
change la dimension de la f enêt r e, la dimension du composant change aut omat iquement
en même t emps.
Un f ichier t ext e est en génér al mont r é avec une police non pr opor t ionnelle, on
choisir a "Cour ier New" pour le composant Memo1.
IX.2 Ajoutons un menu
Placez un composant "MainMenu" n' impor t e où sur la f or me, puis f ait es un double
clic dessus.
Aj out ez les menus et sous menus habit uels :
&Fichier &Edit ion & A propos
&Nouveau &Déf air e &A pr opos.
&Ouvr ir -
&Enr egist r er &Couper
Enr egist r er &sous Co&pier
- C&oller
&Quit t er

Vous r emar quez que le symbole & a ét é ut ilisé, il per met de déf inir la let t r e qui
ser a soulignée et qui per met t r a donc à l' ut ilisat eur de choisir r apidement dans le menu à
l' aide du clavier . Le signe moins (-) per met de cr éer une ligne sépar at r ice.
Vous pouvez f er mer la f enêt r e d' édit ion du menu. Pour cor r iger ce menu par la
suit e, f ait es un double clic sur le composant placé sur vot r e f or me et ut ilisez
évent uellement les t ouches <Ent er > <I nser > <Suppr >.
Si vous exécut ez ce pr ogr amme maint enant , vous ver r ez le menu mais il est
encor e inef f icace.

®
Samirboualam@HOTMAI L.COM 52 juin
Programmation Delphi 7.0

IX.3 Une variable pour se souvenir si le texte est modifié


Lor sque l' ut ilisat eur est sur le point de per dr e son document , il est habit uel de
lui demander s' il souhait e l' enr egist r er avant . I l ne f aut pas demander
syst émat iquement mais seulement si le document a ét é modif ié. I l nous f aut donc une
var iable booléenne pour r et enir si le document a ét é modif ié.
Cr éez par exemple la var iable : Modif: boolean ; dans la par t ie Private de
TFor m1. Cet t e var iable ser a aut omat iquement mise à false au démar r age du
pr ogr amme. Elle devr a êt r e mise à True à chaque f ois que l' ut ilisat eur change le cont enu
du Memo1 (ut ilisez l' événement OnChange de Memo1).
Elle devr a êt r e mise à false :
? Apr ès un enr egist r ement r éussi,
? Lor sque l' ut ilisat eur vient d' ouvr ir un t ext e
? Et lor squ' il choisit de commencer un nouveau t ext e.
IX.4 Permettre le choix du fichier à ouvrir
la var iable NomFich. Placez cet t e var iable dans la par t ie Private de TFor m1 :
NomFich:string;
Nous allons placer n' impor t e où sur la f or me un composant dialogue OpenDialog.
Pour appeler la f enêt r e habit uelle per met t ant le choix du f ichier à ouvr ir , il
suf f ir a de f air e : OpenDialog1.execute;
ou mieux :
if OpenDialog1.execute then
begin
{ ce qui doit être fait si l'utilisateur a validé son choix }
end;
Au r et our , si l' ut ilisat eur a validé son choix, le nom du f ichier est placé dans
OpenDialog.FileName

procedure TForm1.Ouvrir1Click(Sender: TObject);


begin
if OpenDialog1.execute then
begin
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
NomFich:=OpenDialog1.FileName;
Modif:=false;
end;
end;
Pour aider l' ut ilisat eur à t r ouver les f ichier s t ext es, modif iez la pr opr iét é
Filter de OpenDialog1 :
Fichier s t ext es (* .t xt ) * .t xt
Tous (* .* ) * .*
Voir dans l' aide la pr océdur e LoadFr omFile.
IX.5 Menu Enregistrer sous
Placez n' impor t e où sur la f or me un composant SaveDialog. Pour enr egist r er
t out es les lignes de Memo1, on pour r a ut iliser la mét hode SaveToFile déf inie par
Delphi.
En mode concept ion, cliquez sur le menu Fichier puis sur la commande
Enregistrer pour cr éer la pr océdur e at t achée à l' événement clic de ce sous menu.
Complét ez cet t e pr océdur e comme suit :

®
Samirboualam@HOTMAI L.COM 53 juin
Programmation Delphi 7.0

procedure TForm1.Enregistrer1Click(Sender: TObject);


begin
if SaveDialog1.execute then
begin
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
NomFich:=SaveDialog1.FileName;
Modif:=false;
end;
end;
Modif iez la pr opr iét é Filter de SaveDialog1 comme pr écédemment .
Amélior ons la pr océdur e du menu Enregistrer. Si NomFich est vide, c' est que
l' ut ilisat eur n' a pas encor e choisi de nom pour son f ichier . Nous devons en f ait , f air e
comme s' il avait choisi Enregistrer sous.
procedure TForm1.Enregistrersous1Click(Sender: TObject);
begin
if NomFich=' ' then
Enregistrersous1Click(nil)
else
begin
Memo1.Lines.SaveToFile(NomFich);
Modif:=false;
end;
end;
La pr océdur e Enregistrersous1Click nécessit e un par amèt r e de t ype
TObject, mais comme ce par amèt r e n' est pas ut ilisé dans la pr océdur e, n' impor t e quel
par amèt r e convient pour peu que son t ype soit accept é. Nil est un point eur qui point e
sur r ien.
IX.6 Une fonction Fermer
Dans plusieur s cas, nous devons demander à l' ut ilisat eur s' il accept e de per dr e le
document en cour s. I l ser a donc pr at ique de cr éer une f onct ion qui aur a pour r ôle de
vider le composant Memo1 sauf si l' ut ilisat eur décide d' abandonner la f er met ur e au
der nier moment .
Principes
Tant que Memo1 n' est pas vide et que l' ut ilisat eur ne désir e pas abandonner nous
devons, si le t ext e a ét é modif ié, poser la quest ion "Faut -il enr egist r er le t ext e avant de
le per dr e ?".
Si l' ut ilisat eur r épond oui, nous appelons la pr océdur e d' enr egist r ement . On sait
que la pr océdur e d' enr egist r ement a r éussi en r egar dant la var iable Modif. Si Modif
est false, nous pouvons vider Memo1 et quit t er la f onct ion Fermer avec succès.
Si l' ut ilisat eur r épond non, nous pouvons vider Memo1, met t r e Modif à false et
quit t er la f onct ion Fermer avec succès.
Si l' ut ilisat eur abandonne, nous ne vidons pas Memo1 mais nous quit t ons t out de
même la f onct ion Fermer. Dans ce cas la f onct ion Fermer r et our ne false pour mont r er
que la f er met ur e a échoué.
Aides
Le t ext e est vide si Memo1 n' a aucune ligne. Le nombr e de lignes est donné par :
Memo1.Lines.Count

®
Samirboualam@HOTMAI L.COM 54 juin
Programmation Delphi 7.0

On peut aussi ut iliser la pr opr iét é Text de Memo1. Text cont ient la t ot alit é du
t ext e cont enu dans le composant Mémo, chaque chaîne aut r e que la der nièr e est
t er minée par les codes 13 et 10 cor r espondant au passage à la ligne (r et our char iot ).
Pour indiquer la valeur de r et our d' une f onct ion nous ut iliser ons result. Dans not r e cas
nous pouvons quit t er cet t e f onct ion avec
result:=true;
ou
result:=false;
Ut ilisez MessageDlg pour poser la quest ion.
Ut ilisez l' inst r uct ion Case of pour envisager les t r ois cas.

Function TForm1.Fermer:boolean;
var Abandon:boolean;
begin
Abandon:=false;
while (Memo1.Lines.Count<>0) and not Abandon do
begin
if Modif then
begin
case MessageDlg('Enregistrer ?',mtConfirmation,[mbYes,mbNo,mbCancel],0) of
mrYes:
begin Enregistrer1Click(nil);
if not Modif then Memo1.Lines.Clear;
end;
mrNo:
begin
Memo1.Lines.Clear;
Modif:=false;
end;
mrCancel:Abandon:=true;
end;{case}
end
else
begin
Memo1.Lines.Clear;
end;
end;
if Memo1.Lines.Count=0 then
begin
result:=true;
NomFich:=' ';
end
else
begin
result:=false;
end;
end;
IX.7 Fichier Nouveau
I l suf f it d' appeler la f onct ion Fermer sans même se pr éoccuper de sa valeur de r et our .
IX.8 Menu Quitter
Le mot close est suf f isant pour quit t er .
procedure TForm1.Quitter1Click(Sender: TObject);
begin
Close;
end;

®
Samirboualam@HOTMAI L.COM 55 juin
Programmation Delphi 7.0

Lor sque la pr océdur e close est appelée, elle génèr e un événement


OnCloseQuery. Si nous at t achons une pr océdur e à cet événement , il nous ser a encor e
possible de ne pas quit t er .
Une idée ser ait de r emplacer Close par : If Fermer then close;
Mais cet t e f açon de f air e ne convient pas. En ef f et , Fichier/Quitter n' est pas la
seule f açon de quit t er un pr ogr amme Windows.
IX.9 Evénement OnCloseQuery
Cet événement se pr oduit lor sque l' ut ilisat eur est sur le point de quit t er . Pour
quit t er , l' ut ilisat eur peut ut iliser Fichier/Quitter, la pr océdur e Close est alor s
appelée, mais il peut aussi cliquer sur la case Quit t er (en haut à dr oit e) ou ut iliser le
menu syst ème (en haut à gauche) ou f air e Alt F4…
Dans t ous les cas l' événement OnCloseQuery se pr oduit . I l est encor e possible
de ne pas quit t er .
Voici la pr océdur e at t achée à cet événement :
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin.

end;

En met t ant dans cet t e pr océdur e CanClose:=false; le pr ogr amme ne s' ar r êt e


plus. Si vous voulez f air e l' essai, il est pr udent d' enr egist r er vot r e pr oj et avant . Vous
pouvez t out ef ois ar r êt er vot r e pr ogr amme en met t ant un point d' ar r êt sur la ligne
sit uée apr ès la ligne cont enant CanClose, f ait es Fichier et Quitter. A l' aide de la
f enêt r e Evaluation / modification (Ct r l F7 lor sque le cur seur est sur le mot
CanClose)
Met t ez à True la var iable CanClose. Tapez F9 pour t er miner cor r ect ement
vot r e pr ogr amme. En f ait , CanClose ne devr a êt r e mise à False que si la f onct ion
Fermer échoue.
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if not Fermer then CanClose := false;
end;

IX.10 Le menu Edition


Comme le composant Memo1 sait déj à "Déf air e", "Copier ", "Couper " et "Coller ", il
suf f it de lui envoyer un message pour demander ce t r avail. En r egar dant dans l' aide on
t r ouve :
LRESULT SendMessage(
HWND hWnd, // handle of destination window
UINT Msg, // message to send
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
I l s' agit de la déclar at ion en langage C de la f onct ion SendMessage. Par mi les
quat r e par amèt r es seuls les deux pr emier s nous int ér essent ici.
hWnd est le handle de l' obj et à qui nous allons envoyer le message. Le handle
est un numér o (un integer) qui per met d' accéder à un obj et .
Lor squ' un obj et est cr éé, il est placé en mémoir e. Windows se r éser ve le dr oit à
t out moment de déplacer les obj et s dans sa mémoir e. I l n' est donc pas quest ion, pour

®
Samirboualam@HOTMAI L.COM 56 juin
Programmation Delphi 7.0

l' ut ilisat eur d' accéder dir ect ement à un obj et comme on pouvait le f air e avec les "vieux"
pr ogr ammes dos. Le handle est at t r ibué par Windows lor s de la cr éat ion de l' obj et et
ne changer a pas pendant t out e la dur ée de vie cet obj et .
Le handle de Memo1 est obt enu par : Memo1.Handle
Msg est un numér o (un integer) de message. Pour avoir une list e des messages
ut ilisés par Windows vous pouvez r egar der le f ichier Message.pas par exemple avec le
bloc-not es. Si Delphi a ét é inst allé dans le r éper t oir e habit uel sur le disque C, voici le
chemin à ut iliser pour ouvr ir ce f ichier :
c:\Program Files\Borland\Delphi7\Source\Rtl\Win\Messages.pas
Vous t r ouver ez par exemple que WM_UNDO cor r espond à $304.
Pour déf air e la der nièr e act ion f ait e par l' ut ilisat eur dans Memo1, nous pouvons
ut iliser : SendMessage(Memo1.Handle,WM_UNDO,0,0);
Memo1 r ecevr a le message WM_UNDO et exécut er a la pr océdur e cor r espondant e.
Edition Copier, Couper, Coller :
I l est possible d' ut iliser également SendMessage avec :
WM_COPY, WM_CUT et WM_PASTE.
I l est cependant plus f acile d' ut iliser les mét hodes
CopyToClipboard;
CutToClipboard;
PasteFromClipboard;
Vous t r ouver ez ces mét hodes dans l' aide de TMemo.
IX.11 A propos
Beaucoup d' applicat ions Windows possèdent une boît e de dialogue souvent
nommée "A pr opos", qui donne le nom du pr ogr amme, sa ver sion, le nom de l' aut eur …
Fait es "Fichier " et "Nouvelle Fiche" (avec Delphi vous pouvez aussi f air e
"Fichier " "Nouveau" "Fiches" et "Boît e à pr opos"). Nommez cet t e f or me par exemple
Bap et enr egist r ez l' unit é en l' appelant par exemple Ubap Amélior ez cet t e f iche…
I l f aut au moins un bout on "Ok" ou "Fer mer " qui aur a pour r ôle de f er mer cet t e
f enêt r e f acilement . Pour l' appeler à par t ir du menu "A pr opos" de la f or me pr incipale,
vous pouvez at t acher la pr océdur e suivant e au sous menu "A pr opos".
Bap.Showmodal;
L' ut ilisat eur devr a quit t er la boît e "A pr opos" pour pouvoir cont inuer à ut iliser le
mini édit eur .

IX.12 Idées d'améliorations


Si l' ut ilisat eur ne met pas d' ext ension, aj out ez l' ext ension t xt . La f onct ion
suivant e aj out e .t xt si nécessair e :
function TForm1.AjouteEventuellementExtension(NF:string;Ext:string):string;
begin
if UpperCase(ExtractFileExt(NF))='' then
result:=NF + Ext
else
result:=NF;
end;

®
Samirboualam@HOTMAI L.COM 57 juin
Programmation Delphi 7.0

Par exemples
AjouteEventuellementExtension('Bonjour','.txt') retournera 'Bonjour.txt'
AjouteEventuellementExtension('Bonjour.abc','.txt') retournera 'Bonjour.abc'
AjouteEventuellementExtension('Bonjour.','.txt') retournera 'Bonjour.'

On ut iliser a cet t e f onct ion avant de f air e appel à SaveToFile


? La var iable Modif n' est pas nécessair e pour un composant Mémo car ce
composant possède déj à la var iable Modified.
? Dans le menu, ut ilisez la pr opr iét é "ShortCut" pour Enr egist r er , Déf air e, Copier ,
Couper et Coller en choisissant r espect ivement Ct r l+S, Ct r l+Z, Ct r l+C, Ct r l+X,
Ct r l+V.
? Aj out ez un sous menu Rechercher dans le menu Edition. Vous pouvez pr of it er
du composant FindDialog. Pos donne la posit ion d' une sous chaîne dans une
chaîne.
? Remplacez Memo1 par un composant RichEdit et il vous ser a f acile d' impr imer .
? Aj out ez un composant StatusBar pour y met t r e le numér o de ligne et de
colonne.

®
Samirboualam@HOTMAI L.COM 58 juin
Programmation Delphi 7.0

Sommaire
INTRODUCTION.................................................................................................................................1
I INTRODUCTION .........................................................................................................................3
I.1 P RÉSENTATION ........................................................................................................................ 3
I.2 DELPHI ET LES AUTRES ............................................................................................................. 3
I.3 P RINCIPES DE DÉVELOPPEMENT EN DELPHI................................................................................ 4
I.4 DELPHI ET WINDOWS ............................................................................................................... 4
II ENVIRONNEMENT DE TRAVAIL .............................................................................................5
II.1 L’INTERFACE DE DÉVELOPPEMENT DE DELPHI ........................................................................... 5
II.2 LA BARRE DE MENU.................................................................................................................. 5
II.3 LA BARRE D'OUTILS.................................................................................................................. 6
II.4 LA PALETTE DES COMPOSANTS.................................................................................................. 6
II.5 L'INSPECTEUR D'OBJET ............................................................................................................. 8
II.5.1 Modifier les propriétés ......................................................................................................9
II.5.2 Les propriétés événement..................................................................................................9
II.6 LES ÉDITEURS ........................................................................................................................ 10
II.6.1 Editeur de fiches .............................................................................................................10
II.6.2 L'éditeur de texte source..................................................................................................10
II.7 STRUCTURES DES FICHIERS DU PROJET DELPHI......................................................................... 11
III NOTIONS DE BASE SUR LA POO ........................................................................................12
III.1 ENCAPSULATION :.................................................................................................................. 12
III.2 HÉRITAGE :............................................................................................................................ 12
III.3 DROITS D'ACCÈS :................................................................................................................... 13
III.4 LA PROGRAMMATION STRUCTURÉE ......................................................................................... 14
III.5 LES VARIABLES ...................................................................................................................... 15
III.6 OÙ PEUT -ON PLACER LES DÉCLARATIONS?............................................................................... 15
III.7 LES TYPES ............................................................................................................................. 16
III.7.1 Généralités sur les types..................................................................................................16
III.7.2 Les types numériques......................................................................................................16
III.7.3 Les types chaînes............................................................................................................17
III.7.4 Le type boolean..............................................................................................................17
III.7.5 Les types tableaux...........................................................................................................17
III.7.6 Les types enregistrements................................................................................................18
III.8 TESTS .................................................................................................................................... 18
III.8.1 If then...........................................................................................................................18
III.8.2 If then else......................................................................................................................20
III.9 UNE BOUCLE.......................................................................................................................... 21
III.10 DÉBOGAGE......................................................................................................................... 22
III.11 COMMENT SUPPRIMER UN COMPOSANT ................................................................................ 22
IV QUELQUES CONSEILS.........................................................................................................23
IV.1 QUESTIONS FONDAMENTALES ................................................................................................. 23
IV.2 COMMENT IMPRIMER ? ........................................................................................................... 24
IV .2.1 Impression du contenu d'une fiche....................................................................................24
IV .2.2 Utilisation du printdia log................................................................................................24
IV .2.3 Impression par ma méthode "Brute".................................................................................24
IV.3 COMMENT INTRODUIRE UN DÉLAI D'ATTENTE ?........................................................................ 25

®
Samirboualam@HOTMAI L.COM 59 juin
Programmation Delphi 7.0

IV.4 COMMENT LAISSER LA MAIN À WINDOWS DE TEMPS À AUTRE ?................................................. 25


IV.5 APPLICATION COMPORTANT PLUSIEURS FICHES ........................................................................ 25
V PREMIERS PAS.........................................................................................................................27
V.1 ADJONCTION D'OBJETS SUR UNE FICHE .................................................................................... 27
V.2 1ÈRE ÉTAPE: MISE EN PLACE D'UN BOUTON .............................................................................. 27
V.3 SAUVEGARDE DU PROJET ........................................................................................................ 28
V.4 P OURQUOI TANT DE FICHIERS ? ............................................................................................... 29
V.5 2ÈME ÉTAPE: UTILISATION DES COM POSANTS........................................................................... 30
V.6 QUELQUES PRÉCISIONS:.......................................................................................................... 33
V.7 CONCLUSION ......................................................................................................................... 35
VI EXEMPLE D’APPLICATION ................................................................................................36
VI.1 COMMENT PRÉPARER UN PROJET ?........................................................................................... 36
VI.2 RÉSUMÉ DU PROJET ................................................................................................................ 36
VI.3 CRÉER LA FICHE PRINCIPALE................................................................................................... 36
VI.4 AJOUTER DES COMPOSANTS.................................................................................................... 37
VI.5 CRÉATION D’UN MENU ........................................................................................................... 38
VI.6 DES COMMANDES SANS PROGRAMMATION............................................................................... 39
VI.7 CRÉATION D’UN MENU CONTEXTUEL ....................................................................................... 40
VI.8 CRÉATION D'UNE BARRE D'OUTILS ........................................................................................... 40
VI.9 DES CONSEILS POUR GUIDER LE PROGRAMME........................................................................... 42
VI.10 AJOUT D’UNE FICHE D'INFORMATION ................................................................................... 43
VI.11 LES FICHES MODALES ET NON MODALES............................................................................... 44
VI.12 LES EXCEPTIONS................................................................................................................. 45
VI.12.1 Interception des erreurs ...............................................................................................45
VI.12.2 Lorsque l'exception paraît ...........................................................................................45
VI.12.3 Traitement de l'exception.............................................................................................46
VI.13 CONCLUSION...................................................................................................................... 46
VII SECOND EXEMPLE D'APPLICATION: UNE CALCULATRICE........................................47
VII.1 DESCRIPTION DE L'APPLICATION.......................................................................................... 47
VII.2 LES DIX CHIFFRES ............................................................................................................... 47
VII.3 LES TOUCHES OPÉRATEURS ................................................................................................. 48
VII.4 LA TOUCHE "ÉGAL"............................................................................................................. 49
VII.5 LA TOUCHE CORRECTION.................................................................................................... 50
VII.6 LA TOUCHE VIRGULE .......................................................................................................... 50
VII.7 LA TOUCHE +/- ................................................................................................................... 50
VII.8 LE PROGRAMME N 'EST PAS PARFAIT ..................................................................................... 51
VIII UN PETIT ÉDITEUR DE TEXTES.........................................................................................52
VIII.1 COMPOSANT MEMO............................................................................................................ 52
VIII.2 AJOUTONS UN MENU........................................................................................................... 52
VIII.3 UNE VARIABLE POUR SE SOUVENIR SI LE TEXTE EST MODIFIÉ................................................. 53
VIII.4 P ERMETTRE LE CHOIX DU FICHIER À OUVRIR ........................................................................ 53
VIII.5 MENU ENREGISTRER SOUS .................................................................................................. 53
VIII.6 UNE FONCTION FERMER ...................................................................................................... 54
VIII.7 FICHIER NOUVEAU.............................................................................................................. 55
VIII.8 MENU QUITTER .................................................................................................................. 55
VIII.9 EVÉNEMENT ONCLOSEQUERY............................................................................................. 56
VIII.10 LE MENU EDITION........................................................................................................... 56
VIII.11 A PROPOS ....................................................................................................................... 57
VIII.12 IDÉES D'AMÉLIORATIONS................................................................................................. 57
SOMMAIRE ………………………………………………………………………………………….……59

®
Samirboualam@HOTMAI L.COM 60 juin

Vous aimerez peut-être aussi