initiation delphi

Upload: annagarcia00

Post on 05-Apr-2018

233 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/31/2019 Initiation DELPHI

    1/65

    DELPHI 7Support de formation (1/3)

    Initiation Delphi

  • 7/31/2019 Initiation DELPHI

    2/65

    Delphi 7 (1/3): Initiation

    1 AVERTISSEMENT

    Ce support est un document d'initiation dont le contenu se limite volontairement auxparties tudies et ne saurait se substituer la notice du concepteur du logiciel. La base utiliseest Delphi6, dition Professionnelle: il est vident que ldition "Entreprise" comportedavantage de fonctionnalits qui ne seront pas abordes par ce document.

    Ce document est distribu uniquement lors d'un cycle de formation Delphi ne peut tre

    reproduit partiellement ou intgralement: tous droits rservs.

    La connaissance pralable d'un langage de programmation structure (de prfrencePascal) est fortement recommande, mais non indispensable.

    Conventions: le texte entre crochets reprsente une option facultative, le texte en italique des lignes de programme

    Maurice GINDENSPERGER (V 5.1) page 2/65

  • 7/31/2019 Initiation DELPHI

    3/65

    Delphi 7 (1/3): Initiation

    2 INTRODUCTION

    Delphi est un systme de dveloppement visuel rapide sous Windows (Rapid ApplicationDevelopment) qui permet de crer des applications fentres directement excutables (.EXE) etredistribuables librement sous Windows ou DOS. Il est noter qu'i existe une version pourLinux nomme KYLIX (compatible avec les composants CLX, il suffit de recompiler). Sasimplicit d'emploi autorise une utilisation immdiate, car il suffit de cliquer-glisser descomposants dans une fiche et de grer quelques vnements pour crer des applications simples.Des assistants, modles et tuteurs interactifs facilitent la prise en main du logiciel.

    Delphi utilise le langage Pascal Orient Objet (il est toutefois possible d'utiliser

    d'anciennes sources en Pascal standard grce au compilateur en ligne de commande). Celangage est facile apprendre et beaucoup plus simple que le C++ traditionnel. Les objetsutiliss ont des proprits et des mthodes. Les proprits sont les caractristiques de l'objet(couleur, taille, ...) tandis que les mthodes sont les procdures (classiques ou vnementielles)et fonctions qui y sont rattaches.

    Des outils puissants sont rattachs Delphi. Le canevas facilite les graphismes et vitel'appel aux API de Windows (cette solution reste videmment possible). Les principales botesde dialogue de Windows existent en tant qu'objets et sont facilement rutilisables. L'utilitaireBDE permet la cration et l'accs ais aux bases de donnes de tous types. La liaison avecACCESS se fait directement, grce un driver natif intgr.

    Il est facile d'crire des DLL utilisables par n'importe quel autre programme sousWindows. Ces DLL peuvent contenir des fiches Delphi, des procdures, des donnes ou desressources graphiques (bitmaps, icnes, curseurs).

    La cration d'objets (visuels ou non) rutilisables est un gain de temps apprciable pour ledveloppement. L'intgration des objets Active X peut complter la bibliothque existante.

    Il existe d'autres systmes de dveloppement rapide sous Windows. Delphi estparticulirement bien plac:

    moins de lignes de code et rapidit de compilation possibilit d'utiliser des procdures vnementielles partages notion de modles rutilisables (fiches, menus, objets) orientation objet totale et native richesse des composants fournis: pas d'OCX acheter en complment assembleur intgr, compilateur en ligne de commande dbogage facile au niveau du source et du processeur possibilit d'allocation dynamique de la mmoire en utilisant les pointeurs

    Maurice GINDENSPERGER (V 5.1) page 3/65

  • 7/31/2019 Initiation DELPHI

    4/65

    Delphi 7 (1/3): Initiation

    3 Nouveauts

    Consulter l'aide en ligne sous "nouveauts" On note des:

    la vue arborescente des objets

    le dbogueur d'applications WEB, serveur WEB

    de nombreux nouveaux composants donto "TActionManager" qui permet de centraliser les procdures vnementielles de

    chaque fentreo

    les composants CLX qui peuvent tre ports sur LINUXo les composants ADO

    l

    Maurice GINDENSPERGER (V 5.1) page 4/65

  • 7/31/2019 Initiation DELPHI

    5/65

    Delphi 7 (1/3): Initiation

    4 PROGRAMMATION ORIENTEE OBJET

    4.1 PRESENTATION

    Sans le savoir, vous utilisez des objets dans votre ordinateur. Par exemple, vous dsirezchanger la carte graphique. C'est un objet: vous ne connaissez pas exactement sonfonctionnement interne mais vous dsirez des rsultats. Vous pouvez interchanger facilementcet objet puisque l'interface est standard (connecteurs). Vous n'avez donc pas besoin de changertoute l'unit centrale ou de faire des tudes pousses en lectronique pour ce faire. Il suffitd'changer la carte par une autre plus performante.

    L'avantage de cette notion d'objet est la possibilit de partager les composants avecd'autres utilisateurs. Vous pouvez donner votre ancienne carte vido l'un de voscollaborateurs. D'autre part, il n'est pas ncessaire de connatre le dtail du fonctionnement del'objet pour l'utiliser. La maintenance est facilite, il suffit d'changer l'objet sans toucher aureste de l'application.

    4.2 CONCEPTS DE BASE

    4.2.1 Proprits

    Ce sont les composants de l'objet. Sa taille, sa couleur, son nom, ... sont des proprits.Les proprits sont initialises la cration de l'objet et certaines peuvent tre modifies par

    programmation. Delphi possde un diteur de proprits qui permet de les modifier en phase deconception de projet.

    4.2.2 Mthodes

    Les mthodes relvent du comportement de l'objet: elles recensent ce que l'objet "sait"faire. S'il sait par exemple faire une multiplication, le nom du module de programme concernest appel mthode.

    Maurice GINDENSPERGER (V 5.1) page 5/65

    Objet = entit

    Proprits

    Mthodes Procdures

    Fonctions

    simples

    vnementielles

  • 7/31/2019 Initiation DELPHI

    6/65

    Delphi 7 (1/3): Initiation

    4.2.2.1 Fonctions

    Les fonctions sont des modules (ou sous-programmes) qui retournent une seule valeur oursultat aprs acceptation d'un certain nombre d'arguments (0 n).

    4.2.2.2 Procdures simples

    Les procdures sont des modules qui effectuent des actions. Elles acceptent galement desarguments. Elles peuvent retourner des arguments modifis (s'ils sont dclars en donne-rsultat).

    4.2.2.3 Procdures vnementielles

    Elles conditionnent les ractions de l'objet vis--vis des actions extrieures (clavier,souris, ...). Ce sont des procdures appeles par un dclencheur. Windows recense un grandnombre d'vnements dont la nature est prcise par un systme de messages internes. Parexemple, le fait d'appuyer sur une touche du clavier ou de dplacer la souris provoquel'mission d'un message interne Windows qui pourra tre trait par la procdurevnementielle.

    4.2.3 Programmation structure

    Contrairement au premiers langages (basic) qui utilisaient des tiquettes avec desinstructions de saut de type "goto" o l'on risquait un enchevtrement dans le droulement du

    programme, la POO demande une programmation modulaire et le langage Pascal estparticulirement adapt. L'criture d'un programme se fait sous forme de blocs hirarchiss, cequi permet une meilleure comprhension. L'indentation des modules donne une lecture prochedu dveloppement algorithmique.

    4.2.4 L'encapsulation

    C'est le concept de base de la POO. L'ide est de rassembler les donnes et les modules deprogramme dans une seule et mme structure appele objet. Les donnes sont appeles"proprits" et les modules sont les "mthodes". On peut utiliser des mthodes de l'objet sansconnatre le dtail de l'implmentation de chacune d'elle. L'encapsulation protge les donnescontre leur utilisation par d'autres modules extrieurs.

    4.2.5 L'hritage

    Les objets sont capables d'tre drivs partir d'objets prexistants. Les objets "fils"hritent les proprits et mthodes de leur parent de faon automatique. Il suffit alors de rajouterdes proprits et mthodes spcifiques: ce procd est appel programmation par exception. De

    plus, tous les changements effectus dans l'objet "parent" sont rpercuts automatiquement surles objets "descendants" sans manipulation supplmentaire.

    Maurice GINDENSPERGER (V 5.1) page 6/65

  • 7/31/2019 Initiation DELPHI

    7/65

  • 7/31/2019 Initiation DELPHI

    8/65

    Delphi 7 (1/3): Initiation

    4.3.4 Constructeur (CONSTRUCTOR)

    C'est le module de la classe qui dit au systme comment effectuer l'instanciation de celle-ci. Il rserve de la place mmoire et initialise certaines proprits. Delphi appelle cette mthode"Create".

    4.3.5 Destructeur (DESTRUCTOR)

    C'est l'inverse du constructeur. Ce module est charg de librer la mmoire occupe parl'objet. ("Destroy" en Delphi).

    4.3.6 Classe anctre

    C'est une classe partir de laquelle sont hrites les proprits et les mthodes. Ce n'estpas obligatoirement la classe parente immdiate, mais elle peut tre plus levehirarchiquement.

    4.3.7 Classe parent

    C'est la classe immdiatement suprieure au niveau hirarchique

    4.3.8 Classe enfant

    C'est la classe immdiatement infrieure au niveau hirarchique

    4.3.9 Classe descendante

    Son niveau hirarchique est infrieur la classe considre. Ce n'est pas obligatoirementla classe enfant qui est situe directement au niveau infrieur suivant.

    4.3.10 Propritaire(OWNER)

    Une application est propritaire des fentres qu'elle manipule. Une fentre est propritairedes objets quelle contient. Un panneau, comme la barre d'outils, est propritaire de ses turbo-

    boutons...

    4.3.11 Hritage

    Une classe hrite automatiquement des proprits et mthodes de ses anctres.

    Maurice GINDENSPERGER (V 5.1) page 8/65

  • 7/31/2019 Initiation DELPHI

    9/65

    Delphi 7 (1/3): Initiation

    4.4 CONCLUSION

    Le but de la POO est de crer des composants rutilisables pour faciliter la cration deprojets par assemblage d'lments prfabriqus.

    Les avantages sont normes: rutilisation de l'existant sans limite (pas d'critures rptitives), dveloppement RAD visuel possible (une application peut se crer comme un

    assemblage lors d'un puzzle), cloisonnement de scurit entre les donnes (vite les effets de bord), facilit d'volution (il suffit de placer des objets plus volus), et de maintenance (possibilit de tester individuellement chaque objet).

    L'hritage et le polymorphisme accroissent de faon sensible la productivit duprogrammeur.

    Maurice GINDENSPERGER (V 5.1) page 9/65

  • 7/31/2019 Initiation DELPHI

    10/65

    Delphi 7 (1/3): Initiation

    5 Les objets de Windows (rappel)

    Sur le bureau de Windows, on peut trouver 4 types d'objets: des programmes des documents des dossiers des raccourcis vers les 3 types d'objets prcits.

    Les objets visuels peuvent tre manipuls grce la souris:

    action manipulation souris rsultatslection clic sur l'objet l'objet change de couleur

    ou des poignes apparaissent

    dslection clic en dehors de l'objet l'objet reprend sa couleur initialeou ses poignes disparaissent

    ouverture double-clic sur l'objet soit on se trouve dans l'applicationcorrespondante l'objet,soit on voit ses proprits

    fermeture clic en dehors ou sur bouton X l'objet est fermdplacement cliquer-glisser sur (parfois le bord) de

    l'objetl'objet est dplac

    duplication Ctrl + cliquer-glisser sur (parfois lebord) de l'objet

    il y a deux objets identiques

    interrogation clic-droit sur l'objet apparition d'un menu surgissantappel contextueldestruction slection puis touche "Suppr" l'objet a disparuinsertion menu contextuel sur l'objet suivant il y a 1 objet en plus

    Maurice GINDENSPERGER (V 5.1) page 10/65

  • 7/31/2019 Initiation DELPHI

    11/65

    Delphi 7 (1/3): Initiation

    6 L'cran de Delphi

    On voit la barre de titre, la barre des menus, la barre d'outils ( gauche), la palette descomposants, la fentre principale, l'diteur de code (en dessous) et l'diteur de proprits (et lavue arborescente des objets). Une fiche est cre d'office, c'est la fentre principale del'application (modifiable).

    Touches de fonction importantes: F12: bascule entre l'affichage de la fiche et son code F11: fait apparatre l'inspecteur d'objets.

    Maurice GINDENSPERGER (V 5.1) page 11/65

  • 7/31/2019 Initiation DELPHI

    12/65

    Delphi 7 (1/3): Initiation

    6.1 La barre d'outils (paramtrable):

    Des infos-bulle donnent la signification des boutons. Le paramtrage peut se faire enappelant le menu contextuel (clic-droit).

    Il est intressant de placer les boutons suivants: Nouvelle application, tout enregistrer Dfaire et refaire Couper, copier, coller Vrifier la syntaxe Excuter, pas pas Voir une fiche Voir la palette d'alignement

    Rubriques d'aide Aide sur les API Windows

    Maurice GINDENSPERGER (V 5.1) page 12/65

  • 7/31/2019 Initiation DELPHI

    13/65

    Delphi 7 (1/3): Initiation

    6.2 La palette des composants

    C'est une barre d'outils de type particulier: on y trouve les objets qui existent dj dansDelphi. Les onglets correspondent aux catgories de composants: cliquer sur l'onglet pourchanger de palette. Pour placer un composant dans la fiche, on peut cliquer sur un composant

    puis cliquer dans la fiche (cliquer-glisser pour redimensionner de suite). Il est galementpossible de double-cliquer sur un composant: il se mettra automatiquement au centre de la ficheen cours. Pour placer plusieurs composants identiques, slectionner le type avec maj-clic.

    Il existe divers types de composants:

    visuels: ils sont visibles l'excution (sauf indication contraire); certainsd'entre eux peuvent prendre le "focus", c'est dire tre slectionns par l'utilisateur

    non-visuels: ne sont visibles qu'en phase de cration; ils disparaissent l'excution.

    Les composants peuvent se reproduire avec copier-coller.

    Voici les composants les plus utiliss dans une application standard.

    Maurice GINDENSPERGER (V 5.1) page 13/65

  • 7/31/2019 Initiation DELPHI

    14/65

    Delphi 7 (1/3): Initiation

    6.2.1 Les composants de la page Standard

    Les composants de la page Standard de la palette des composants permettent d'utiliserdans une application Delphi les contrles standard de Windows :

    Composant UtilisationCadre Composant cadre (nouveau): sert de conteneur de composants

    MainMenu Menu principalPopupMenu Menu surgissantLabel Texte en lecture seule pour l'utilisateur (ex: titre)Edit Texte en lecture-criture modifiable par l'utilisateur (zone de saisie)Memo Mmo: comme le composant prcdent, mais possibilit d'utiliser plusieurs

    lignes de texteButton Bouton d'action: c'est le composant le plus utilisCheckBox Case cocher. Propose une option que l'utilisateur peut faire passer de Oui

    Non ou de Vrai Faux. Les cases cocher peuvent servir afficher un groupede choix qui ne sont pas mutuellement exclusifs. Les utilisateurs peuvent

    slectionner plusieurs cases cocher dans un groupe.RadioButton Bouton radio. Propose une option que l'utilisateur peut faire passer de Oui Non ou de Vrai Faux. Les boutons radio peuvent servir afficher un groupede choix qui sont mutuellement exclusifs. Les utilisateurs ne peuventslectionner qu'un seul bouton radio par groupe.

    ListBox Bote liste. Affiche une liste droulante de choix.ComboBox Bote options. Affiche une liste de choix en combinant une bote liste et une

    bote de saisie. Les utilisateurs peuvent saisir des donnes dans la bote desaisie ou slectionner un lment dans la zone bote liste.

    ScrollBar Barre de dfilement. Propose un moyen de modifier la zone visualise d'uneliste ou d'une fiche. Une barre de dfilement peut galement tre utilise pour

    se dplacer par incrments dans un intervalle de valeurs.GroupBox Bote groupe. Sert de conteneur des options associes dans une fiche.RadioGroup Groupe de boutons radio. Cre une bote groupe qui contient des boutons radio

    sur une fiche.Panel Volet. Cre dans une fiche des volets pouvant contenir d'autres composants.

    Les volets peuvent servir crer des barres d'outils ou des lignes d'tat.ActionList Composant permettant la centralisation du code vnementiel

    Maurice GINDENSPERGER (V 5.1) page 14/65

  • 7/31/2019 Initiation DELPHI

    15/65

    Delphi 7 (1/3): Initiation

    6.2.2 Les composants de la page Supplment

    Les composants de la page "Supplment" de la palette des composants permettentd'utiliser dans une application Delphi des contrles Windows spcialiss :

    Composant UtilisationBitBtn Bouton bitmap. Cre un composant bouton pouvant afficher une image.SpeedButton TurboBouton. Propose un bouton pouvant afficher une image mais pas un

    libell. Les TurboBoutons sont frquemment regroups dans un volet afin de

    crer une barre d'outils.MaskEdit Comme le composant "Edit" mais permet une saisie formateStringGrid Grille de chanes. Cre une grille pouvant tre utilise pour afficher des

    donnes chanes de caractres en lignes et en colonnes comme dans untableur.

    DrawGrid Grille d'affichage. Cre une grille permettant d'afficher des donnes enlignes et en colonnes. Plus difficile utiliser que le composant prcdent.

    Image Image, gre maintenant galement les jpegShape Forme. Dessine des formes gomtriques : cercle ou ellipse, carr ou

    rectangle (arrondi ou non).

    Bevel Biseau. Cre des lignes ou des botes avec un aspect tridimensionnel cisel.ScrollBox Bote de dfilement. Cre un conteneur redimensionnable affichantautomatiquement des barres de dfilement lorsque c'est ncessaire.

    CheckListBox Bote liste de cases cocher. Affiche une liste droulante semblable unebote liste, mais avec une case cocher ct de chaque lment.

    Splitter Diviseur. Plac sur une fiche entre deux contrles aligns, il permet auxutilisateurs de redimensionner les contrles, l'excution, en faisant glisserla ligne de division.

    StaticText Texte statique. Un composant texte non modifiable, comme le composantLabel, mais contenant un handle de fentre, ce qui est utile quand la toucheraccourci du composant doit appartenir un contrle fentr. Utilisez le

    composant StaticText pour donner l'utilisateur des informations sur l'taten cours de l'application.

    ControlBar Composant utilis pour contenir des barres d'outilsApplicationEvents

    Contrle des vnements au niveau application (nouveau)

    Value List Editor Gre des couples: cl, valeurLabeled Edit Zone de saisie avec tiquetteColorBox Liste de couleurs pour choixChart GraphiqueActionManager Composant centralisateur de procdures vnementielles

    ActionMainMenuBar Barre de menu d'ActionManagerActionToolBar Barre d'outils d'ActionManagerCustomizeDlg Bote de dialogue permettant l'utilisateur de configurer les 2 composants

    Maurice GINDENSPERGER (V 5.1) page 15/65

  • 7/31/2019 Initiation DELPHI

    16/65

    Delphi 7 (1/3): Initiation

    prcdents

    Maurice GINDENSPERGER (V 5.1) page 16/65

  • 7/31/2019 Initiation DELPHI

    17/65

    Delphi 7 (1/3): Initiation

    6.2.3 Les composants de la page Win32

    Les composants de la page Win32 de la palette des composants permettent d'utiliser dansune application Delphi des contrles d'interface utilisateur standard de Windows 32 bits(Windows 95, 98 ou NT).

    Composant UtilisationTabControl Onglets: permet d'accder des pages d'informationsPageControl Pages: comme le contrle prcdent, mais il y a de la place pour placer des

    composantsImageList Liste d'images: sert souvent stocker les images des boutons des barres

    d'outils modernesRichEdit Editeur de texte format: crer un logiciel de traitement de textes devient

    facile avec ce composantTrackBar Glissire de rglage: permet l'utilisateur de dfinir une valeur analogiqueProgressBar Barre de progression: sert souvent indiquer la proportion d'achvement

    du travail

    HotKey Raccourci-clavier qui peut tre dfini par l'utilisateurAnimate Clip vido muetDateTimePicker Bote liste permettant la saisie de dates ou d'heures.MonthCalendar Calendrier: l'utilisateur peut slectionner une date ou une plage de datesTreeView Vue arborescenceListView Affichage mode listeHeaderControl Entte de colonneStatusBar Barre d'tatToolBar Barre d'outils nouvelle gnrationCoolBar Barres d'outils multiples style "internet explorer'PageScroller Zone d'affichage pouvant servir aux barres d'outilsComboBoxEx Liste droulante avec images

    Maurice GINDENSPERGER (V 5.1) page 17/65

  • 7/31/2019 Initiation DELPHI

    18/65

    Delphi 7 (1/3): Initiation

    6.2.4 Les composants de la page Systme

    Grce aux composants de la page Systme de la palette des composants, il est possibled'utiliser dans une application Delphi des contrles spcialiss du systme.

    Composant UtilisationTimer Minuterie: permet de dclencher des vnements intervalles rguliersPaintBox Bote peindre. Spcifie une zone rectangulaire de la fiche constituant la

    dlimitation des dessins de l'application.MediaPlayer Multimdia. Affiche un contrle de style tlcommande pour lire ouenregistrer des fichiers multimdias son ou vido.

    OleContainer Conteneur OLE. Cre dans une fiche une zone client OLE (Incorporation etLiaison d'Objet).

    DdeClientConv Conversation client DDE. tablit une connexion client avec une applicationserveur DDE (change Dynamique de Donnes).

    DdeClientItem lment client DDE. Spcifie les donnes du client DDE (changeDynamique de Donnes) transfrer lors d'une conversation DDE.

    DdeServerConv Conversation serveur DDE. tablit une connexion serveur avec uneapplication client DDE (change Dynamique de Donnes).

    DdeServerItem lment serveur DDE. Spcifie les donnes du serveur DDE (changeDynamique de Donnes) transfrer lors d'une conversation DDE.

    Maurice GINDENSPERGER (V 5.1) page 18/65

  • 7/31/2019 Initiation DELPHI

    19/65

    Delphi 7 (1/3): Initiation

    6.2.5 Les composants de la page Dialogues

    Les composants de la page Dialogues de la palette des composants permettent d'utiliserdans une application Delphi les botes de dialogues communes de Windows. Grce ces botesde dialogue, il est possible de proposer une interface homogne pour des oprations relativesaux fichiers (comme l'enregistrement, l'ouverture ou l'impression).

    Une bote de dialogue commune est ouverte lors de l'excution de sa mthode "Execute".Celle-ci renvoie l'une des valeurs boolennes suivantes : "True", si l'utilisateur choisit OK et valide la bote de dialogue "False", si l'utilisateur choisit Annuler ou quitte la bote de dialogue sans enregistrer

    aucune modification.

    Chaque composant Bote de dialogue commune (sauf le composant "PrinterSetup") a unensemble de proprits regroupes sous l'intitul Options dans l'inspecteur d'objets. Les

    proprits Options interviennent sur l'aspect et le comportement des botes de dialoguecommunes. Pour afficher les proprits Options, double-cliquez sur "Options" dans l'inspecteurd'objets.

    Pour fermer par programmation une bote de dialogue, utilisez la mthode "CloseDialog".Pour modifier la position d'une bote de dialogue l'excution, utilisez les proprits Handle,Left, Top et Position.

    Composant UtilisationOpenDialog Bote de dialogue d'ouverture.SaveDialog Bote de dialogue d'enregistrement.OpenPictureDialog Bote de dialogue d'ouverture d'image avec prvisualisationSavePictureDialog Bote de dialogue d'enregistrement d'image avec prvisualisation

    FontDialog Bote de dialogue des policesColorDialog Bote de dialogue des couleursPrintDialog Bote de dialogue d'impressionPrinterSetupDialog Bote de dialogue de configuration d'impression.FindDialog Bote de dialogue de rechercheReplaceDialog Bote de dialogue de remplacement

    Maurice GINDENSPERGER (V 5.1) page 19/65

  • 7/31/2019 Initiation DELPHI

    20/65

    Delphi 7 (1/3): Initiation

    6.2.6 Les composants de la page Win3.1

    Les composants de la page Win3.1 de la palette des composants permettent d'utiliser dansvos applications Delphi des contrles de Windows 3.1 pour assurer la compatibilit avec lesapplications construites avec des versions prcdentes de Delphi. La plupart de ces ancienscontrles offrent le mme comportement que les derniers contrles 32 bits.

    Important : Evitez ces contrles lorsque vous crez de nouvelles applications.

    Le tableau suivant indique les contrles utiliser la place des anciens contrles :

    Contrle Win 3.1 Remplacez-le par Page du nouveau contrleDBLookupList DBLookupListBox ContrleBDDBLookupCombo DBLookupComboBox ContrleBDTabSet TabControl Win32Outline TreeView Win32Header HeaderControl Win32

    NoteBook PageControl Win32TabbedNoteBook PageControl Win32

    Composant UtilisationDBLookupList Liste de rfrence de base de donnes. Bote de liste oriente donnes

    pour afficher l'excution les valeurs trouves dans les colonnes d'uneautre table.

    DBLookupCombo Bote options de rfrence de base de donnes. Bote options orientedonnes pour afficher l'excution les valeurs trouves dans les colonnesd'une autre table.

    TabSet Onglets. Cre des onglets semblables ceux d'un classeur. Le composant

    TabSet peut s'utiliser avec le composant Notebook pour permettre auxutilisateurs de changer de page.

    Outline Arborescence. Affiche des informations sous forme d'arborescences dediffrents formats.

    TabbedNotebook Classeur onglets. Cre une zone d'affichage des donnes. Lesutilisateurs peuvent redimensionner chaque section de cette zone pour yafficher diffrentes quantits de donnes.

    Notebook Classeur. Cre un composant pouvant contenir plusieurs pages. Lecomposant TabSet peut s'utiliser avec le composant Notebook pour

    permettre aux utilisateurs de changer de page.

    Maurice GINDENSPERGER (V 5.1) page 20/65

  • 7/31/2019 Initiation DELPHI

    21/65

    Delphi 7 (1/3): Initiation

    Composant UtilisationHeader En-tte. Cre une zone d'affichage des donnes. Les utilisateurs peuvent

    redimensionner chaque section de cette zone pour y afficher diffrentes

    quantits de donnes.FileListBox Bote liste de fichiers. Affiche une liste droulante des fichiers du

    rpertoire en cours.DirectoryListBox Bote liste des rpertoires. Affiche la structure des rpertoires du lecteur

    actif. Les utilisateurs peuvent changer de rpertoire dans une bote listedes rpertoires.

    DriveComboBox Bote options des lecteurs. Affiche une liste droulante des lecteursdisponibles.

    FilterComboBox Bote options de filtrage. Spcifie un filtre ou un masque afin d'afficherun sous-ensemble des fichiers.

    Maurice GINDENSPERGER (V 5.1) page 21/65

  • 7/31/2019 Initiation DELPHI

    22/65

    Delphi 7 (1/3): Initiation

    6.3 L'inspecteur d'objets

    L'inspecteur d'objets de Delphi est la passerelle entre l'aspect visuel de votre applicationet le code qui lui permet de fonctionner.

    L'inspecteur d'objets vous permet de : dfinir en mode conception les proprits des composants que vous placez sur une

    fiche (ou de la fiche elle-mme), crer les gestionnaires d'vnements.

    Le slecteur d'objet en haut de l'inspecteur affiche est une liste droulante contenant tousles composants de la fiche active, ainsi que leur type. Vous pouvez ainsi slectionnerrapidement diffrents composants de la fiche active.

    Vous pouvez modifier la largeur des colonnes de l'Inspecteur d'objets en faisant glisser laligne de sparation vers une nouvelle position.

    Maurice GINDENSPERGER (V 5.1) page 22/65

  • 7/31/2019 Initiation DELPHI

    23/65

    Delphi 7 (1/3): Initiation

    L'inspecteur d'objets comporte deux pages :

    6.4 Page Proprits

    La page Proprits de l'Inspecteur d'objets vous permet, en mode conception, de dfinirles proprits des composants de votre fiche, mais aussi celles de la fiche. Vous pouvez dfinirdes proprits d'excution en crivant directement du code source dans les gestionnairesd'vnements. La page Proprits n'affiche que les proprits du composant slectionn dans lafiche. Dfinir les proprits d'un composant en mode conception revient dfinir son tatinitial.

    Des proprits peuvent tre imbriques: dans ce cas, elle sont prcdes par une flche.Pour dvelopper l'arborescence, double-cliquez.

    La prsence de 3 points de suspension (...) indique la prsence d'un diteur de propritsparticulier. On trouve galement des listes droulantes.

    6.5 Page Evnements

    La page Evnements de l'Inspecteur d'objets vous permet d'associer des vnements auxobjets de votre projet. Trois utilisations sont possibles:

    UTILISATION EFFETdouble-clic cot de l'vnement cration automatique d'un entte de procdure par

    dfautintroduction d'un nom de procdure cration automatique d'un entte de procdure

    avec le nom choisiouverture d'une liste droulante (s'il y a djdes procdures compatibles)

    choix d'une procdure commune plusieursvnements

    Maurice GINDENSPERGER (V 5.1) page 23/65

  • 7/31/2019 Initiation DELPHI

    24/65

    Delphi 7 (1/3): Initiation

    6.6 L'diteur de code

    Dans certains cas, on voit dans la partie de gauche l'explorateur de code. Il facilite lanavigation dans vos fichiers. La fentre de l'explorateur de code contient une arborescence quimontre tous les types, classes, proprits, mthodes, variables globales et routines globalesdfinis dans votre unit. Il montre galement les autres units listes dans la clause uses

    L'diteur de code est un diteur complet. Il vous permet d'accder au code (source) desmodules de votre projet. De nombreuses commandes sont disponibles dans le menu contextuelde l'diteur de code. Pour personnaliser l'diteur de code, utilisez la bote de dialogue "Outils" -"Options d'environnement". Pour obtenir de l'aide sur un lment dans l'diteur de code, placezle pointeur de souris sur le terme qui vous intresse et appuyez sur F1.

    Lors de la compilation, si vous recevez un message d'erreur, Delphi : affiche l'erreur dans la bote de message de l'diteur de code met en surbrillance la ligne de code qui pose problme.

    Maurice GINDENSPERGER (V 5.1) page 24/65

  • 7/31/2019 Initiation DELPHI

    25/65

    Delphi 7 (1/3): Initiation

    7 Premier projet

    7.1 Notions lmentaires

    Un projet est un l'ensemble des fichiers ncessaires au fonctionnement de l'application.Quand on charge Delphi, un projet de base est cr. Il comporte une fentre prte recevoirdiffrents objets.

    On remarque la barre de titre, la case systme comportant une icne et des boutons pouragrandir, rduire ou fermer la fentre.

    L'inspecteur d'objets permet d'agir sur les proprits et mthodes vnementielles de

    l'objet.

    Maurice GINDENSPERGER (V 5.1) page 25/65

  • 7/31/2019 Initiation DELPHI

    26/65

    Delphi 7 (1/3): Initiation

    Il est vident que cette premire application n'est pas encore excutable. Pour ce faire, ilest ncessaire de compiler (traduire en binaire). Nous n'avons pas crit une ligne de programme,

    le systme s'en est charg. Examinons les lignes de code gnres (.PAS).

    Lignes de code Explications

    unit Unit1; nom du module source correspondant la fiche "Form1"ne pas changer ce nom directement, mais au moment del'enregistrement

    interface entte pour dsigner la section qui sera "vue" par les autresmodules

    uses permet d'inclure d'autres modulesWindows, Messages, SysUtils,

    Classes, Graphics, Controls,

    Forms, Dialogs;

    nom des modules inclus

    type dbut de la dclaration du type des objetsTForm1 = class(TForm) dclaration d'un nouveau type d'objet de type fentreprivate

    { Dclarations prives } proprits et mthodes "prives" du type d'objetpublic{ Dclarations publiques } proprits et mthodes "publiques" du type d'objet; elles

    seront visibles par les autres modulesend; fin de dclaration d'objet

    var "achat" de variables globalesForm1: TForm1; instanciation de l'objet: allocation de mmoire vive

    implementation dans cette section seront crites les mthodes des objetsmanipuls

    {$R *.DFM} directive de compilation permettant d'inclure lesdfinitions des fentres (.DFM)

    end. Fin du module

    Maurice GINDENSPERGER (V 5.1) page 26/65

  • 7/31/2019 Initiation DELPHI

    27/65

    Delphi 7 (1/3): Initiation

    Ce module ne peut fonctionner seul. Un module de projet (.DPR) se charge de fdrerl'ensemble des modules, mais il n'est pas visible en ce moment. Pour le visualiser, ouvrez le

    menu "Projet" et choisissez "voir le source". Un onglet correspondant apparat dans l'diteur decode.

    program Project1; nom du programme

    uses modules utilissForms,

    Unit1 in 'UNIT1.PAS' {Form1}; c'est le module de la fiche "Form1"

    {$R *.RES} directive de compilation permettant d'inclure lesfichiers ressources (.RES)

    begin dbut du programme principalApplication.Initialize; initialisation du programmeApplication.CreateForm(TForm1,

    Form1);

    cration de la fiche "Form1" de type Tform1

    Application.Run; excution de l'applicationend. Fin du programme principal

    On peut galement visualiser le code de la fiche (.DFM), grce l'option "voir commetexte" de son menu contextuel.

    object Form1: TForm1Left = 295Top = 132Width = 696Height = 480Caption = 'Form1'Color = clBtnFaceFont.Charset = DEFAULT_CHARSETFont.Color = clWindowTextFont.Height = -13

    Font.Name = 'MS Sans Serif'Font.Style = []OldCreateOrder = FalsePixelsPerInch = 120TextHeight = 16

    end

    Revenir la fiche avec "voir comme fiche" du menu contextuel.

    Pour enregistrer le projet, choisir "enregistrer projet sous" dans le menu fichier. Il faudradonner un nom aux diffrents modules (.PAS) et au projet (DPR).

    Maurice GINDENSPERGER (V 5.1) page 27/65

  • 7/31/2019 Initiation DELPHI

    28/65

    Delphi 7 (1/3): Initiation

    7.2 Excution

    On peut vrifier la syntaxe du code, compiler ou excuter directement le projet. Pourdisposer d'un excutable, il est ncessaire de compiler. En cas d'erreur, la compilation s'arrte etvisualise un message d'erreur.

    Si l'on dsire des renseignements sur l'erreur, il suffit cliquer sur le message d'erreur oud'avertissement et d'appuyer sur la touche F1 (aide en ligne) et on obtient la fentre suivante:

    Maurice GINDENSPERGER (V 5.1) page 28/65

  • 7/31/2019 Initiation DELPHI

    29/65

    Delphi 7 (1/3): Initiation

    Il suffit de rectifier le code et de relancer une compilation. Ensuite, on peut directementutiliser l'excutable gnr (.EXE). Quitter Delphi et lancer le programme depuis lel'explorateur Windows.

    Examen des fichiers gnrs:

    Suffixe Significationdof options de compilation et informations de versionsdpr source du projetexe programme excutable compildcu unit compiledfm dfinition de la feuillepas source pascalres ressources: icne de l'applicationcfg configuration du compilateurddp diagrammes

    Pour examiner certains de ces fichiers, il est pratique d'utiliser l'explorateur Windows.Mettre un raccourci vers le bloc-notes (notepad.exe) dans le rpertoire SendTo.

    Maurice GINDENSPERGER (V 5.1) page 29/65

  • 7/31/2019 Initiation DELPHI

    30/65

    Delphi 7 (1/3): Initiation

    8 Modification du projet

    Relancer Delphi et ouvrir le projet prcdent. Nous dsirons prsent installer un boutonqui change la couleur du fond de la fentre en rouge.

    8.1 Mise en place du composant

    Choisir un bouton ("Tbutton") par un clic dans la palette standard et cliquer dans la fiche.On peut galement double-cliquer dans la palette et le bouton se mettra automatiquement aumilieu de la fiche. Ce bouton se nomme "Button1" et ne fait rien pour l'instant. Si l'on examinele module source, on trouve sa dclaration dans les types.

    Deux proprits importantes: "caption" qui permet de changer l'affichage du texte sur lebouton et "name" qui est le nom qui servira adresser l'objet. Changer le nom du bouton (c'estindispensable pour les projets importants) avec quelque chose de plus significatif: BtRouge. Onconstate que la proprit "caption" est galement modifie. Changer cette proprit pour que le

    bouton affiche "Colorer en rouge". Le composant peut tre redimensionn grce ses poignes(visibles quand slectionn).

    8.2 Affectation d'une procdure vnementielle

    La liste des vnements peut s'observer grce l'inspecteur d'objets. Pour crer uneprocdure simple "OnClic", il suffit de double-cliquer sur le bouton.

    Le code suivant est gnr:

    procedure Tform1.BtRougeClick(Sender: Tobject);

    begin

    end;

    Cette procdure vnementielle est prte accueillir une ou plusieurs lignes d'instructionsentre "begin" et "end". Si l'on dsire rajouter des commentaires (et c'est indispensable pour une

    bonne maintenance), utiliser les mthodes suivantes:

    { commentaires: plusieurs lignes possibles } (* commentaires: plusieurs lignes possibles *) // commentaires: sur une seule ligne

    Si je ne connais pas la faon de colorer la fentre, je vais chercher les proprits de l'objetTform grce l'aide en ligne. Il suffit de slectionner "Form1" et d'appuyer sur le touche F1.Ensuite, cliquer sur "proprits". La liste affiche "color": cliquer sur cette proprit. On trouveque "clRed" correspond au rouge.

    Maurice GINDENSPERGER (V 5.1) page 30/65

  • 7/31/2019 Initiation DELPHI

    31/65

    Delphi 7 (1/3): Initiation

    Je vais donc complter la procdure pour obtenir le listing suivant:procedure Tform1.BtRougeClick(Sender: Tobject);

    {colore en rouge le fond de la fentre}begin

    Form1.color:=ClRed;

    end;

    Remarques: quand je tape "Form1.", l'diteur de code me propose la liste des proprits, mthodes

    et variables de l'objet. le sparateur entre objet et mthodes est le point et l'instruction d'affectation est ":="

    et non "=" qui est rserv aux tests d'galit ou la dclaration des types. Les lignesd'instruction se terminent par le point-virgule.

    Enregistrer le projet, et vrifier son excution.

    8.3 Amliorations

    Il est dommage de ne pas avoir de bouton pour remettre la couleur d'origine et un autrepour quitter le programme. On pourrait double-cliquer sur la fiche pour rtablir la couleurd'origine.

    Slectionner la fentre et double-cliquer ct de l'vnement "OnDblClick" dansl'inspecteur d'objet. Le code suivant est gnr:

    procedure Tform1.FormDblClick(Sender: Tobject);

    begin

    end;

    L'aide nous dit que "clWindow" pour la couleur de fond courante des fentres. Laprocdure devient donc:

    procedure Tform1.FormDblClick(Sender: Tobject);

    beginForm1.color:=clWindow;

    end;

    Excuter et tester.

    La palette "supplments" nous fournit un composant intressant: TBitBtn. C'est un boutoncomportant une image (glyphe) et ayant des fonctions prprogrammes (Kind). Mettre cette

    proprit "Kind" "bkClose".

    Maurice GINDENSPERGER (V 5.1) page 31/65

  • 7/31/2019 Initiation DELPHI

    32/65

  • 7/31/2019 Initiation DELPHI

    33/65

    Delphi 7 (1/3): Initiation

    9 Elments de programmation

    9.1 Dclaration de variables

    Une variable est un nom qui, dans du code, reprsente une adresse mmoire dont lecontenu peut changer lorsque le code est excut. Vous devez dclarer une variable avant del'utiliser. Les tapes requises sont les suivantes :

    Choix du nom d'une variable Choix du type d'une variable

    9.1.1 Choix du nom d'une variable

    Lorsque vous dclarez une variable, vous devez choisir un nom. Pour faciliter la lecturede votre code, il est prfrable de choisir un nom parlant, qui vous rappelle la signification de lavariable. Par exemple, Jour, Nom ou Total sont des noms plus vocateurs que X, Y ou Z.

    En dehors du choix de noms vocateurs, il convient de garder l'esprit un certain nombrede rgles qui s'appliquent aux variables et tous les autres identificateurs:

    Les identificateurs peuvent avoir une longueur de 63 caractres. Sils dpassent cette longueur, le compilateur ne tient pas compte des caractres

    supplmentaires. Les identificateurs doivent commencer par une lettre ou par un trait de soulignement

    (_). Les caractres suivants peuvent tre des lettres, des traits de soulignement ou les

    chiffres de 0 9. Ils ne peuvent contenir de caractres gnriques comme $, %, *, etc. Par exemple, si vous utilisez des identificateurs appels Faire@Midi ou Retour_en_

    %, vous aurez une erreur de syntaxe. Vous ne devez pas utiliser un mot rserv de Pascal objet pour dsigner un

    identificateur: and, as, asm, array, begin, case, class, const, constructor, destructor,div, do, downto, else, end, except, exports, file, finally, for, function, goto, if,implementation, in, , inherited, inline, initialization, interface, is, label, library, mod,nil, not, object, of, or, packed, procedure, program, property, raise, record, repeat, set,shl, shr, string, then, to, try, type, unit, until, uses, var, while, with, xor

    Evitez dutiliser des identificateurs dj dfinis dans le langage Pascal objet pourdsigner vos identificateurs. Par exemple, les mots Boolean et Integer sont des typesde donnes prdfinis.

    Conventions d'criture: nous allons adopter une sparation des significations parmajuscules comme par exemple: TMonObjetPersonnelSecret. Interdiction formelle de mettredes espaces ou des accents.

    Maurice GINDENSPERGER (V 5.1) page 33/65

  • 7/31/2019 Initiation DELPHI

    34/65

    Delphi 7 (1/3): Initiation

    9.1.2 Choix du type d'une variable

    Lorsque vous dclarez une variable, vous devez dclarer son type. Le type d'une variabledfinit l'ensemble des valeurs qu'elle peut contenir.

    En rgle gnrale, vous dclarerez une variable l o vous en aurez besoin. Par exemple,si vous voulez utiliser une variable dans un gestionnaire d'vnements, vous la dclarerez l'intrieur de celui-ci. Il s'agit dans ce cas d'une variable locale. Si la variable doit tre visible

    par plusieurs procdures ou fonctions, elle doit tre dclare avant la section implmentation:elle sera globale.

    Les dclarations de variables doivent toujours tre prcdes du nom rserv var. La

    dclaration elle-mme contient deux parties : celle de gauche est le nom de la nouvelle variable,celle de droite, son type. Ces deux parties sont spares par le signe deux points ( : ). Cetexemple contient trois dclarations de variables : Valeur, Somme et Ligne :

    varValeur: Integer;Somme: Integer;Ligne: string;

    Comme Valeur et Somme sont toutes deux du type Integer (entier), la dclaration devariables peut tre prsente comme ci-dessous, avec une virgule pour sparer les deux

    variables du mme type :varValeur, Somme: Integer;Ligne: string;

    Dans l'exemple suivant, nous supposons qu'il existe une bote de saisie appele Edit1 etun bouton appel BoutonAjouter dans la fiche. Trois variables (X, Y et Somme) sont dclarescomme tant de type Integer. Lorsque l'utilisateur clique sur BoutonAjouter, des valeurs Integersont affectes deux variables, X et Y, et ajoutes l'une l'autre. Le rsultat, Somme, apparatdans la bote de saisie :

    procedure Tform1.BoutonAjouterClick(Sender: Tobject);

    varX, Y, Somme: Integer;beginX := 100;Y := 10;Somme := X + Y;Edit1.Text := IntToStr(Somme);

    end;

    Maurice GINDENSPERGER (V 5.1) page 34/65

  • 7/31/2019 Initiation DELPHI

    35/65

    Delphi 7 (1/3): Initiation

    La ligne ci-dessous affecte la valeur d'une expression une variable :Somme := X + Y;

    Une expression consiste gnralement en deux identificateurs lis l'un l'autre par unoprateur. Pour plus d'informations sur les expressions, reportez-vous l'entre "expression"dans l'index de l'aide de la VCL. Comme la proprit Text d'une bote de saisie est du typestring et la variable Somme du type Integer, une ligne comme celle-ci ne peut pas tre autorise,car elle provoque une erreur d'incompatibilit de types l'excution ou la compilation :

    Edit1.Text := Somme;

    Au lieu de cela, la dernire ligne du gestionnaire de l'vnement utilise la fonctionIntToStr de la bibliothque d'excution de Delphi pour convertir la valeur Somme en chane decaractres, puis elle affecte la valeur de la variable Somme la proprit Edit1.Text.

    Cette variante vite le risque d'affecter une valeur Somme :

    procedure Tform1.BoutonAjouterClick(Sender: Tobject);varX, Y: Integer;beginX := 100;Y := 10;Edit1.Text := IntToStr(X + Y);

    end;

    Maurice GINDENSPERGER (V 5.1) page 35/65

  • 7/31/2019 Initiation DELPHI

    36/65

    Delphi 7 (1/3): Initiation

    9.1.3 TYPES DE DONNEES

    Plusieurs types de donnes sont intgrs au langage Pascal Objet. Vous pouvez crer desvariables appartenant n'importe lequel de ces types prdfinis. Le tableau ci-dessous donne laliste (non exhaustive) des types de donnes prdfinis :

    ENTIERS

    type tendue formeInteger 2147483648..2147483647 32 bits signShortint 128..127 8 bits sign

    Smallint 32768..32767 16 bits signLongint 2147483648..2147483647 32 bits signInt64 (nouveau) 2^63..2^631 64 bits signByte 0..255 8 bits non signWord 0..65535 16 bits non signLongwordou cardinal

    0..4294967295 32 bits non sign

    Il est facile d'utiliser des entiers en base hexadcimale: faire prcder le nombre par lesigne $.

    DECIMAUX

    type tendue chiffres significatifs octets utilissSingle 1.5 x 10^45 .. 3.4 x 10^38 78 4Double(ancien real)

    5.0 x 10^324 .. 1.7 x 10^308 1516 8

    Extended 3.6 x 10^4951 .. 1.1 x 10^4932 1920 10Comp 2^63+1 .. 2^63 1 1920 8Currency 922337203685477.5808..

    922337203685477.58071920 8

    BOOLEENS

    Boolean Peut contenir les valeurs True ou False. Ncessite un octet de mmoire.

    Maurice GINDENSPERGER (V 5.1) page 36/65

  • 7/31/2019 Initiation DELPHI

    37/65

    Delphi 7 (1/3): Initiation

    CARACTERES

    AnsiChar Un caractre ANSI.WideChar Un caractre Unicode.Char Varie en fonction de l'implmentation. Dans cette version du Pascal Objet, Char

    est semblable AnsiChar.

    On peut utiliser le code ANSI du caractre en le faisant prcder par le signe # (ex: #10).

    CHAINES

    Type Longueur maximum Mmoire ncessaire Utilisation

    ShortString 255 caractres de 2 256 octets Compatibilit ascendanteAnsiString ~2^31 caractres de 4 octets 2Go Caractre sur 8 bits (ANSI)WideString ~2^30 caractres de 4 octets 2Go Caractres Unicode;

    serveurs COM et interfacesString Varie en fonction de la directive de compilation $H. Par dfaut, string est

    semblable AnsiString

    POINTEURS

    Un pointeur est une variable qui contient l'adresse mmoire de l'objet manipul.

    La dclaration se fait sous la forme: var NomPointeur: ^TypeObjet; oupar le mot-cl"pointer"qui reprsente un pointeur non typ ( transtyper lors avant le dfrencement).

    Utilisation: new(NomPointeur) rserve la mmoire correspondant l'objet NomPointeur permet de rcuprer l'objet dispose (NomPointeur) dtruit l'objet (pointeur nil)

    L'adresse d'un objet peut tre rcupre par la fonction Addr ou @.

    VARIANTS

    Variant Type de donnes pouvant contenir des valeurs de diffrents types, et pouvantconvertir sa valeur en d'autres types de donnes.

    Si vous ne voulez pas utiliser les types de donnes prdfinis, vous pouvez dfinir vospropres types de donnes. Les types prdfinis sont gnralement suffisants pour la plupart desapplications Delphi.

    Maurice GINDENSPERGER (V 5.1) page 37/65

  • 7/31/2019 Initiation DELPHI

    38/65

    Delphi 7 (1/3): Initiation

    9.1.4 Dclaration de constantes

    Alors que les variables contiennent des valeurs qui peuvent changer pendant lexcutionde votre application, les constantes contiennent une valeur immuable que vous leur attribuez aumoment o vous les dclarez.

    De la mme manire que vous dclarez les variables dans une dclaration de variable, lesconstantes sont dclarer dans une dclaration de constante. Une dclaration de constante doitcommencer par le mot rserv const. Dans lexemple ci-dessous, nous avons trois dclarationsde constantes :

    constPi = 3.14159;Rponse = 342;Produit = 'Delphi';

    Pi, Rponse, et Produit sont des noms de constantes qui dcrivent la valeur de celles-ci.Les valeurs relles des constantes, qui ne peuvent tre modifies au cours de lexcution delapplication, sont 3.14159, 142 et Delphi.

    Il existe diffrents types de constantes, comme cest le cas pour les variables. Par contre, la diffrence de ces dernires, les constantes gardent le type de valeur dclar dans ladclaration de constante. Par exemple, la constante Pi est de type Real parce que la valeur3.14159 est un nombre rel, Rponse est de type Integer parce que 342 est un entier et Produitest de type string, parce que Delphi est une chane.

    Il convient de noter que le signe gal (=), dans une dclaration de constante, diffre deloprateur daffectation (:=) des instructions daffectation. Dans une dclaration de constante,le signe gal indique que la partie gauche et la partie droite de la dclaration sont des valeursgales.

    La mauvaise utilisation de loprateur gal dans le code Pascal objet est une erreurassez courante. Lorsque le compilateur rencontre un signe gal au lieu dun oprateurdaffectation, il suppose que la partie gauche de linstruction est une constante ou quil y acomparaison de deux valeurs. Si ce nest pas ce que vous vouliez, Delphi affiche un message

    derreur de syntaxe.Si, inversement, vous avez fait lerreur dutiliser un oprateur daffectation dans une

    dclaration de constante, il se produit une erreur de syntaxe et un message apparat, vousinformant que le compilateur attendait le signe gal.

    Maurice GINDENSPERGER (V 5.1) page 38/65

  • 7/31/2019 Initiation DELPHI

    39/65

    Delphi 7 (1/3): Initiation

    Voici quelques exemples d'utilisation d'expressions constantes dans des dclarations deconstantes :

    constMin = 0;Max = 100;Centre = (Max - Min) div 2;Beta = Chr(225);NombreCar = Ord('Z') - Ord('A') + 1;Message = 'Pas assez de mmoire';ChaineErreur = ' Erreur : ' + Message + '. ';PosErreur = 80 - Length(ChaineErreur) div 2;Ln10 = 2.302585092994045684;Ln10R = 1 / Ln10;Numerique = ['0'..'9'];Alpha = ['A'..'Z', 'a'..'z'];AlphaNum = Alpha + Numerique;

    Maurice GINDENSPERGER (V 5.1) page 39/65

  • 7/31/2019 Initiation DELPHI

    40/65

    Delphi 7 (1/3): Initiation

    9.1.5 Cration de nouveaux types de donnes

    Pascal objet est livr avec un certain nombre de types de donnes prdfinis, mais vouspouvez en crer d'autres: numr, intervalle, tableau, ensemble, enregistrement, objet.

    9.1.5.1 Type numr

    Une dclaration de type numr donne la liste de toutes les valeurs que le type peutavoir. En voici quelques exemples :

    typeTJours = (Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche);TCouleurPrimaire = (Rouge, Jaune, Bleu);TService = (Finances, Personnel, Ingenirie, Marketing, Informatique);TChien = (Caniche, PittBull, Chihuahua, BergerAllemnad, Teckel);

    Voici quelques variables de type numr :varJourSemaine : TJours;Teinte : TCouleurPrimaire;Service : TService;Race : TChien;

    Chaque valeur entre parenthses dans une dclaration de type numr a une valeur detype entier dtermine par sa position dans la liste. Par exemple, Lundi, dans la dclaration detype TJours a la valeur 0, Mardi a la valeur 1, et ainsi de suite. Vous pourriez obtenir le mmersultat en dclarant la variable JourSemaine comme tant de type Integer et en affectant ensuiteune valeur Integer pour reprsenter chaque jour de la semaine. Si ce systme donne de bonsrsultats pour des sries ordonnes et prvisibles, comme les jours de la semaine ou les mois delanne, mais est beaucoup moins utile si lordre des valeurs reprsentes est arbitraire. Il nest

    pas toujours facile de se souvenir de ce que reprsente un numro. Par exemple, laffectation:Race := Chihuahua;

    est beaucoup plus vocatrice que

    Race := 2;Quand vous listez une valeur dans un type numr, vous la dclarez comme

    identificateur. Si les dclarations de type numr et de variables prcdentes taient dans votreapplication, vous ne pourriez pas, de ce fait, dclarer une variable Finances, car cetidentificateur existe dj.

    Maurice GINDENSPERGER (V 5.1) page 40/65

  • 7/31/2019 Initiation DELPHI

    41/65

    Delphi 7 (1/3): Initiation

    9.1.5.2 Type intervalle

    Un type intervalle est un intervalle de valeur de type entier, boolen, caractre ounumr. Les intervalles sont utiles pour limiter le nombre de valeurs quune variable peutavoir.

    Pour crer un intervalle, spcifiez les valeurs minimale et maximale en les sparant pardeux points (..), par exemple : 1..100

    Exemples:typeTFourchetteBoussole = 0..360;TLettresAdmises = 'A'..'F';TSalaireMensuel = 10000..30000;THeures = 0..23;Ttemps = (Bruine, Giboules, Pluie, Averse, Orage) {type numr}TPluie = Bruine..Averse {intervalle de Ttemps}

    9.1.5.3 Type tableau

    Un tableau est un ensemble ordonn dun type de donnes o chaque lment est spcifipar sa position par ordre numrique dans lensemble. Lors de la cration du tableau, leslments ne contiennent aucune valeur, mais vous pouvez les remplir avec des donnes etmanipuler celles-ci votre guise. Voici un exemple de dclaration de variable pour un tableaude type Double :

    varVerif : array[1..10] of Double;

    Cette dclaration indique que la variable Verif dsigne une liste de dix variables de typerel, chacune ayant un numro (appel numro dindice) compris entre 1 et 10.

    Il est fait rfrence chaque lment dun tableau par le nom du tableau, suivi de sonindice entre crochets ([ ]). Le tableau Verif contient donc les dix variables Verif[1], Verif[2],Verif[3], Verif[4] et ainsi de suite, jusqu Verif[10]. Vous pouvez utiliser nimporte laquelle de

    ces variables l o vous utiliseriez une variable Real ordinaire. En outre, la valeur dindice nedoit pas ncessairement tre une constante. Ce peut tre nimporte quelle expression donnant unentier compris entre 1 et 10. Par exemple,

    J := 5; Verif[J] := 0,0;

    Ces instructions affectent la valeur 0,0 la variable Verif[5]. Comme Verif est un tableaude type Double, la valeur que vous lui affectez doit tre de type Real et contenir une virguledcimale. De plus, les valeurs Double devant commencer par un chiffre, vous ne pouvez pascrire 0,0 sous la forme ,0.

    Maurice GINDENSPERGER (V 5.1) page 41/65

  • 7/31/2019 Initiation DELPHI

    42/65

    Delphi 7 (1/3): Initiation

    Si vous voulez attribuer la valeur zro toutes les variables Verif du tableau, vous pouvezle faire laide dune boucle for. Comme un indice peut tre une variable, il est plus facile

    dutiliser une boucle for que daffecter une valeur chaque lment du tableau avec desinstructions daffectation distinctes. Cette boucle for affecte la valeur 0,0 aux dix variables :

    for J := 1 to 10 do Verif(J) := 0,0;

    Vous pouvez dfinir des tableaux en tant que types. Par exemple :typeTVerif = array[1..100] of Double;

    Vous pouvez ensuite dclarer des variables du type tableau. Lexemple ci-dessous dclareque Compte est une variable de type TVerif, soit un tableau de 100 nombres rels.

    var

    Compte : TVerif;

    9.1.5.4 Tableaux multidimensionnels

    Exemple:type TTable = array[1..20, 1..20] of Double;

    9.1.5.5 Types de chanes

    Par dfaut, le compilateur utilise une chane longue pour la dclaration "string". Lalongueur de cette chane est limite uniquement par la mmoire disponible qui est alloue defaon dynamique. Il n'y a donc plus lieu de dclarer la taille de la chane.

    Exemple:varMaChaine: string;

    Si l'on dsire utiliser les anciennes chanes courtes, on peut utiliser "shortstring". Dans cecas, la longueur est limite 255 caractres.

    Maurice GINDENSPERGER (V 5.1) page 42/65

  • 7/31/2019 Initiation DELPHI

    43/65

    Delphi 7 (1/3): Initiation

    9.1.5.6 Type ensemble

    Un ensemble est un groupe dlments du mme type : entier, boolen, caractre,numr ou intervalle. Les ensembles servent vrifier si une valeur appartient un ensemble

    particulier.

    Exemple:procedure TForm1.Button1Click(Sender : TObject);type TVoyelles = set of Char;var Voyelles : TVoyellesbeginVoyelles := ['A','E','I','O','U','Y' ];

    if Edit1.Text[1] in Voyellesthen Label2.Caption := 'Bravo !';else Label2.Caption := 'Veuillez ressayer...';

    end;

    9.1.5.7 Type enregistrement

    Les enregistrements (ou structures) sont des ensembles de donnes auxquels votreapplication peut se rfrer globalement.

    Exemple: le type enregistrement TEmploy dclar comme suit :typeTEmploy = recordNom : string[20];Pren : string[15];Embauch : 1990..2050;Salaire : Double;Poste : string[20];end;

    Les enregistrements contiennent des champs contenant des valeurs de donnes. Chaquechamp a un type de donnes. Les champs du type TEmploy sont Nom, Pren, Embauch, Salaire

    et Poste. Vous pouvez accder ces champs individuellement ou bien vous rfrer lenregistrement dans son ensemble. Il est galement possible de dclarer des structurescomportant des types variables en fonction de la valeur d'un champ.

    Voici un exemple de dclaration de deux variables denregistrement :varNouvelEmploy, EmployPromu : TEmploy;

    Le code peut se rfrer au champ Salaire dun enregistrement NouvelEmploy, comme ci-dessous (le point spare le nom du champ de celui de l'enregistrement):

    NouvelEmploy.Salaire := 200000,00;

    Mais votre code peut aussi manipuler lenregistrement comme une entit part entire :EmployPromu := NouvelEmploy;

    Maurice GINDENSPERGER (V 5.1) page 43/65

  • 7/31/2019 Initiation DELPHI

    44/65

    Delphi 7 (1/3): Initiation

    9.2 QUELQUES INSTRUCTIONS PASCAL

    9.2.1 Affectation (:=)

    Le signe utilis est := en Pascal. Si l'on crit A:=B, le contenu de la variable A est dtruitet remplac par le contenu de la variable B. La variable B est donc inchange. Une erreurfrquente est la confusion avec le signe = seul. Si j'cris A=B, ce n'est pas une affectation, maisune comparaison. Le rsultat sera vrai ("true") ou faux ("false").

    Note: Le signe ; termine chaque instruction. S'il est omis, l'instruction se poursuit sur laligne suivante. Les commentaires peuvent se mettre entre accolades, ou aprs un double-slashdans une mme ligne.

    9.2.2 Signes opratoires

    + Additionou concatnation (ex: catena:=#66+'on'+'jour')

    - Soustractionou inversion (unaire)

    * multiplication/ division (rsultat de type rel)

    DIV division entireMOD modulo (reste de la division entire)

    9.2.3 Logique boolenne (true-false)

    NOT Inversion logiqueAND Et logiqueOR Ou logique

    XOR Ou exclusif

    9.2.4 Oprateurs relationnels

    = Egal Ne pas confondre avec l'instruction d'affectation (:=)

    > Infrieur Suprieur

    >= Suprieur ou gal Diffrendin A l'intrieur (d'un ensemble)

    Maurice GINDENSPERGER (V 5.1) page 44/65

  • 7/31/2019 Initiation DELPHI

    45/65

    Delphi 7 (1/3): Initiation

    9.2.5 Les tests

    Ils permettent de prendre une dcision en fonction de la valeur d'une variable.Syntaxe: ifcondition then instruction [else instruction]

    Exemple:if age>65 then

    showmessage('retrait) // pas de ; car l'instruction n'estpas termine

    elsebegin // dbut de blocshowmessage('actif');MessageBeep(MB_ICONEXCLAMATION); // ou beep()end; // fin de bloc et fin d'instruction

    Les instructions if peuvent tre imbriques.

    9.2.6 Le slecteur

    Un slecteur se comporte comme un rotacteur en lectronique: il permet de faire un choixunique parmi un ensemble d'options. Attention, le slecteur doit faire partie d'un ensembleordonn (le systme doit connatre le prcdent et le suivant).

    Syntaxe:case slecteurofcas1: instruction 1;cas2: instruction 2;(...)casn: instruction n

    [elseinstruction]

    end;

    Exemple:

    case Carac of'+': Op:='addition';'-': Op:='soustraction';'*': Op:='multiplication';'/': Op:='division';

    elseOp:='erreur';

    end;

    Maurice GINDENSPERGER (V 5.1) page 45/65

  • 7/31/2019 Initiation DELPHI

    46/65

    Delphi 7 (1/3): Initiation

    9.2.7 Les boucles

    L'instruction if permet de faire des boucles, mais il en existe des "prtes l'emploi"La procdure Continue provoque le passage du contrle de l'excution l'itration

    suivante dans une instruction for, while ou repeat.La procdureBreakprovoque l'interruption d'une boucle for, while ou repeat.

    9.2.7.1 La boucle "pour" (for)

    Elle est utilise quand on connat la valeur de dpart, d'arrive et de progression del'indice de boucle.

    Syntaxe:forvariable=valeur_initiale [down] to valeur_finale do instruction;

    Exemple: mise zro d'un tableau deux dimensions de 100 cases:for i:=0 to 9 do

    for j:=0 to 9 doTableau[i,j]:=0;

    Exercice: afficher une suite de 1 10 dans un mmo ( faire avec les 3 types de boucles).

    9.2.7.2 La boucle "tant que" (while)

    Cette boucle est maintenue par une condition. La sortie se fait ds que celle-ci cesse d'tre

    vraie (true). Il n'est pas ncessaire de connatre par avance le nombre d'itrations

    Syntaxe: while condition do [begin] instruction[s] [end] ;

    Exemple:while not fini dobegin

    travail1;travail2;...travailn;

    end;

    Il est vident que la variable boolenne "fini" doit tre rvalue (il doit ^y avoir unmoyen de savoir si le travail est termin) au cours de la boucle, sinon elle ne prendra pas de fin.

    Exercice: le mme que prcdemment.

    Maurice GINDENSPERGER (V 5.1) page 46/65

  • 7/31/2019 Initiation DELPHI

    47/65

    Delphi 7 (1/3): Initiation

    9.2.7.3 La boucle "rpter" (repeat)

    La boucle "rpter" est employe quand on souhaite faire d'emble un parcours danscelle-ci. On ne connat pas priori le nombre de parcours de la boucle, mais il sera suprieur ougal 1. L'utilisation de begin...endest ici facultative.

    Syntaxe: repeatinstruction[s] untilcondition;

    Exemple:repeat

    prendre une pice;la mettre dans le distributeur automatique;

    until montant_introduit >= prix_article_choisi;

    Maurice GINDENSPERGER (V 5.1) page 47/65

  • 7/31/2019 Initiation DELPHI

    48/65

    Delphi 7 (1/3): Initiation

    10 Quelques instructions

    Voici quelques instructions utiles; il y en a d'autres dcouvrir dans l'aide

    10.1 Arithmtiques

    Abs Renvoie la valeur absolue de l'argumentCeil Arrondit l'entier suprieur Exp Fonction exponentielleFlor Arrondit l'entier infrieur Frac Renvoie la partie fractionnelle de l'argumentFrexp Renvoie la mantisse et l'exposantInt Renvoie la partie entire de l'argumentIntPower Calcule la puissance entire d'une valeur de baseLn Renvoie le logarithme naturel de l'argumentLog10 Calcule le logarithme en base 10Log2 Calcule le logarithme en base 2LogN Calcule le logarithme en base NMax Maximum de 2 valeursMin Minimum de 2 valeursPi Renvoie 3.1415926535897932385Power Renvoie une lvation la puissanceRound Arrondi entier

    Sqr Renvoie le carr de l'argumentSqrt Renvoie la racine carre de l'argumentTrunc Partie entire

    Maurice GINDENSPERGER (V 5.1) page 48/65

  • 7/31/2019 Initiation DELPHI

    49/65

    Delphi 7 (1/3): Initiation

    10.2 Date et heure

    Date Renvoie la date en cours.DateTimeToStr Convertit une valeur heure en chane.DateTimeToString Convertit une valeur de format heure en chane.DateToStr Convertit une valeur du format date en chane.DayOfWeek Renvoie le jour de la semaine.DecodeDate Dcode la date spcifie.DecodeTime Dcode l'heure spcifie.EncodeDate Renvoie les valeurs spcifies au format date.EncodeTime Renvoie les valeurs spcifies au format heure.FormatDateTime Formate une date et une heure en utilisant le format spcifi.

    Now Renvoie l'heure et la date en cours.StrToDate Convertit une chane en date.StrToDateTime Convertit une chane au format date/heure.StrToTime Convertit une chane au format heure.Time Renvoie l'heure en cours.TimeToStr Convertit un format heure en chane.

    Toutes les routines de date et d'heure utilisent les variables de formatage Date/Heure.

    Maurice GINDENSPERGER (V 5.1) page 49/65

  • 7/31/2019 Initiation DELPHI

    50/65

    Delphi 7 (1/3): Initiation

    10.3 Gestion fichiers

    AssignFile Fait correspondre un nom de fichier logique un nom physiqueChDir Change de dossier CloseFile Ferme le fichier (remplace "Close")CreateDir Cre un dossier DeleteFile Detruit un fichier DiskFree Renvoie l'espace disque disponible.DiskSize Renvoie la taille du disque spcifi.FileClose Ferme le fichier FileDateToDateTime Convertit la date du fichierFileExists Teste l'existence du fichier FileGetAttr Lit les proprits du fichier FileGetDate Lit la date du fichier FileOpen Ouvre un fichier FileRead Lecture dans un fichier FileSearch Recherche un fichier FileSeek Change la position en cours dans le fichier.FileSetAttr Dfinit les attributs du fichier.FileSetDate Dfinit l'indicateur DOS de date et heure du fichier.FileWrite Ecrit dans un fichier spcifique.FindClose Termine une squence FindFirst/FindNext.

    FindFirst Recherche un nom de fichier et un ensemble d'attributs spcifis dansun rpertoire.

    FindNext Renvoie la prochaine entre correspondant au nom et aux attributs.GetCurrentDir Renvoie le dossier courantGetDir Renvoie le dossier courant sur le lecteur spcifiRemoveDir Supprime un dossier RenameFile Renomme un fichier SetCurrentDir Dfinit un dossier courant

    Maurice GINDENSPERGER (V 5.1) page 50/65

  • 7/31/2019 Initiation DELPHI

    51/65

    Delphi 7 (1/3): Initiation

    10.4 Contrle de flux

    Abort Permet de sortir d'un chemin d'excution sans signaler d'erreur Break Sortie de boucle for, while ou repeatContinue Rebouclage dans une boucle for, while ou repeatExit Sort immdiatement du bloc en cours.Halt Arrte l'excution du programme et retourne au systme d'exploitation:

    viterRunError Arrte l'excution du programme.

    10.5 Messages et dialogues

    CreateMessageDialog Cre un message de dialogueInputQuery Saisie de chaneLoginDialog Saisie d'un nom et d'un mot de passe pour se connecter une BDDMessageDlg Boite de dialogueSelectDirectory Choix d'un dossier ShowMessage Affiche une bote de dialogue de message avec un bouton OK

    10.6 Divers

    Exclude Exclut un lment d'un ensemble.FillChar Remplit un nombre spcifi d'octets contigus avec une valeur spcifi

    (de type Byte ou Char).Hi Renvoie l'octet de poids fort de l'argument.Include Inclut un lment dans un ensemble.Lo Renvoie l'octet de poids faible de l'argument

    Move Copie les octets d'une source dans une destination.ParamCount Renvoie le nombre de paramtres transmis au programme dans la ligne

    de commande.ParamStr Renvoie le paramtre spcifi de la ligne de commande.Random Renvoie un nombre alatoire.Randomize Initialise le gnrateur intgr de nombres alatoires avec une valeur

    alatoire obtenue partir de l'horloge systme.SizeOf Renvoie le nombre d'octets occups par l'argument.Swap Permute les octets de poids fort et de poids faible de l'argument.UpCase Convertit un caractre en majuscule.

    Maurice GINDENSPERGER (V 5.1) page 51/65

  • 7/31/2019 Initiation DELPHI

    52/65

    Delphi 7 (1/3): Initiation

    10.7 Ordinaux

    Dec Dcrmente une variable.Inc Incrmente une variable.Odd Teste si l'argument est un nombre impair.Pred Renvoie le prdcesseur de l'argument.Succ Renvoie le successeur de l'argument.

    Maurice GINDENSPERGER (V 5.1) page 52/65

  • 7/31/2019 Initiation DELPHI

    53/65

    Delphi 7 (1/3): Initiation

    11 Mthodes: fonctions et procdures

    Les mthodes sont des blocs de code dbutant par une ligne de prototypage (dclarationde la mthode). Ensuite il faut dclarer les variables locales utilises et implmenter le codeentre les mots cls begin et end. On distingue deux types de mthodes: les fonctions et les

    procdures. Elles peuvent faire partie de la classe d'un objet ou tre indpendantes dans lemodule en cours ou un autre module. On peut naturellement crer des modules "bibliothques":c'est souvent le cas des DLL.

    11.1 Fonctions

    Une fonction renvoie une donne dont le type est dclar. Elle accepte gnralement desparamtres. La structure est la suivante:

    function NomFonction(para1:type;):type;begin

    instructions;end;

    Il est ncessaire de dclarer le type des paramtres ainsi que celui de la valeur retournepar la fonction. Dans le corps de la fonction, cette valeur retourne doit tre dfinie soit enaffectant une valeur au nom de la fonction ou en utilisant le mot-cl "result".

    Nous allons crer un programme qui lve au cube la valeur saisie. Utilisons, pourchanger, la fonction "InputBox" (voir dans l'aide en ligne) pour saisir une valeur et la fonction"ShowMessage" pour afficher le rsultat. La fonction crite dans la partie implmentation peutavoir le code suivant:

    function Cube(valeur:extended):extended;beginCube :=valeur*valeur*valeur;

    end;

    Le compilateur travaillant du haut vers le bas, il est ncessaire que le code prcdent se

    situe avant l'utilisation de la fonction. Il est possible de ne pas le faire, soit en dclarant lafonction (1 ligne du code: prototype) en fin de section "interface" (visibilit par les autresmodules) ou en mettant ce prototype suivi de la directive "forward" au dbut de la section"implmentation"

    Maurice GINDENSPERGER (V 5.1) page 53/65

  • 7/31/2019 Initiation DELPHI

    54/65

    Delphi 7 (1/3): Initiation

    Le listing complet est le suivant:

    unit Unit1;

    interface

    usesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

    Dialogs,StdCtrls;

    typeTForm1 = class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);

    private{ Dclarations prives}

    public{ Dclarations publiques}

    end;

    varForm1: TForm1;

    implementation{$R *.DFM}

    function Cube(valeur:extended):extended;forward;

    procedure TForm1.Button1Click(Sender: TObject);var nombre,resultat: extended;

    beginnombre:=StrToFloat(InputBox('Bote de saisie', 'Taper un

    nombre',''));

    resultat:=Cube(nombre);ShowMessage('Le cube du nombre saisi est '+FloatToStr(resultat));

    end;

    function Cube(valeur:extended):extended;beginResult :=valeur*valeur*valeur;

    end;

    end.

    Essayer d'crire la mme fonction dans un nouveau module et de l'utiliser dans le moduleprsent: attention la clause uses.

    Maurice GINDENSPERGER (V 5.1) page 54/65

  • 7/31/2019 Initiation DELPHI

    55/65

    Delphi 7 (1/3): Initiation

    1.1 Procdures

    Les procdures sont utilises pour effectuer des actions, mais peuvent galement servir renvoyer des valeurs. Comme les fonctions, elles peuvent accepter des paramtres transmis parvaleur (option par dfaut), par variables en lecture-criture (prcdes par le mot-cl "var") oudes constantes (prcds par le mot-cl "const"). La syntaxe en est la suivante:

    procedure NomProcedure(arg1:type; arg2:type; .argn:type);begin

    intructions;end;

    Ecrire une procdure qui gnre deux bips une seconde d'intervalle:

    procedure DeuxBips();beginbeep();sleep(1000);beep();end;

    L'appel cette procdure peut tre dclenche par l'appui d'un bouton:

    procedure TForm1.Button1Click(Sender: TObject);beginDeuxBips;end;

    Maurice GINDENSPERGER (V 5.1) page 55/65

  • 7/31/2019 Initiation DELPHI

    56/65

    Delphi 7 (1/3): Initiation

    12 Les menus

    12.1 Menu principal

    La mise en place d'une barre de menus est simplifie par le concepteur de menus. Placersur la fiche un composant de type "TMainMenu". Double-cliquer sur lui pour accder auconcepteur de menus. Il suffit alors de taper les noms en validant avec la touche "entre". Pourse dplacer, on peut utiliser la souris ou les flches de direction.

    Particularits:

    Accs rapide il suffit de placer le signe "&" dans le nom pour que la lettresuivante apparaisse en soulign

    Sparation taper le signe "-" la place du nom

    Touches de raccourci Attribuer la proprit "shortcut" (attention aux doublons!)Sous-menu Taper Ctrl + flche droiteDplacement d'lments par cliquer-glisser

    On peut utiliser des modles existants de menu ou crer des modles personnels (voirmenu contextuel).

    Si l'on utilise des gestionnaires d'vnements partags, on peut les attribuer dans la pagevnements de l'inspecteur de proprits.

    Ensuite, fermer le concepteur de menus. Il est indispensable d'attribuer une procdurevnementielle chaque lment: ouvrir le menu et cliquer sur l'option. L'diteur de code crittout seul l'entte de la procdure: il ne reste qu' complter.

    Exercice: crer un projet de type bloc-notes (dans un nouveau rpertoire "Notes"). Ymettre des menus (fichier, dition, ...). Utiliser les botes de dialogue prfabriques (enregistrer,ouvrir).

    12.2 Menus surgissants

    Placer un composant de type TPopupMenu sur votre fiche. Appeler l'diteur de menus parun double-clic sur lui. Complter comme prcdemment. Il faut ici affecter les vnementsavant de refermer le concepteur.

    Utilisation: Affecter la proprit PopupMenu de l'un des composants de votre fiche avecle nom de ce menu.

    Maurice GINDENSPERGER (V 5.1) page 56/65

  • 7/31/2019 Initiation DELPHI

    57/65

    Delphi 7 (1/3): Initiation

    13 Barres d'outils classiques

    13.1 Mise en place de la barre

    Placer un composant Tpanel sur la fiche. Effacer le contenu de la proprit "Caption".Choisir "alTop" pour la proprit "Align". Donner un nom significatif.

    13.2 Mise en place des boutons

    Il suffit de placer un composant Tspeedbutton sur la barre cre prcdemment. Laproprit "Glyph" permet de choisir une image au bouton. Des images existent dans lerpertoire \Programme\Images\Buttons.

    Il est facile de crer de nouvelles images grce l'diteur d'images (menu outils). Choisir

    une taille 16X16 pour un bouton simple.

    13.3 Info-bulles

    Les info-bulles sont faciles mettre en uvre pour les boutons (ou autres composants).Mettre le texte afficher dans la proprit "Hint" et positionner "ShowHint" "true".

    13.4 Affectation d'actions aux boutons

    Gnralement les gestionnaires d'vnements existent dj pour les menus (les boutons nesont qu'un moyen pour procder plus vite). Dans ce cas, il suffit d'affecter la procdure

    "OnClick" grce l'inspecteur de proprits.

    Pour crire un gestionnaire, il suffit de double-cliquer sur le bouton.

    Il est possible de grouper les boutons et de les rendre mutuellement exclusifs. Les boutonspeuvent rester enfoncs et prsenter une image diffrente dans ce cas.

    Exercice: ajouter une barre d'outils au bloc-notes.

    Maurice GINDENSPERGER (V 5.1) page 57/65

  • 7/31/2019 Initiation DELPHI

    58/65

    Delphi 7 (1/3): Initiation

    14 Barres d'outils "new look"

    Placer un composant "ToolBar" et un composant "ImageList" sur la fiche. Double-cliquersur ce dernier pour entrer dans l'diteur d'images:

    En utilisant ajouter, vous pouvez charger votre liste. Des bitmaps se trouvent dans lerpertoire "C:\Program Files\Fichiers communs\Borland Shared\Buttons\". Ensuite il suffit dechoisir "nouveau bouton" (ou sparateur) dans le menu contextuel du composant "Toolbar". La

    proprit "ImageIndex" du bouton dfinit l'image utilise.

    La proprit "Flat" de Toolbar permet d'avoir un effet de bouton surgissant comme danscertains logiciels rcents bien connus.

    On peut aussi utiliser le composant "Coolbar" et placer des "Toolbar" garnis dans sesbandes redimensionnables (style internet).

    Maurice GINDENSPERGER (V 5.1) page 58/65

  • 7/31/2019 Initiation DELPHI

    59/65

    Delphi 7 (1/3): Initiation

    15 Barre d'tat

    Le composant correspondant existe sur cette version de Delphi, il s'agit de TStatusBar.C'est une ligne de volets, gnralement place en bas d'une fiche, qui affiche des informationssur l'application en cours d'excution. Chaque volet est reprsent par un objet TStatusPanelnumr dans la proprit Panels. La proprit SimplePanel peut tre utilise pour faire

    basculer, l'excution, la barre d'tat entre l'affichage d'un seul volet et celui de plusieursvolets.

    15.1 Mise en place

    Placer un composant "TStatusBar" sur la fiche. Si l'on dsire plusieurs volets, il fautattribuer la proprit "panels". L'diteur de proprit se prsente sous la forme suivante:

    Choisir "Ajouter" pour augmenter le nombre de subdivisions. On peut accder au contenude chaque panneau en utilisant la proprit "text" de StatusBar1.Panels1[indice]. Les indices

    partent de la gauche avec la valeur zro.

    15.2 Exercice

    Crer un nouveau projet. Mettre l'heure dans la seconde partie d'une barre d'tat 3volets. Utiliser pour cela un timer systme (voir l'aide en ligne pour l'utilisation). La fonctionTIME donne l'heure ( convertir en texte).

    Option: afficher "MAJ" dans la partie de gauche quand le verrouillage des majuscules estactif. Il faut intercepter la frappe des touches en mettant la proprit "KeyPrev" de la fiche "true" (vrai). Le code de la touche est "VK_CAPITAL".

    Voir la fonction "GetKeyState".

    Maurice GINDENSPERGER (V 5.1) page 59/65

  • 7/31/2019 Initiation DELPHI

    60/65

    Delphi 7 (1/3): Initiation

    Liste des codes virtuels

    CODE TOUCHEVK_LBUTTON bouton gauche de sourisVK_RBUTTON bouton droit de sourisVK_MBUTTON bouton mdian de souris (s'il

    existe!)VK_BACK retour arrire (backspace)VK_TAB tabulationVK_RETURN entreVK_PAUSE pauseVK_CAPITAL verrouillage majuscules

    VK_ESCAPE Echap.VK_SPACE espaceVK_PRIOR page prcdenteVK_NEXT page suivanteVK_END finVK_HOME dbut ()VK_LEFT VK_UP VK_RIGHT VK_DOWN

    VK_SNAPSHOT impression cranVK_INSERT insertionVK_DELETE suppressionVK_0 zro...VK_9 9VK_A A...VK_Z ZVK_NUMPAD0 zro du pav numrique...VK_NUMPAD9 9 du pav numriqueVK_MULTIPLY multiplicationVK_ADD additionVK_SUBTRACT soustractionVK_DECIMAL point dcimalVK_DIVIDE divisionVK_F1 F1...VK_F12 F12VK_NUMLOCK verrouillage numrique

    VK_SCROLL arrt dfilement

    Maurice GINDENSPERGER (V 5.1) page 60/65

  • 7/31/2019 Initiation DELPHI

    61/65

    Delphi 7 (1/3): Initiation

    16 Exercices proposs:

    crer un bloc notes amlior, multi documents raliser une calculatrice simple, puis bande, enfin scientifique (puissance,

    factorielle, sinus, cosinus, tangente, binaire, hexadcimal, )

    Maurice GINDENSPERGER (V 5.1) page 61/65

  • 7/31/2019 Initiation DELPHI

    62/65

    Delphi 7 (1/3): Initiation

    17 O trouver de l'aide?

    Aide en ligne

    Apprentissage en ligne de Delphi3 (S&SM): sur le CD de Delphi3

    Les manuels papier de Delphi4

    PASCAL (Philippe SPOLJAR chez Sybex poche)

    DELPHI Professionnel - Programmation systme 32 bits (Dick LANTIM chezEyrolles)

    DELPHI2 - Secrets d'Experts (Charles CALVERT chez S&SM) Outils de dveloppement Delphi 1&2 (Gilles BETZ chez Sybex Mgapoche)

    DELPHI 3 (Dick LANTIM chez Eyrolles)

    Internet: www.inprise.com et les groupes de News

    Maurice GINDENSPERGER (V 5.1) page 62/65

  • 7/31/2019 Initiation DELPHI

    63/65

    Delphi 7 (1/3): Initiation

    TABLE DES MATIERES

    1 AVERTISSEMENT....................................................................................................................2

    2 INTRODUCTION.......................................................................................................................3

    3 Nouveauts .................................................................................................................................4

    4 PROGRAMMATION ORIENTEE OBJET.............................................................................5

    4.1 PRESENTATION......................................................................................................................5

    4.2 CONCEPTS DE BASE..............................................................................................................54.2.1 Proprits................................................................................................................................................5

    4.2.2 Mthodes.................................................................................................................................................54.2.3 Programmation structure.......................................................................................................................64.2.4 L'encapsulation.......................................................................................................................................64.2.5 L'hritage................................................................................................................................................64.2.6 Le polymorphisme..................................................................................................................................74.2.7 Dveloppeur ou utilisateur?....................................................................................................................7

    4.3 LEXIQUE...................................................................................................................................74.3.1 Classe (CLASS)......................................................................................................................................74.3.2 Objet (OBJECT).....................................................................................................................................74.3.3 Instanciation............................................................................................................................................74.3.4 Constructeur (CONSTRUCTOR)...........................................................................................................84.3.5 Destructeur (DESTRUCTOR)................................................................................................................8

    4.3.6 Classe anctre.........................................................................................................................................84.3.7 Classe parent.......................................................................................................................................... .84.3.8 Classe enfant.......................................................................................................................................... .84.3.9 Classe descendante.................................................................................................................................84.3.10 Propritaire(OWNER)..........................................................................................................................84.3.11 Hritage.................................................................................................................................................8

    4.4 CONCLUSION...........................................................................................................................9

    5 Les objets de Windows (rappel)...............................................................................................10

    6 L'cran de Delphi.....................................................................................................................11

    6.1 La barre d'outils (paramtrable):...........................................................................................12

    6.2 La palette des composants.......................................................................................................136.2.1 Les composants de la page Standard....................................................................................................146.2.2 Les composants de la page Supplment...............................................................................................156.2.3 Les composants de la page Win32........................................................................................................176.2.4 Les composants de la page Systme.....................................................................................................186.2.5 Les composants de la page Dialogues..................................................................................................196.2.6 Les composants de la page Win3.1.......................................................................................................20

    6.3 L'inspecteur d'objets................................................................................................................22

    6.4 Page Proprits.........................................................................................................................23

    6.5 Page Evnements......................................................................................................................23

    6.6 L'diteur de code......................................................................................................................24

    7 Premier projet............................................................................................................................25

    7.1 Notions lmentaires................................................................................................................25

    Maurice GINDENSPERGER (V 5.1) page 63/65

  • 7/31/2019 Initiation DELPHI

    64/65

    Delphi 7 (1/3): Initiation

    7.2 Excution...................................................................................................................................28

    8 Modification du projet .............................................................................................................30

    8.1 Mise en place du composant....................................................................................................308.2 Affectation d'une procdure vnementielle..........................................................................30

    8.3 Amliorations............................................................................................................................31

    9 Elments de programmation ...................................................................................................33

    9.1 Dclaration de variables...........................................................................................................339.1.1 Choix du nom d'une variable................................................................................................................339.1.2 Choix du type d'une variable................................................................................................................349.1.3 TYPES DE DONNEES........................................................................................................................369.1.4 Dclaration de constantes.....................................................................................................................389.1.5 Cration de nouveaux types de donnes...............................................................................................40

    9.2 QUELQUES INSTRUCTIONS PASCAL..............................................................................449.2.1 Affectation (:=).....................................................................................................................................449.2.2 Signes opratoires............................................................................................................................... ..449.2.3 Logique boolenne (true-false).............................................................................................................449.2.4 Oprateurs relationnels.........................................................................................................................449.2.5 Les tests................................................................................................................................................459.2.6 Le slecteur......................................................................................................................................... ..459.2.7 Les boucles...........................................................................................................................................46

    10 Quelques instructions ............................................................................................................48

    10.1 Arithmtique