• Aucun résultat trouvé

TP5 DELPHI : Visualisateur de forme

Dans le document [PDF] Document complet Delphi pdf (Page 153-157)

But : apprendre à réagir à des événements valable pour n’importe quelle ficher + utilisation de Tshape (un composant représentant des formes).

Création du projet TP5 + Ficher principale Main.pas Ajout de Composants

Delphi et Kylix 154 L. Jourdan

1. Création d’une boîte de dialogue

La boîte de dialogue que nous allons créer permet de choisir une forme parmi un ensemble de formes possibles (celles de la propriété « Shape » du composant ‘Shape’) au moyen de boutons radio (RedioButton), le style du trait (le crayon : proriété ‘Pen’) par une autre groupe de boutons radio et les couleurs du traits et du fond (le pinceau : propriété ‘Brush’ ) Etapes pour construire la boîte de dialogue :

1- Créer une nouvelle fiche vierge que vous nommerez « Paramètres » et que vous intitulerez « Paramètre de la forme »

2- Déposez un volet (Panel) sur la fiche en lui donnant une dimension assez grande et en enlevant son titre 3- Déposez un autre volet en haut du premier et donnez-lui le titre « Forme » et le valeur ‘bvLowered’ à la propriété

‘BevelOuter’

4- Cliquez sur le composant bouton radio (RadioButton) avec la touche [Maj] enfoncée afin de déposer plusieurs boutons radios dans le premier volet sans avoir à les reprendre de la palette

5- avec les noms

(Name) des boutons portant le même nom que caption sans les accents et les espaces.

6- Ajouter une boîtes à options (ComboBox) pour représenter le style de trait que vous nommerez « StyleTrait ». Vous y placerez les éléments (propriétés ‘Items’) suivants :

Shape Quitter Paramètres… Alt+P A propos Panel

Vous changerez sont ‘Style’ pour ‘csDropDownList’ afin de limiter le choix de l’utilisateur aux élément que vous venez de compléter 7- Placer une grille de couleur (ColorGrid de le page « Exemples ») au dessous de la boîte à option et nommez la

« Couleurs »

8- Ajouter ensuite un biseau (‘bevel’, page « Supplément ») avec un alignement à ‘alBottom’ et une forme ‘bsTopLine’

9- Terminez par l’ajout de 2 boutons bitmap

Enregister : Unit2 sous Params, unit1 sous Main 2. Interagir avec la boîte de dialogue

Appeler la boîte de notre fiche principale :

1- Référence à l’unité ‘Params ‘ dans l’instruction ‘Uses’ au début du source de l’unité principale (+Paramètres aussi)

2- Ajouter la ligne de code habituelle que l’on a vu pour la boîte ‘A propos’ : Parametres.ShowModal; Remarque : les points de suspension dans un titre indique qu’une boîte de dialogue va être activée.

Delphi et Kylix 156 L. Jourdan 3. Reprendre les données à partir de la boîte

La première chose à déterminer c’est de savoir par quel bouton la boîte a été férmée : [Ok] ou [Annuler]. La valeur que renvoie la méthode ‘ShowModal’ : ‘mrOk’ ou ‘mrCancel’.

Se servir de l’aide pour récupérer l’aide sur ‘ShowModal’, ‘Style’ .

Style est un type énumeré : TPenStyle = (psSolid, psDash, psDot, psDashDot, psDashDotDot, psClear, psInsideFrame);

Style Signification

psSolid Une ligne continue

psDash Une ligne constituée d'une série de tirets

psDot Une ligne constituée d'une série de points

psDashDot Une ligne constituée d'une alternance de tirets et de points psDashDotDot Une ligne constituée d'une série de séquences tiret-point-point

psClear Pas de ligne dessinée (style utilisé pour ne pas dessiner la ligne autour de formes dont le contour est dessiné par le crayon en cours)

PsInsideFrame Une ligne continue pouvant utiliser une couleur mélangée si Width est supérieure à 1

Vous devez récupérez chacune des informations de la boîte pour la reporter à qui de droit. Pour éxecuter plusieurs instruction à la suite d’un même bloc : begin … end.

Ainsi :

if Parametres.ShowModal = mrOK then begin

{ Récupération des informations saisies dans la boite }

Forme.Pen.Style := TPenStyle(Parametres.StyleTrait.ItemIndex); Forme.Pen.Color := Parametres.Couleurs.ForegroundColor; Forme.Brush.Color := Parametres.Couleurs.BackgroundColor; if Parametres.Rectangle.Checked then Forme.Shape := stRectangle else if Parametres.Carre.Checked then Forme.Shape := stSquare

else if Parametres.RectangleArrondi.Checked then Forme.Shape := stRoundRect else if Parametres.CarreArrondi.Checked then Forme.Shape := stRoundSquare else if Parametres.Ellipse.Checked then Forme.Shape := stEllipse

else if Parametres.Cercle.Checked then Forme.Shape := stCircle; end;

Utilisation des boutons radio : Nous devons tester si chacun des boutons est sélectionné ou non.

Pour que la boîte reflète l’état courant de la forme il faut lui donner les infos nécessaires avant de l’afficher (donc avant showmodal) : Forme.Pen.Style := TPenStyle(Parametres.StyleTrait.ItemIndex); Forme.Pen.Color := Parametres.Couleurs.ForegroundColor; Forme.Brush.Color := Parametres.Couleurs.BackgroundColor; 4. Amélioration Evenement ‘OnResize’

Créons une méthode de réaction à l’événement ‘OnResize’ lequel sur produit à chaque dimension de la fenêtre.

Nous n’avons qu’à générer une méthode de réaction à cet événement pour modifier les propriétés ‘left’, ‘Width’, ‘Top’ et ‘Height’ :

Forme.Left := Width div 4; Forme.Width := Width div 2; Forme.Top := Height div 4; Forme.Height := Height div 2;

Div est un mot réservé de Delphi qui renvoie le quotient de l’entier à sa gauche par l’entier à sa droite. ð Rem : c’est pas terrible, il faut travailler distinctement sur la zone intérieure et la zone extérieure. Il faut utiliser ClientWidth et ClientHeight pour redimensionner l’intérieur de la fenêtre :

Forme.Left := ClientWidth div 4; Forme.Width := ClientWidth div 2; Forme.Top := ClientHeight div 4; Forme.Height := ClientHeight div 2;

L’événement Oncreate se produit quand une fiche vient d’être crée.

OnQueryClose et OnClose surviennent juste avant que la fiche ne soit détruite par l’utilisateur et vous permet donc de l’empêcher de se fermer ou de proposer quelque chose.

OnDestroy aussi juste avant la destruction mais on ne peut plus rien faire. OnPaint, OnActivate, OnEnter, OnExit, OnDeactivate.

Il existe des évéenements pour gérer la souris et le clavier : OnKeyDown, OnKeyPress, OnKeyUp + OnMouseDown, OnMouseMove, OnMouseUp, OnClick, OnDblClick, OnDragDrop et onDragOver.

(on verra dans le prochain TP). Exercice 6 :

Construire une boîte de marge afin que l’utilisateur puisse choisir les proportions à gauche, à droite, en haut et en bas de la forme qui pour l’instant sont figées à 25%.

procedure TForm1.Position1Click(Sender: TObject); begin

if Marges.ShowModal = mrOK then begin

Forme.Left := (ClientWidth * StrToInt(Marges.Gauche.Text)) div 100;

Forme.Width := (ClientWidth * (100 - StrToInt(Marges.Gauche.Text) - StrToInt(Marges.Droite.Text))) div 100;

Forme.Top := (ClientHeight * StrToInt(Marges.Haut.Text)) div 100;

Forme.Height := (ClientHeight * (100 - StrToInt(Marges.Haut.Text) - StrToInt(Marges.Bas.Text))) div 100; end;

+

Une belle boîte de dialogue Marges

Dans le document [PDF] Document complet Delphi pdf (Page 153-157)