delphi_introduction_2.pdf

Upload: engineer1976

Post on 19-Oct-2015

13 views

Category:

Documents


0 download

TRANSCRIPT

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    DELPHI Les outils classiques de dveloppement BASIC, PASCAL,C permettent d'crire des programmes qui , au moins l'origine , tournaient sous DOS. Pour introduire les donnes et lire les rsultats l'utilisateur se trouvait le plus souvent devant un cran en mode texte. Rien n'empchait bien sr le programmeur d'crire un logiciel graphique pour prsenter un cran en mode fentre similaire avec celui auquel nous a habitus Windows, mais l'criture d'un tel outil graphique est ardue et exige de larges connaissances en programmation. Les utilisateurs aujourd'hui habitus l'environnement Windows ( ou LINUX) ne supportent plus un cran purement texte, plus grave les programmes crits sous DOS risquent de ne plus fonctionner sur un ordinateur rcent. VISUAL BASIC fut le premier outil permettant d'crire rapidement des programmes affichant des crans de type Windows et tournant dans cet environnement. Il fournit a l'utilisateur des blocs d'instructions directement implantables pour grer un cran graphique. Le programme proprement dit est dans ce cas crit en BASIC. Le VISUAL C++ plus rcent fournit le mme service mais exige une programmation en C++. Nous dcrirons ici DELPHI dvelopp par la socit BORLAND qui s'appuie sur une programmation en PASCAL. C'est un outil largement utilis dans l'industrie , performant, d'emploi ais .Le programmeur qui utilise chaque jour le langage C lui prfrera sans doute le VISUAL C++. mais la philosophie des deux outils est assez semblable et il est sans doute assez facile de passer de l'un l'autre . L'cran sous Windows est divis en fentres (do le nom ) dans lesquelles on peut introduire les donnes et lire les rsultats. DELPHI fournit l'utilisateurs des sous programmes tous faits permettant de visualiser l'cran de telles fentres. On peut demander au programme de faire beaucoup plus ; communiquer par liaison srie, permettre l'criture ou la lecture de fichiers sur tout support magntique ou optique (CD, DVD), autoriser une entre sous forme de dessins, lire des fichiers WAV ou des CD audio. DELPHI fourni la aussi tous les outils ncessaires vitant l'utilisateur de rentrer dans la complexe programmation sous Windows .Nous ne passerons pas en revue toutes ces possibilits, lorsque vous aurez compris le 'truc' vous pourrez vous plonger dans la documentation fort nombreuse aussi bien en librairie que sur le web. Il existe en effet une trs abondante littrature sur ce programme ainsi que des cours,( voir plus loin une bibliographie ) mais le plus souvent les auteurs semblent avoir oubli les difficults qu'ils ont sans doute rencontres au dbut et veulent en dire trop. Comme c'est toujours le cas il existe pour raliser une tche donne de multiples mthodes, mais il faut dans un cours d'introduction but pdagogique n'en cite au dbut qu'une seule , laissant au lecteur le soin de complter plus tard sa

    -----------------------------------r

    formation lorsqu'il aura assimil le mcanisme du logiciel.

    ------------------------ --------------------------------------------------------- 1

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    Nous ne dcrirons pas la procdure d'installation de DELPHI partir du CD ou dun fichier tlcharg, ,elle ne prsente pas de difficult, il suffit de suivre les indications apparaissant l'cran. Les exemples suivants ont t crits sous DELPHI 7 ,ils sont compatibles avec les autres versions du logiciel ( au-del de la version 4 sans doute ). Actuellement BORLAND commercialise la version 10 . Les versions 6 et 7 personnelles sont tlchargeables gratuitement sur le web ( plus de 100Mo ) et fournies sur CD avec certains ouvrages. Le langage de programmation utilis par Delphi est le PASCAl ou plus exactement un PASCAL Objet ,ce texte nest pas un cours de PASCAL, le lecteur est suppos connatre lessentiel du PASCAL classique , des informations concernant la partie Objet sont introduites au fur et mesure des besoins. Un document trs complet peut tre extrait du CD officiel de Delphi cest le guide du dveloppeur., un gros pav de plus de 1500 pages mais essentiel. Documentation : http://fbeaulieu.developpez.com/guide/ Un cours trs complet, parfois mme un peu trop, sur Pascal objet et Delphi http://dialog.ac-reims.fr/web/Documents/delphi.pdf Une introduction avec exemples intressants. ( crit au temps de delphi4) http://delphi.developpez.COM/telecharger/gratuit/delphi7-perso/ Tlchargement de la version 7 de Dlelphi , sur le site on trouvera aussi Delphi6. Michel Pelletier Delphi 5 Le Tout en poche Campus press Pas toujours trs pdagogique mais des exemples intressants bien dtaills. Lintro Dveloppement DELPHI 6 Thomas Binzinger Campus Press 2002 Un trs bon livre Le guide du dveloppeur Sur le CD de Delphi ou sur le web (plus de 1500 pages ) : http://noisetteprod.developpez.com/delphi/doc/pdfd7 http://pagesperso-orange.fr/patrice.rabiller exemples de sujets donns des lves de seconde.

    ----------------------------------------------------------- --------------------------------------------------------- 2

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    L'Environnement DELPHI

    Au lancement du logiciel lcran a laspect ci dessous.

    La partie suprieure de l'cran donne accs au systme de menus et la barre d'outils. Sur la premire ligne : Fichiers permet d'ouvrir un nouveau fichier, un nouveau projet, d'enregistrer votre travail et d'imprimer. Edition donne accs aux fonctions copier coller classiques ainsi qu'a des outils de prsentation. Excuter permet de lancer l'excution d'un programme La feuille de travail prsente l'cran est le rectangle situ droite, sous Delphi on parle de FICHE , un projet peut comporter plusieurs FICHES de ce type , A dpart la fiche prsente l'cran porte le nom initial Form1 . Cette fiche masque en fait une fentre dans laquelle scrira le programme ss uource , cest la fentre UNIT que lon peut visualiser en dplaant la FICHE avec la ouris puis en cliquant dessus , mais nous y reviendrons.

    ----------------------------------------------------------- --------------------------------------------------------- 3

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    Sur la fiche le programmeur va placer diffrentes fentres secondaires

    permettant la saisie de donnes , laffichage de rsultats, des boutons sur lesquels on viendra cliquer avec la souris et peut tre aussi des textes et dessins. Toutes ces choses sont des OBJETS.

    Il y a de nombreux objets dfinis dans DELPHI , l'utilisateur confirm peut mme en crire d'autres , mais c'est une autre histoire ! Ces objets sont graphiques ou non . Chaque objet possde un certain nombre de caractristiques ( taille couleur format du texte etc) et peut effectuer diverses tches qui caractrisent le type auquel il appartient.

    En PASCAL classique on trouve la notion de type pour dfinir les lments qui constituent un programme, type boolen, caractre, chane etcCette notion de type se retrouve dans DELPHI mais en beaucoup plus complexe. Pour manipuler un objet qui apparat dans un cran sous Windows il est ncessaire dcrire de nombreuses lignes de code, elles dfinissent le type de base TObjet partir duquel sont construits tous les autres en ajoutant chaque fois une couche logicielle supplmentaire. Cette structure hirarchise est une caractristique essentielle des langages objet LObjet button par exemple est de type Tbutton qui est un descendant de Tobjet , il en est de mme de Tform .

    Pour accder ces objets regardons la seconde ligne de l'cran .En cliquant sur le premier bouton Standard nous voyons apparatre une premire liste

    ----------------------------------------------------------- --------------------------------------------------------- 4

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    Parmi tous ces objets nous retiendrons surtout A Dfinit l'cran une zone dans lequel on peut crire une ligne de texte .Reconnu dans DELPHI sous le nom de Label de type Tlabel. ab est une zone de saisie , c'est dans cette fentre que nous introduirons les donnes demandes par le programme nombres ou caractres. Reconnu dans DELPHI sous le nom de Edit de type TEdit ok est un bouton de commande sur lequel il faudra cliquer avec la souris , sous DELPHI Button de type Tbutton . Nous utiliserons surtout ces 3 outils . Les boutons supplmentaires de la seconde ligne: Supplment Win32 Systme etc donnent accs d'autres objets , nous en rencontrerons quelques uns par la suite . Chaque objet possde des proprits qui lui sont propres , taille , fonte utilise pour le texte, nature du texte , nom etc.. Ces proprits apparaissent dans la partie gauche de l'cran . linspecteur dobjets lorsque lobjet est slectionn. Nous citerons Caption ( en franais lgende ) c'est le texte qui apparat dans l'objet considr Name c'est le nom de l'objet utilis par le logiciel , ne pas le confondre avec le prcdent. Color la couleur Font : qui permet de choisir la fonte utilise pour les caractres , taille et couleur. On peut noter encore AutoSize ( True ou False) qui gre lajustage automatique de la fentre celle du texte Caption. , Visible ( True ou False) qui dfinit la visibilit lcran de lobjet considr, on peut ainsi masquer des fentres pour ne faire apparatre quune seule un moment donn. La colonne evenements permet pour chaque objet de dfinir des circonstances le concernant, par exemple pour un bouton le dclenchement s'effectuera l'enfoncement du bouton ( Onclick) ou son relchement . Ci contre linspecteur dobjets correspondant la fiche Form1 elle mme , noter Caption=Form1 cest le nom de la fiche Color=ClbTnFace ( un gris) , sa hauteur Height=563 etc ----------------------------------------------------------- ----------------------------5 -----------------------------

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    Premier PROJET La construction dun projet comporte deux tapes essentielles, la mise en place de la prsentation lcran puis lcriture du logiciel PASCAL associ tous les objets. Notre premier projet est trs simple mais illustre bien le mcanisme de DELPHI . Nous nous proposons d'crire un programme dextraction de racine carre de nombres entiers.

    .L'cran sous Windows sera constitu de deux zones de texte et d'un bouton. La premire est la zone de saisie dans laquelle nous allons entrer un nombre entier Dans la seconde apparat le rsultat obtenu en cliquant sur le bouton . Ces trois objets sont placs sur un fond vert. Si l'cran d'entre n'est pas celui dcrit plus haut y revenir par Fichier Nouveau une fentre s'ouvre, slectionner application La premire chose faire est de dfinir les noms des fichiers constituant le projet, le non du projet lui mme et celui de la fiche et programme pascal. Pour cela effectuons un premier sauvetage de scurit par : Fichier Tout Enregistrer. Une fentre souvre qui nous demande dabord le nom de lunit ,cest dire du programme PASCAL, par dfaut unit1 , choisissons premier , il faut ensuite entrer le nom du projet , par dfaut Project1 que nous changeons en Projet 1 Dans le rpertoire Projet plusieurs fichiers sont crs , ils constituent lensemble des fichiers ncessaires pour la compilation du projet .

    Extension Description DPR Contient lunit principale du projet DFM Contient les informations relatives une fiche taile couleur etc

    Cest un fichier texte PAS Cest lunit crite en Pascal DCU PASCAL + DFM EXE Lexcutable fonctionne sous Windows RES Ressources de lapplication par exemple son icne

    DOF/DSK/CFG Fichiers doptions ~ ??? Tous les fichiers dont lextension commence par ~sont provisoires

    et peuvent tre effacs Voir note 1 en fin de document. Nous allons maintenant construire laspect graphique du projet.

    Revenons la fiche dont le nom est toujours Form1. Sur lInspecteur dobjets nous modifierons la couleur en cliquant droite sur la ligne Color , une liste droutante apparat, choisissons le vert qui a pour nom clLime . En revenant sur la fiche est devient verte.

    Nous allons ensuite crire le titre Mon premier programme dans un objet qui est une zone de texte , lobjet A vu plus haut. Dans la ligne des objets cliquons sur A , qui est alors activ (il apparat dans un carr plus clair) , puis au centre de la fiche ou sinscrit le mot label1 ( nom par dfaut ) (entour de petits carrs noirs, les

    ----------------------------------------------------------- --------------------------------------------------------- 6

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    poignes de rglage , indiquant que lobjet est activ.) Dans la fentre de gauche apparaissent les proprits de cet objet.

    La ligne Name = Label1 cest le nom par dfaut que nous ne modifierons pas ( mais cest possible) la ligne Caption prsente le mme nom , cest lui qui est visible lcran nous y introduirons le titre choisi Mon premier programme. Les lettres sont toutes petites , en cliquant sur la ligne Font une fentre souvre permettant de choisir le type de caractres, par exemple ARIAL , la taille , par exemple 24 , la couleur (conservons le noir). Nous ne modifierons pas la proprit Color pour que la fentre aie la mme couleur que le fond .. . Il est possible de dplac r le titre la souris pour lamenlemplacement le meilleur. .Lcran est alors reprsentcontre. Maintenant plaons la fedont nous voulons calculer la raDelphi comme Edit . Cliquons le placer ensuite sur la fiche apparat avec le titre Edit1 . DaSa couleur Color= (clYelloweffacer le texte en changeaChoisir ensuite la taille et fonte Si la proprit AutoSisajustera automatiquement taille fixe ( ajuste la souris) Au dpart du programmelutilisateur nous allons lui assfentre (objet A) place juste celle qui nous a permis de plale nom label2 Le rsultat du calcul serlequel nous fixerons la couleur(arial 14 noirs) .Le mot label3 effacer dans caption , attention ne pas toucher Name. .Cette fois il vaut mieux que le largeur de la fentre soit ajuste automatiquement la taille du rsultat nous ferons donc AutoSize=True ; . Comme plus haut pour guider lutilisateur plaons une tiquette racine au dessus de lobjet prcdent (label4)

    ------------------------------------------------e

    er

    ci

    ntre dans laquelle nous crirons le nombre entier cine carre. Cest un objet de saisie ab dsign par

    donc sur ab dans la ligne des objets pour lactiver et gauche en dessous du titre . Un rectangle blanc ns la fentre de gauche dfinissons ses proprits . ) Jaune, il ne faut pas modifier son nom (Name) mais nt caption= ( en pressant sur la barre despace) des caractres dans Font ( Arial 14, noir) ze est vraie (true) la taille de la fentre de saisie celle du nombre que lon crit. Pour la conserver de il vaut mieux choisir AutoSize=False (fausse) cette fentre sera vierge de tout nombre, pour guider

    ocier une tiquette Entrer entier. Dans une petite au dessus. Pour cela la procdure est la mme que cer le titre , lobjet A introduit prend automatiquement

    a prsent dans un troisime objet A ( label 3) pour bleue color = clAqua puis la fonte des caractres qui est plac par dfaut sera comme prcdemment

    ----------- --------------------------------------------------------- 7

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    Pour finir il nous faut un bouton sur lequel appuyer pour lancer le calcul. Cest un objet Button que nous irons chercher dans la ligne des objets et placerons sur la fiche entre les fentres prcdentes. Ce bouton na pas de couleur mais changeons caption = calcul Comme dhabitude position et taille peuvent tre ajusts avec la souris. La fiche cran Form1 a maintenant lallure ci dessus . Seconde partie du travail crire le programme PASCAL accompagnant les objets et leurs fonctions. Mais avant examinons la fentre du second plan UNIT 1 en cliquant dessus (si elle est en partie visible ou ProjetsVoirUnites premier)

    Il sagit dune routine de type unit avec son nom premier choisi au dbut .

    Dans le listing prsent deux mots ont un rle essentiel : interface et implementation. Ils dfinissent deux zones , la premire entre ces deux mots , la seconde entre la directive de compilation {$R *.dmp} et le mot fin.

    La premire zone est descriptive, on trouve dabord le terme uses suivi de la liste des units utilises par le programme PASCAL , cette ligne est la mme que dans un programme PASCAL sous DOS. Puis Type ou sont annoncs les types des diffrents objets introduits dans la construction de lcran. 4 Labels 1 Edit 1

    ----------------------------------------------------------- --------------------------------------------------------- 8

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    Button.,puis les variables var ici Form1:Tform indiquant que lobjet Form1 (la fiche principale) est de type Tform.

    Derrire les mots Private et Public il est possible de dfinir des variables .

    Celles dfinies dans private ne seront accessibles que par les procdures ou fonctions appartenant la fiche Form1 , celles dans public sont accessibles pour toutes les fiches dun programme sil en comporte plusieurs , par contre elles ne sont pas reconnues dans des procdures indpendantes ( dont le nom ne commence pas par TFOrm1. (voir ci dessous ) .

    Exemple : Soit lunit suivante, la fiche sappelle Tform1 ( ne figurent ici que les parties concernes par le problme). Private

    A :integer ; Implementation {$R*.dfm} Var

    C :integer ; Procedure Agmente (b:integer); Begin; A:=4; B:=B+1; C:=3; End; Procedure Tform1.FormCreate(Sender:Tobject); Begin C :=C+1 ;

    A :=56 ; Augmente (A); End;

    La variable A est dfinie dans Private donc dans Tform1, elle est reconnue par la procdure Tform1.FormCreate mais non dans la procdure Augmente et le compilateur annonce une erreur (ligne en rouge quil faudra supprimer ). Par contre C est une variable totalement globale elle est connue aussi bien dune procdure que de lautre. Tant qua B elle est interne la procdure Augmente et ne sert que dintermdiaire, la dernire ligne Augmente (A) envoie 56+1 dans A.

    Dernire remarque : La procdure Sauve utilise par Tform1 doit tre dfinie avant cette dernire .

    Revenons notre programme : Dans la seconde zone avant le end final il ny a rien pour le moment il faut y

    introduire les informations sur le rle du bouton. Dans la fiche cliquons donc sur le bouton .Il apparat alors lcran la partie de lunit concernant ce composant.

    ----------------------------------------------------------- --------------------------------------------------------- 9

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    L Il sagit dune procedure ayant pour nom Tform1.Button1Click(Sender :Tobjet) ;

    Tform1 pour indiquer que lon est dans la fiche portant ce nom (la seule du programme dans le cas prsent)

    Button1Click car lvnement est un click sur le bouton de nom button1 . Entre parenthse est indiqu que cet objet est un descendant du type de base Tobject. Lorsque lon presse le bouton (cest lvnement dclenchant) le nombre entier qui a t plac dans Edit1 doit tre lu , sa racine carre calcule et le rsultat bascul dans la fentre de sortie Label3. Soit : Par exemple : Procedure Tform1.Button1Click(Sender :Tobject) ;

    Var:a :integer ; // dfinition dun entier a Var b :real ; / // dfinition dun rel car la racine est un rel

    Begin a := StrToInt(Edit1.text) ; { le nombre a est le terme Text de lobjet Edit1, mais il sagit dune chane de caractres car un Edit ne peut recevoir que des caractres, la fonction StrToInt ( lire Str To Int) transforme la chaine de caractres en un nombre entier. } b :=sqrt(a) ; { extraction de la racine , si lopration demande tait plus complexe il faudrait utiliser ici une fonction ou procdure crite spcialement } Label3.Caption :=FloatToStr(b) ; { b est un rel (flottant) , que la fonction Float To Str transforme en chane de caractres compatible avec lobjet Label } End ; Si on examine maintenant lunit complte on pourra constater quune ligne supplmentaire t insre dans la premire zone Procedure Button1Click(Sender :Tobject) ; Il sagit de lannonce dans cette premire zone de la procdure qui est crite dans la seconde. Cest ncessaire si le programme ne le fait pas automatiquement le programmeur devra le faire lui mme.

    ----------------------------------------------------------- --------------------------------------------------------- 10

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    unit premier; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Label2: TLabel; Label3: TLabel; Label4: TLabel; Button1: TButton; procedure Button1Click(S private { Dclarations prives }

    pd C Rdas pe

    ---------------------------------------------------ender: TObject);

    , soit t lors

    outon public { Dclarations publiques } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); Var a:integer; Var b:real; begin a:=StrToInt(Edit1.Text); b:=sqrt(a); Labe3.Caption:=FloatToStr(b); end; end.

    Maintenant sauver votre travail comme plus haut et lancer lexcutionar la commande excuter de la premire ligne soit F9. Si une erreur interviene la compilation elle est indique et vous la corrigez.

    Ci contre lcran final aprs avoir introduit le nombre 34 et press le balculer .

    emarquer le imensionnement utomatique de la fentre de ortie.

    Le projet fonctionne , our crer le fichier xcutable .exe il suffit de -------- --------------------------------------------------------- 11

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    lancer la commande de la premire ligne : Projet Compiler Projet ou au clavier ctrl F9 Remarques sur ce premier programme Ce programme nous a permis d'utiliser les objets les plus importants , Zone de Texte ((Label) de saisie (Edit) et boutons (button) .Nous avons vu comment en cliquant dessus on fait apparatre le logiciel PASCAL qui leur est associ. Le programme le plus important est celui qui est associ au bouton , on y trouve les fonctions et procdures ncessaires pour excuter les tches souhaites , il peut lire ou modifier les proprits des autres objets, caption, text, mais aussi les tailles couleurs ou visibilit. etc.. Nous avons not que le contenu des fentres l'cran est de type texte ce qui oblige des conversions .Dans la liste des instructions du PASCAL OBJET cette conversion est assure par les instructions suivantes.

    StrToInt de chane de caractre en entier IntToStr d'entier en chane de caractre FloatToStr Un nombre en virgule flottante est transcod en chane de caractre FloatTOsrtF effectue la mme action mais autorise un formatage prcis du rsultat StrToFloat l'inverse

    DELPHI autorise aussi une conversion dcimale vers Hexa DecToHex et HexToDec Note sur la structure de lunit. Le programme prcdent effectue une simple extraction de racine qui est ralise par la seule instruction sqrt . Si lopration demande est plus complexe il est ncessaire de leffectuer soit par une fonction soit une procdure. Par exemple pour calculer le prix TTC partir du prix hors taxe, il faut multiplier par 1,196 . Lcran est le mme que prcdemment mais la fentre de gauche affiche le rsultat du calcul cest dire le prix TTC , le hors taxe tant entr gauche. Attention ces deux chiffres sont des rels (real) . Derrire la directive de compilation : Function AvecTaxes(p :real ) :real ; Begin AvecTaxes(a):=p*1.196; End; Et la routine associe au bouton est: Procedure Tform1.Button1Click(Sender :Tobjet) ; Var a,b:real; Begin a:=StrToReal(Edit1.Text); b:=AvecTaxes(a);

    ----------------------------------------------------------- --------------------------------------------------------- 12

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    Label3.Caption:=FloatToStr(b); End; Remarque:le sparateur de la partie dcimale est un point dans la dfinition de la fonction et une virgule la saisie car la version de Delphi est franaise . Le mme rsultat aurait t obtenu en utilisant une procdure Procedure LesTaxes(a :real;var b:real); Begin

    b:=a*1.169; End; Mais on peut tre tent dentrer dans cette procdure la saisie du prix dans la fentre dintroduction , cest dire : Procedure LesTaxes(var b :real) ; Var a:real; Begin a:=strToFloat(Edit1.text); b:=a*1,179; End; Et cette fois le compilateur dtecte une erreur la premire ligne , en effet la procdure LesTaxes est compltement indpendante de Form1 et de ses composants, elle ignore lexistence de Form1. I Il faut faire une dclaration anticipe (prototype de la procdure) au dbut du programme , puis lappel ultrieur faire prcder le titre du terme Form1. Soit : Au dessus de la ligne Private : Procedure LesTaxes(var b :real) ; Et ensuite aprs la directive de compilation: : Procedure Form1.LesTaxes(var b :real) ; Var a:real; Begin a:=strToFloat(Edit1.text); b:=a*1,196; End; Et la routine bouton qui se rduit : Procedure Tform1.Button1Click(Sender :Tobjet) ;

    Var a:real; Begin LesTaxes(a);

    ----------------------------------------------------------- --------------------------------------------------------- 13

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    Label3.Caption:=FloatToStr(a); End;

    Exemple dobjets importants Il existe un nombre considrable dobjets et il est hors question de les passer tous en revue ici, nous en citerons seulement quelques uns

    Bouton BitMap BitBtn

    C'est un objet de supplment Il joue le mme rle que l'objet bouton mais peut contenir une image . Les proprits essentielles sont: Caption //Le texte apparaissant sur le bouton Height et Width //Hauteur et largeur du bouton en pixels Left et Top //position du bouton sur la fiche l'origine tant en haut gauche . Mais surtout Glyph //Une fentre s'ouvre demandant la position de l'image utiliser. Attention cette image doit avoir une taille compatible avec les paramtres prcdents, si elle est plus grande elle sera tronque. Seuls les fichiers .bmp sont admis. Visible // vrai ou faux visible ou non /

    . Boutons Radio

    Ce sont des boutons qui peuvent se trouver dans deux tats enfoncs ou non .La proprit correspondante est Checked (True ou False). , comme les prcdents ils peuvent avoir une dnomination Caption , une couleur etc mais surtout ils fonctionnent par groupe , un seul bouton peut tre enfonc la fois ( comme les boutons poussoirs de choix de gamme donde dun poste de radio dou leur nom.) A la cration de la fiche lun des boutons peut tre activ en faisant Checked=True ; ( mais un seul ) . Ces boutons peuvent tre groups dans un bloc GroupBox de la palette standard. ( il faut ouvrir sur la fiche une fentre groupbox et placer les boutons dedans ). Des boutons dans deux groupes diffrents sont indpendants. Pour grouper plusieurs RadioBoutons il est galement possible , sans groupbox , de donner tous les lments que lon veut grouper la mme valeur de la proprit GroupIndex Dans un groupe si la proprit AllowAllUp est vraie (True) il est possible de mettre tous les boutons dans ltat off en cliquant sur le bouton enfonc.

    CheckBox

    Cest une simple case cocher , ltat est dtermin par la proprit Checked

    La ListBox C'est une extension de Edit plusieurs lignes. Elle est disponible parmi les objets standards Ses proprits:

    Color la couleur de fond

    ----------------------------------------------------------- --------------------------------------------------------- 14

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    Font la fonte des caractres comme pour Edit ou Label Clear pour l'effacer Column le nombre de colonnes Mais surtout la procedure Items.Add qui ajoute une ligne aprs la dernire ligne prsente Ce doit tre une chane de caractres : Liste1.Items.Add (' ceci est une nouvelle ligne '); Par exemple avec une ListBox et un bouton En choisissant column=2 l'affichage des nombres de 0 20 s'obtient avec : Procedure TForm1.Button1Click(Sender: TObject); Var i:integer; Begin ListBox1(Clear); // effacement pralable For I;=0 to 20 do ListBox1.Items.Add(intTOstr(i)); End;

    Compte tenu de la taille de la fentre trace au dpart et de la fonte choisie, les nombres de 0 20 ne tiennent pas sur 2 colonnes , apparat alors un curseur permettant un balayage horizontal, il n'y a toujours que 2 colonnes dans la fentre. Si column est mis 0 il y a une seule colonne avec curseur vertical, pour column=1 le curseur est horizontal .

    CheckListBox (TlistBox) Cest une liste comme la prcdente mais on peut cocher chaque ligne. Exemple : Plaons sur une fiche un bouton (Button1) une case de sortie (Label1) et une CheckListBox ( CheckListBox1). Une fentre apparat sur la fiche , dans linspecteur dobjets effectuons un double click sur la droite de la proprit Items ( ou un seul click sur les points de suspension) , lditeur de liste de chanes souvre. Taper la premire ligne puis aprs un retour chariot la seconde etc Lorsque toutes les lignes sont entres faire OK. Redimentionner la fentre et modifier au besoin (Font) la taille et forme des caractres. Noter le petit carr situ gauche de chaque ligne, ce sont les zones de slection.

    Cliquer alors deux fois sur le bouton et dans la routine Button1Click ajouter la ligne :

    Label1.Caption :=IntToSrt(CheckListBox1.ItemIndex) ;

    Sauver et lancer lexcution. Dans la liste cliquer alors la zone de slection de lune des lignes puis sur

    button1. Le numro de la ligne choisie saffiche dans Label1. On notera que la premire ligne est la ligne 0 et non 1.

    Si plusieurs lignes ont t slectionnes cest le rang de la dernire ltre qui est affich. .

    Le Timer

    ----------------------------------------------------------- --------------------------------------------------------- 15

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    Fait partie des objets Systme.. Ce n'est pas un objet graphique, il apparat sur la fiche comme une petite horloge mais ne figurera pas dans la prsentation finale l'cran . Cet objet est un compteur interne qui dlivre des intervalles rguliers un signal dclenchant une action choisie par le programmeur. Dans l'Inspecteur d'Objets il n'y a que 4 proprits: Enabled // Si True (vrai) le compteur interne est lanc sinon il est inhib. Intervalle //C'est en millisecondes le temps qui s'coule entre deux vnements dclenchants Name //comme d'habitude le Nom par dfaut Timern (n=1 2 3) Tag // est simplement un entier associ au Timer la disposition du programmeur. Le seul vnement propos est OnTimer c'est l'impulsion dclenchante cite plus haut. A titre d'exemple le programme suivant met en uvre 2 boutons permettant de lancer un compteur une vitesse dfinie dans la fentre Edit1. L'intervalle est introduit dans Edit1 et en pressant le bouton les nombres successifs dfilent dans Label1 . Les objets sont slectionns et placs sur la fiche comme plus haut;.On dfinira : Timer1 Enabled =False (il n'est pas lanc au dpart) Intervalle =100 (Dix chiffres par seconde par dfaut ) Label1 ( ou seront affichs les nombres ) color clYellow (jaune) Label1.Caption ' ' // effacement AutoSize= False // pour que la fentre reste de largeur constante Label2 ( le commentaire intervalle ) caption =intervalle Font Arial Black Noir 12 Button1 Caption =Lancer Button2 Caption= stop Edit1 ( ou sera introduite la valeur de la priode ) Text : =100; // valeur par dfaut 100mS . Si on avait plac au dbut un texte, par exemple Intervalle il y aurait un risque d'erreur si l'utilisateur appuyait sur le bouton avant d'y entrer un entier. Un entier a est dclar dans la zone Private . Le programme associ Button1 Entre Begin et end a:=0 // initialisation de a Timer1.Enabled:=True; // le timer est lanc) Timer1.Interval:= strTOint(Edit1.Text) ; // lecture de l'intervalle Le programme associ Button2 , entre Begin et End; Timer1.Enabled:=False // stop timer Label1.Caption:=' ' // effacement du contenu de Label1. Le programme associ au timer

    ----------------------------------------------------------- --------------------------------------------------------- 16

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    a:=a+1; // chaque vnement a est incrment Label1.Caption:=intTOstr(a); // affichage du nombre

    Ce projet est sauv sous les noms de Horloge et pr_Horloge .

    Le programme:

    unit Horloge; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Timer1: TTimer; Edit1: TEdit; Button1: TButton; Button2: TButton; Label1: TLabel; Label2: TLabel; procedure Timer1Timer(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Dclarations prives } a:integer; public { Dclarations publiques } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Timer1Timer(Sender: TObject); begin

    ----------------------------------------------------------- --------------------------------------------------------- 17

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    a:=a+1; Label1.Caption:= intTOstr(a) end; procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin a:=0; i:=strTOint(Edit1.Text); Timer1.interval:=i; Timer1.enabled:=True; end; procedure TForm1.Button2Click(Sender: TObject); begin Timer1.enabled:=False; Label1.caption:=' '; end; end.

    Le Timer peut tre utilis pour raliser un retard unique par exemple :

    procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin edit1.color:=clTeal; // lorsque l'on presse le bouton Edit1 devient verte et le //Timer :est activ Timer1.Enabled:=true; end; procedure TForm1.Timer1Timer(Sender: TObject); begin edit1.color:=clred; // l'evnement Timer suivant EDIT1 passe au //rouge et le Timer est stopp . Timer1.Enabled:=False; end;

    Lobjet TCANVAS (canevas) Le mot Canvas ( en franais canevas) dsigne une proprit dun objet mais cest aussi un objet. Les canvas sont uniquement disponibles en phase dexcution cest pourquoi ils ne figurent pas dans linspecteur dobjets .Certains objets seulement possdent un canvas, les fiches Form ,Image, Paintbox Grilles, Le canevas utilise un crayon pour tracer des lignes et les contours, un pinceau pour peindre les surfaces, une fonte pour crire .On utilise crayon et pinceau pour dfinir les caractristiques du dessin que lon trace : couleur, grosseur des traits .

    ----------------------------------------------------------- --------------------------------------------------------- 18

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    Loutil canvas est la cl de tous les tracs graphiques :Dans la zone concerne le point 0,0 est le coin haut gauche, labscisse x augmente vers la droite et lordonne y vers le bas . La commande MoveTo (x,y) positionne le crayon au point de coordonnes x,y La commande LineTo(x,y) trace une ligne de la position prcdente du crayon jusquau point x,y et repositionne le crayon en ce point. Rectangle(x1,y1,x2,y2), dessine un rectangle ayant un coin suprieur gauche en x1,y1 et coin infrieur droit en x2,y2. RoundRect(x1,y1,x2,y2) donnerait des coins arrondis De mme Ellipse(x1,y1,x2,y2) trace une ellipse circonscrite lintrieur du rectangle dfini par les coordonnes Enfin TextOut(x,y,text) affiche le texte aux coordonnes prcises. Tous ces tracs sont effectus avec les proprits du crayon (pen) , qui sont Color, Style et Width. Le pinceau ( Brush) poss e les proprits Color et Style , cette dernire dfinit le motif darrire plan. Exemple 1 Ouvrons un nouveau projet avec seulement la fiche Form1 En cliquant deux fois dessus nous avons accs la procdure associe Tform1.FormCreate que nous complterons comme ci dessous. :

    La premire ligne dfinit la couleur du crayon, la seconde celle du pinceau, la troisime la taille du trait

    spul

    0,0

    Ssfcdp Wauivante trace un trait ( bleu de largeur 5) de ce oint au point 500,300.La dernire ligne dessine n rectangle de fond rouge et bords bleus(de

    argeur 5). i on demande lexcution aucune erreur nest ignale mais la fiche qui apparat est vierge. Il aut dclencher son trac au moment de sa ration en choisissant dans linspecteur objets de cette fiche onPaint=onCreate ( La rocdure bien pour titre FormCreate)

    Il est possible dallger lcriture de la procdith Canvas do derrire le mot with Form1

    ucune ambigut, canvas. do aurait suffit.

    ----------------------------------------------------------- ----19dde crayon (5 pixels, par dfaut elle serait de 1).La quatrime ligne positionne le crayon en x=10,y=10 la

    ure en utilisant la commande : nest pas ncessaire car il ny a

    -----------------------------------------------------

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    Exemple 2 : Nous utilisons cette fois un objet PaintBox dont nous fixons dans linspecteur dobjets la taille Height=400, Width=700. et la couleur color=clLime (verte). Cette fois nous introduisons un bouton button1 sur lequel nous cliquerons pour effectuer le dessin. Et un autre button2 pour leffacer. Cliquer deux fois sur le premier bouton donne accs la procdure associe., soit :

    En lanant lexcution on obtient lcran suivant :

    ----------------------------------------------------------- --------------------------------------------------------- 20

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    Au dpart la taille du crayon na pas t dfinie elle est donc par dfaut 1 pixel , cest ainsi que sont tracs lencadrement par les instructions Line, et lencadrement du premier rectangle. On notera pour ce dernier quil prend par dfaut la couleur de lobjet PaintBox1 .Le rectangle suivant ainsi que le trac polynomial utilise un

    crayon

    ur lviter il

    r ande Refresh la fin de la routine off pour rinitialiser le composant de

    fiche.

    ure Tform1.Button2Click(sender :Tobjet) ;

    .Visible:=false; esh;

    nd;

    Trac dune courbe y=f(x).

    de 512 points de large et 500 de haut. Ce PaintBox .

    rois boutons sont utiliss :

    ocedure Button1Click contient les commandes canvas de lobjet aintbox1

    bleu de largeur 5 et un remplissage rouge. Attention lorsque lon presse le bouton off le dessin disparat mais si on

    active de nouveau le bouton on le trac commence avec un trait bleu large et un fond rouge car les instructions prcdentes ont t conserves. Pofaudrait rinitialiser pinceau et crayon dans la procdure du bouton off. Tel quil est le programme prsente un dfaut , au premier appui sur le bouton on le dessin apparat, il disparat en pressant off, puis apparat de nouveau avec on mais ensuite le bouton off nagit plus. Il faut pour que tout rentre dans lordre ajouteune commla ProcedBegin PaintBox1 RefrE Exemple 3 La courbe est trace dans un cadrecadre est trac dans un objet T Button1 : Cadre Trace les cts du cadre et les axes La PrP

    Button2 Diagonale Trace une diagonale sur le repre prcdent La procdure Button2Click appelle la procdure Diagonale qui charge

    dans le tableau MonEcran ( qui a t cre comme une variable globale dans les premires lignes derrire la directive de compilation ) les 512 ordonnes du trac de

    ----------------------------------------------------------- --------------------------------------------------------- 21

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    cette droite, puis appelle la procdure TraceEcran qui utilise ce tableau pour effectuer le trac dans le Canvas de PaintBox1 Button3 Courbe Trace la courbe. ,( dans cet exemple une sinusode La procdure Button3Click fonctionne

    . ) de la mme faon que la prcdente

    lle appelle la procdure Courbe qui charge dans MonEcran les points de la ppelle la routine TraceEcran.

    Il faut

    vas de Paintbox1 , elle doit donc tre d

    gonale et Courbe doivent dans le listing apparatre avant

    connues.

    ariants, Classes, Graphics, Controls,

    trls;

    x;

    der: TObject); der: TObject);

    Ecourbe puis a

    noter :

    MonEcran est une variable globale utilisable par toute procdure du programme quelle soit de la classe Form1 ou non.

    La procdure TraceEcran utilise le Canclare dans Form1 et pour cela dclare dans la partie interface de lunit.

    et appele avec son nom Tform1.TraceEcran. Les procdures Diagonale et Courbes ne sont pas de la classe Form1

    mais peuvent tre appeles partir de cette classe. Les procdures Diales procdures Button2Click et Button3Click qui les appellent sinon elles ne seraient pas re nit Graph;u interface uses Windows, Messages, SysUtils, V Forms, Dialogs, ExtCtrls, StdC type TForm1 = class(TForm) PaintBox1: TPaintBo Button1: TButton; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject);

    ure TraceEcran; proced procedure Button2Click(Sen procedure Button3Click(Sen private { Dclarations prives }

    clarations publiques }

    public { D end; var Form1: TForm1;

    mentation imple

    *.dfm} {$R Type cran = ARRAY[1..512] of integer; Evar MonEcran:Ecran; { dfinie comme variable globale }

    ----------------------------------------------------------- --------------------------------------------------------- 22

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    procedure TForm1.Button1Click(Sender: TObject);{ trac du cadre et axes}

    500);

    To(256,0); neTo(256,500);

    End;

    dure Diagonale; {Rempli le tableau MonEcran avec les points ale et appelle la routine de trac }

    :=500-Round(i*500/512); nd;

    rm1.TraceEcran;

    dure Courbe;{Rempli le tableau MonEcran avec les valeurs de la ppelle la routine de trac}

    :=Round(250+250*sin(2*Pi*i/512)); nd;

    rm1.TraceEcran;

    .traceEcran; { trace l'cran avec les valeurs du tableau en sant une proprit Canvas , elle doit donc tre dfinie dans la

    1}

    cran[1]);{ accs la variable globale MonEcran}

    LineTo(i,MonEcran[i]); End;

    end;

    orm1.Button2Click(Sender: TObject);

    agonale;

    TForm1.Button3Click(Sender: TObject);

    urbe;

    begin With PaintBox1.Canvas do Begin Rectangle(1,1,512, MoveTo(0,250); LineTo(514,250); Move Li end; Procede la diagonVar i:integer; Begin For i:=1 to 512 do Begin MonEcran[i] EFoEnd; Proce courbe et aVar i:integer; Begin For i:=1 to 512 do Begin MonEcran[i] EFoEnd; Procedure Tform1utiliclasse TFormVar i:integer; Begin With PaintBox1.Canvas do Begin MoveTo(0,MonE For i:=2 to 512 do Begin End; procedure TFbegin Diend; procedurebegin Co

    ----------------------------------------------------------- --------------------------------------------------------- 23

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    end; End.

    fre ou un point au eu dune virgule. La protection vis vis de ces erreurs est parfois difficile car on

    ujours imaginer lerreur que commettra lutilisateur.

    a p 45RT la conversion ne peut se faire et le programme se plante.

    utre instruction de conversion :, la procdure val

    ger);

    Soit par exemple une fiche avec un bouton, une fentre dentre Edit1 et de

    orm1.Button1Click(Sender :Tobjet) ;

    Edit1.text,a,err); err0 then Label1.Caption:=erreur dexcution else Label1.caption:=Edit1.text;

    si lon tape 15,8 ou ZERT56 Label1 affiche erreur de saisie

    l un rel mais reste utilisable si le ombre attendu est un entier et que loprateur entre par erreur un nombre avec

    Label1 et un bouton el ou un entier

    Et lon excute linstruction Val(Edit1.text,N,err) ; P :=

    Gestion des erreurs . Un programme peut sinterrompre et mme bloquer lordinateur si une instruction ne peut pas seffectuer et gnre une erreur. Cest le cas classique de la division par zro, de dpassement de capacit (par exemple crire la position n dans une chane de caractres de longueur n-1 ) etc.. mais aussi erreur de lutilisateur qui entre une lettre alors que le logiciel attend un chifline peut pas to Exemple 1 : Protection vis vis dune entre dans un objet Edit qui attend un entier. Cest le cas le plus simple. Linstruction habituelle est dans ce cas a:=strToint(Edit1.text) ; mais si lutilisateurtaLe plus simple est dutiliser une a Val( s:chane,Var a,err:inteS est la chane de caractre lue sur Edit1 , a lentier correspondant et err un entier qui vaut 0 sil y a erreur. sortie Label1. La routine associe au bouton est : Procdure TfVar Err,a:integer; Begin Val(IfEnd Si lon tape 15 dans la fentre dentre et presse le bouton, 15 apparat dans la fentre de sortie , maissans que le programme ne se plante , il est possible de continuer sans problme avec un entier valide. Cette mthode ne fonctionne h as pas avec nvirgule et dcimales ou une lettre . En effet si :

    sortie La fiche comporte une fentre de saisie Edit1 , de Le nombre N est dclar comme un r

    uis Label1.caption floatTostr(N) ;

    ----------------------------------------------------------- --------------------------------------------------------- 24

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    Tap dans Label1 N lu et affich dans Label1

    Err

    4,67 4 2 5 5 0

    Xyz45 0 1 Linstruction val a vit une erreur fatale qui aurait arrt le programme mais la valeur N saisie est dans tous les cas un entier , le mot err permet de distinguer une ntre de type rel (err 2) ou de type caractre (err = 1) ce qui peut tre bien utile

    er loprateur quelle est lerreur quil a commise.

    est de vrifier que tous les caractres entrs sont des nombres ou une

    rceau de la chaine1 de largeur dfini. Par exemple

    s ce .

    que chn est un caractre urni par la fonction prcdente , dlivre 0 si le caractre chn nest ni un chiffre ni

    entr sur Edit1 apparaisse dans Label1 , Label2

    ide. La routine associe au click sur le bouton se contente dappeler la procdure

    1Click(Sender :Tobject) ;

    ette dernire fait appel aux objets de Form1 elle doit donc tre dclare dans le it.

    orm1.ControlEdit ;

    Chn :string Position,lg,err,i :integer ;

    esi pour indiqu Exemple 2 Contrle de tous les caractres entrs dans Edit. Lidevirgule. On utilise pour cela plusieurs fonctions de gestion des chanes de caractres. Chn :=Copy( Chaine1,position,largeur) ; qui fournit une chane chn qui est un moChn :=copy((Edit1.text),i,1) ; dlivre une chane de largeur 1 partir de la position i Si Edit1.text= 9527 Copy ((Edit1.text),3,1) fourni la chane ( qui se rduit dancas un seul caractre ) 2Cette fonction permet donc dexplorer le nombre entr caractre par caractre. La seconde fonction est : Pos(Chaine1,ChaineReference) ; dlivre un entier qui est le rang partir duquel chaine1 est prsente dans ChaneReference. Cet entier est nul si rien nest trouv. Par exemple position :=Copy(chn,0123456789,) lorsfoune virgule cest dire quil y a erreur de donne entre. Soit par exemple une fiche comportant une fentre dentre Edit1, deux fentres de sortie Label1 et Label2, et un bouton button1. On veut que lorsque le bouton est press le nombre restant vide. Si par contre il y a une erreur de saisie la fentre Label2 affiche erreur et la fentre dentre est v de contrle de lentre. Procedure TformBegin ControlEdit; End; Cparagraphe Type au dbut de lun Procedure TfVar

    ----------------------------------------------------------- --------------------------------------------------------- 25

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    Begin Lg :=length(Edit1.Text) ; La longueur de la chaine tape dans Edit1 Err :=0 ; Initialisation du mot derreur For i := 1 to lg do Pour balayer tous les caractres entrs

    Begin Chn :=copy((Edit1.text),i,1) ; isolement dun caractre Position:=Pos(chn,0123456789,); ; position du caractre dans la liste des caractres valides. If position=0 then err :=1 ; err mis 1 si erreur trouve End If err=1 then Begin Si il y a erreur Edit1 effac erreur affiche Label2.Caption := erreur de saisie ; Edit1.clear; Effacer le texte dune fentre de saisie Label1.caption:=; Il nexiste pas de fonction clear ici End Else Si non erreur EDIT1 transfr dans Label1 Label2 vid. Begin Label2.caption := ; Label1.caption :=Edit1.text ; End ; End ; On peut cependant remarquer quaucune erreur nest dtecte si loprateur a tap deux fois la virgule. Il nest pas difficile dy remdier par exemple en mettant 1 une variable Virgule lors de la premire dtection de ce caractre puis de lincrmenter chaque nouvel entre de , et en fin de boucle afficher erreur si virgule est suprieur 1 .

    ----------------------------------------------------------- --------------------------------------------------------- 26

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    Notes .Note 1 . : Sauvetage dun projet. Soit un projet enregistr initialement sous les noms UnA pour les units et PrA pour le projet on trouve sur le disque dans le rpertoire Projets les fichiers : UnA.dcu UnA.dfm UnA.pas et PrA.cfg PrA.dof PrA.dpr PrA.exe PrA.res Si lon modifie alors le projet en lui ajoutant de nouvelles fonctions et que aprs lavoir vrifi et lanc on souhaite le sauver sous un autre nom par exemple PrB grce la commande sauver le projet sous , on trouve dans le rpertoire projet les 4 fichiers suivants avec le nouveau nom : . PrB.cfg PrB.dof PrB.dpr PrB.exe PrB .res mais aussi : UnA.~dfm UnA.~pas UnA.dfm UnA.pas UnA.dcu les deux premiers dont le suffixe commence par ~ sont les deux fichiers dfm et pas prcdents , deux nouveaux ont t cres mais le nom de lunit na pas t chang. Si lon veut enregistrer le travail ce niveau il faut copier dans un autre rpertoire ou une cl USB les 8 fichiers en caractres gras. A chaque fois quau cours du travail on sauve le projet les fichiers dfm et pas sont recres et les anciens conservs avec le suffixe en ~, mais attention seuls les fichiers de ltat prcdent sont sauvs , les plus anciens sont perdus. . Si de multiples versions successives sont cres PrA PrB PrC etc ;;;et si lon na pas pris la prcaution de sauver la totalit des fichiers chaque fois il se peut quen essayant de lancer PrB par exemple une erreur se manifeste puisque le fichier de configuration de cette tape B a t cras.

    ----------------------------------------------------------- --------------------------------------------------------- 27

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    Pour aller plus loin.

    Jouer avec la souris : Delphi exploite entirement les routines de Windows pour grer les dplacements et actions de la souris.

    1 La procdure GetCursorPos(pt) ; Cest une procdure issue directement de Windows elle permet de saisir les coordonnes X,Y du point au dessus duquel se trouve la souris. Attention il sagit de la position sur lcran de lordinateur et non relative une fentre dessine par Delphi. .Par exemple : Soit un projet comprenant seulement une zone daffichage Label1 sur une fiche Form1. Dans linspecteur dobjets associ Form1 ouvrir la colonne vnements puis reprer la ligne ONClik, cliquer dessus pour ouvrir la case de droite puis cliquer sur cette dernire pour faire apparatre FormClik. Souvre alors la structure de la routine associe : Procedure Tform1.Formclick(Sender:Tobject); Begin End; La complter comme suit:

    Procedure Tform1.Formclick(Sender:Tobject); Var

    Pt:Tpoint; Begin GetCursorPos(pt); Label1.caption:= position +FloarTostr(pt.X)+ +FloarTOstr(pt.Y); End; On notera: Le type Tpoint constitu par lassociation de deux entiers X et Y est prdfini dans Delphi et na pas besoin dtre redfini . Dans le titre de la procdure le mot Sender dsigne lobjet au dessus duquel a lieu lvnement. Nous reviendrons plus loin sur ce mot. A lexcution seule apparat la fiche Form1 vierge et la zone Label1.Si lon clique sur le bouton gauche de la souris la position est affiche dans Label1 Par exemple Position 344 567 . Bien remarquer que la position affiche est bien une coordonne dans la totalit de lcran. Si avec la souris on dplace la fentre Form1 les coordonnes sont modifies. Bien sr le click nest pris en compte que sil est effectu lintrieur de Form1.

    ----------------------------------------------------------- --------------------------------------------------------- 28

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    2 Les Evnements MOUSE Dans linspecteur dobjets colonne vnements on repre en particulier : OnMouseDown Lvnement est bouton de souris enfonc OnMouseMove Lvnement est Dplacement de la souris OnMouseUp Lvnement est relchement du bouton. Nous allons les utiliser . Crons dabord un nouveau projet comprenant un bouton Button1 3 zones daffichage Label 1 2 et 3 une zone de dessin PaintBox1 . Positionnons soigneusement la zone de dessin en prcisant dans linspecteur dobjets ses coordonnes Taille Hauteur Largeur :Height400 Width500 et position Top200 Left200 A lexcution une zone peindre vierge est invisible , pour la faire apparatre nous allons y dessiner un rectangle en pressant le bouton. Pour cela cliquer sur le bouton pour faire apparatre la routine click et la complter comme suit : Procedure Tform1.Bitton1Clik(Sender :Tobject); Begin

    With PaintBox1.canvas do Rectangle(0,0,500,400);

    End; Puis prcisons les textes affichs au dpart par les trois zones daffichage Label1.caption := Position ; Label2.caption := Debut ; Label3.caption := Fin ; Et sur le bouton : Button1.caption := Cadre ; Dans cet tat une excution aprs un unique appui sur le bouton donne lcran ci contre. Activons maintenant la PaintBox de faon faire apparatre son inspecteur dobjets et la colonne evenements. Dans cette dernire slectionnons lvnement OnMouseDown et cliquons sur la case droiteLa routine de gestion de lvnement souvre : Procedure Tform1.PaintBox1MouseDown(Sender :TobjeTshiftState ;X,Y :Integer) ; Begin End; Elle est assez diffrente de celle que noclick sur un bouton.

    Pour la gestion dun vnement souris ilSender qui est lobjet ayant dtect laction dbouton car il est parfaitement possible de grer

    ----------------------------------------------------------- 29 pour y afficher PaintBox1Mouse

    ct ;Button :TmouseButton ;Shift :

    us avons souvent rencontre pour le

    existe 4 paramtres : e la souris .Ce nest pas toujours un un click sur nimporte quel objet

    ---------------------------------------------------------

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    Button Indique quel est le bouton de la souris qui est utilis mbLeft (bouton gauche ) mbMiddle (du milieu) ou mbRight (bouton droit) Par dfaut cest le bouton gauche qui est actif mais il est possible de modifier ce paramtre . Shift Indique ltat des touches Alt Ctrl et Maj au moment de laction de la souris permettant ainsi de les tester. X,Y Les coordonnes de lendroit o lvnement a eu lieu. De la mme faon nous allons activer sur cette mme zone lvnement OnMouseUp Nous allons maintenant complter les procdures de faon tracer dans la fentre de dessin un trait du point o lon enfonce le bouton de la souris jusqu' celui o on le relche. Procedure Tform1.PaintBox1MouseDown(Sender :Tobject ;Button :TmouseButton ;Shift :TshiftState ;X,Y :Integer) ; Begin PaintBox1.Canvas.MoveTO(X,Y); // Positionne le crayon au point XY Label2.Caption := Debut+intTostr(X)+ + intToStr(Y) ; End; Puis Procedure Tform1.PaintBox1MouseUp(Sender :Tobject ;Button :TmouseButton ;Shift :TshiftState ;X,Y :Integer) ; Begin PaintBox1.Canvas.LineTO(X,Y); //Trace du point prcdent au nouveau Xy ? Label3.Caption := Fin +intTostr(X)+ + intToStr(Y) ; End; La premire zone daffichage Label1 sera utilise pour afficher les coordonnes dun click sur la fiche La premire ide qui vient lesprit est d activer lvnement OnClick=FormClick dans linspecteur dobjets de Form1 et complter la procdure associe : Cependant lorsque le OnClick est activ la routine qui apparat ne fait pas tat des proprits Button Shift et XY il est bien sur possible de reprendre la routine du paragraphe prcdent utilisant GetCursorPos mais on a vu que les coordonnes sont prises dans lcran total et indpendantes de la fentre Delphi. Dans Form1 il faut donc utiliser plutt OnMouseDown . Procedure Tform1MouseDown(Sender:Tobject;Button :TmouseButton ;Shift :TshiftState ;X,Y :Integer) ; Begin Label1.caption:= position +FloarTostr(X)+ +FloarTOstr(Y); End; Lanons maintenant lexcution. En cliquant tout prs du coin suprieur gauche du cadre (en dehors) Label1 affiche une position voisine de 200 200 par exemple position 198 198 .( nous avons plac le coin de la PaintBox1 en 200 200 ) Amenons alors le pointeur de la souris tout prs du mme coin et enfonons lson bouton gauche puis faisons glisser jusquau milieu du ct droit et relchons. Un

    ----------------------------------------------------------- --------------------------------------------------------- 30

  • Introduction l'emploi du logiciel DELPHI ------------------------------------------------------------------------------------------------------------------

    trait est trac entre ces deux points et leurs coordonnes affiches dans Label 2 et 3 . Figure ci dessous/ Remarque : Si dans les procdures prcdentes on avait omis de prciser PaintBox.canvas Mais crit seulement Canvas.Move(X,Y) et LineTo(X,Y) Le logiciel aurait fait appel au Canvas de Form1 et le trait prcdent aurait t trac en dehors de la zone de dessin au voisinage du coin haut gauche de Form1.

    ----------------------------------------------------------- --------------------------------------------------------- 31

    PrivateImplementationBeginBeginExemple dobjets importantsBouton BitMap BitBtnCheckBox (La ListBox

    CheckListBox (TlistBox)Exemple 3

    Exemple 2BeginLg:=length\(Edit1.Text\); La longuFor i:= 1 to lg do Pour balayer tous les caract

    BeginBeginBegin