• Aucun résultat trouvé

Variable locale

Dans le document [PDF] Document complet Delphi pdf (Page 183-188)

J. TP10 DELPHI : Fioritureset amélioration des exemples

6. Variable locale

Nous pouvons encore simplifier ce code en déclarant des variables locales à la méthode ‘BoutonStyleClick’.

procedure TForm1.BoutonStyleClick(Sender: TObject); var { déclaration de variables locales à cette procédure } leBouton: TSpeedButton;

leStyle: TFontStyle; begin

{ Conversion des informations } leBouton := Sender as TSpeedButton; leStyle := TFontStyle(leBouton.Tag); { Traitement }

if leBouton.Down then Edition.Font.Style := Edition.Font.Style + [leStyle] else Edition.Font.Style := Edition.Font.Style - [leStyle];

MAJBarreStatut; end;

Delphi et Kylix 184 L. Jourdan Les barres d’outils et d’état

Reprendre l’éditeur de texte pour lui ajouter 2 barres :

1- Une barre d’état en bas qui donnera des explication sur l’état de l’éditeur de texte

2- Une barre d’outils en haut qui présentera des raccourcis aux commandes du menu sous forme de boutons

La barre de statut

1- Ajouter un composant volet (Panel) à la fiche

2- Le placer en bas de la fiche en faisant en sorte qu’il s’adapte au changement de dimension de la fenêtre 3- Placer différents composants pour représenter les différents indicateurs voulus

Créer la barre de statut

Placer un volet (Panel) pour représenter une barre de statut nommmée « BarreStatut » et lui enlever son titre, Align=’Albottom’.

Ajouter 2 autres volets nommés « Modifie » et « Police » (sans titre) et mettre un effet de relief en creux : ‘BevelOuter’=’bvLowered’.

Trouver une font adaptée pour visualiser correctement les statuts. Placer les informations dans la barre d’état

Il faut que le texte « Modifié » s »affiche dans le volet ‘Modifie’ lorsque le contenu de l’éditeur de texte est modifié. Dans ce but, nous allons réagir à l’événement ‘OnChange’ du mémo :

Modifie.Caption := ‘Modifié’ ;

Il faut aussi faire en sorte que ce message disparaisse lorsque le texte est enregistré. Il faut donc ajouter une instruction dans la méthode de réaction à l’enregistrement pour qu’elle devienne :

procedure TForm1.Enregistrersous1Click(Sender: TObject); begin

if SaveDialog1.Execute then begin

Edition.Lines.SaveToFile( SaveDialog1.FileName );

Modifie.Caption := ''; { enlève l'indicateur de modification } end;

end;

Nous devons procéder de la même façon pour la police utilisée. Nous supposons que nous voulons : le nom de la police, sa taille, puis son style :

procedure TForm1.Police1Click(Sender: TObject); begin

if FontDialog1.Execute then begin

Edition.Font := FontDialog1.Font; { Mise à jour de la barre de statut }

Police.Caption := Edition.Font.Name + ' ' + IntToStr(Edition.Font.Size); if fsBold in Edition.Font.Style then Police.Caption := Police.Caption + ' gras'; if fsItalic in Edition.Font.Style then Police.Caption := Police.Caption + ' italique'; if fsUnderline in Edition.Font.Style then Police.Caption := Police.Caption + ' souligné'; if fsStrikeOut in Edition.Font.Style then Police.Caption := Police.Caption + ' barré'; end;

end;

Amélioration

Pb : au démarrage rien ne s’affiche dans la barre de statut concernant la police.

Nous pouvons le faire manuellement mais aussi l’automatiser grâce à l’événement ‘OnCreate’.

procedure TForm1.FormCreate(Sender: TObject); begin

{ Mise à jour de la barre de statut }

Police.Caption := Edition.Font.Name + ' ' + IntToStr(Edition.Font.Size); if fsBold in Edition.Font.Style then Police.Caption := Police.Caption + ' gras'; if fsItalic in Edition.Font.Style then Police.Caption := Police.Caption + ' italique';

if fsUnderline in Edition.Font.Style then Police.Caption := Police.Caption + ' souligné'; if fsStrikeOut in Edition.Font.Style then Police.Caption := Police.Caption + ' barré'; end;

La barre d’Outils

Créer la barre d’outils

Placer un Panel dans la fiche, nommez-le « BarreOutils », affecter la valeur ‘alTop’ à sa propriété ‘Align’ et redimensionnez-le pour lui donner une hauteur raisonnable.

Placer des boutons de commande 3 boutons : Couper, Copier et Coller.

Pour cela ajouter 3 fois le composant TurboBouton (SpeedButton) sur la barre d’outils. Affecter leur une image qui leur conviennent (image des opérations du presse papiers).

.

Il faut réagir à l’événement ‘OnClick’ sur ces boutons et donc reprendre les méthodes existantes qui sont les méthode de réaction aux commandes du menu.

Pour réaffecter une même méthode de réaction à plusieurs événement, il suffit de la définir une première fois et de la choisir pour les autres événements à partir de la boîte à options de la zone de saisie des événement en question. (Donc ne pas réécrire la méthode !).

Placer des boutons d’état

Nous pouvons placer des boutons pour indiquer si la police est grasse, italique, soulignée et/ou barrée.

Ces boutons doivent re ster enfoncés pour marquer l’état, de plus, l’utilisateur peut agir directement sur ces boutons pour changer l’état de la police.

4 turboboutons (SpeedButton) nommés « Gras », « Italique », « Souligne » et « barre » dans une font de 14 points en Times new roman.

Propriétés intéressantes :

- GroupIndex : regroupe logiquement des SpeedButton pour qu’ils se comportent comme des radio boutons (un seul enfoncé à la fois)

- AllowAllUp : autorise ou non que tous les boutons soient relevés à la fois (e.i. : aucun sélectionné) - Down : indique si le bouton est à l’état enfoncé ou non

Pour notre cas : les boutons peuvent être individuellement sélectionnés ou non, nous devons donc leur affecter un numéro de groupe différent. Nous allons de plus autoriser que tous les boutons soient relevés en rendant vraie leur propriété ‘AllowAllUp’

Lorsque la police est modifiée, nous devons mettre à jour notre barre d’outils dans les méthodes de réaction aux événements ‘OnCreate’ de la fiche et ‘OnClick’ de la commande ‘Texte|Police…’

Gras.Down := fsBold in Edition.Font.Style; Italique.Down := fsItalic in Edition.Font.Style; Souligne.Down := fsUnderline in Edition.Font.Style;

Delphi et Kylix 186 L. Jourdan L’état de la police est maintenant reflété. Il reste à réagir aux clics sur ces boutons pour reporter les modifications adéquates dans la police :

procedure TForm1.GrasClick(Sender: TObject); begin

if Gras.Down then Edition.Font.Style := Edition.Font.Style + [fsBold] else Edition.Font.Style := Edition.Font.Style - [fsBold];

{ Mise à jour de la barre de statut }

Police.Caption := Edition.Font.Name + ' ' + IntToStr(Edition.Font.Size); if fsBold in Edition.Font.Style then Police.Caption := Police.Caption + ' gras'; if fsItalic in Edition.Font.Style then Police.Caption := Police.Caption + ' italique'; if fsUnderline in Edition.Font.Style then Police.Caption := Police.Caption + ' souligné'; if fsStrikeOut in Edition.Font.Style then Police.Caption := Police.Caption + ' barré'; end;

procedure TForm1.ItaliqueClick(Sender: TObject); begin

if Italique.Down then Edition.Font.Style := Edition.Font.Style + [fsItalic] else Edition.Font.Style := Edition.Font.Style - [fsItalic];

{ Mise à jour de la barre de statut }

Police.Caption := Edition.Font.Name + ' ' + IntToStr(Edition.Font.Size); if fsBold in Edition.Font.Style then Police.Caption := Police.Caption + ' gras'; if fsItalic in Edition.Font.Style then Police.Caption := Police.Caption + ' italique'; if fsUnderline in Edition.Font.Style then Police.Caption := Police.Caption + ' souligné'; if fsStrikeOut in Edition.Font.Style then Police.Caption := Police.Caption + ' barré'; end;

procedure TForm1.SouligneClick(Sender: TObject); begin

if Souligne.Down then Edition.Font.Style := Edition.Font.Style + [fsUnderline] else Edition.Font.Style := Edition.Font.Style - [fsUnderline];

{ Mise à jour de la barre de statut }

Police.Caption := Edition.Font.Name + ' ' + IntToStr(Edition.Font.Size); if fsBold in Edition.Font.Style then Police.Caption := Police.Caption + ' gras'; if fsItalic in Edition.Font.Style then Police.Caption := Police.Caption + ' italique'; if fsUnderline in Edition.Font.Style then Police.Caption := Police.Caption + ' souligné'; if fsStrikeOut in Edition.Font.Style then Police.Caption := Police.Caption + ' barré'; end;

procedure TForm1.BarreClick(Sender: TObject); begin

if Barre.Down then Edition.Font.Style := Edition.Font.Style + [fsStrikeOut] else Edition.Font.Style := Edition.Font.Style - [fsStrikeOut];

{ Mise à jour de la barre de statut }

Police.Caption := Edition.Font.Name + ' ' + IntToStr(Edition.Font.Size); if fsBold in Edition.Font.Style then Police.Caption := Police.Caption + ' gras'; if fsItalic in Edition.Font.Style then Police.Caption := Police.Caption + ' italique'; if fsUnderline in Edition.Font.Style then Police.Caption := Police.Caption + ' souligné'; if fsStrikeOut in Edition.Font.Style then Police.Caption := Police.Caption + ' barré'; end;

Lignes permettant de mettre à jour la barre d’état :

procedure TForm1.FormCreate(Sender: TObject); begin

{ Mise à jour de la barre de statut }

if fsBold in Edition.Font.Style then Police.Caption := Police.Caption + ' gras'; if fsItalic in Edition.Font.Style then Police.Caption := Police.Caption + ' italique'; if fsUnderline in Edition.Font.Style then Police.Caption := Police.Caption + ' souligné'; if fsStrikeOut in Edition.Font.Style then Police.Caption := Police.Caption + ' barré'; { Mise à jour de la barre d'outils }

Gras.Down := fsBold in Edition.Font.Style; Italique.Down := fsItalic in Edition.Font.Style; Souligne.Down := fsUnderline in Edition.Font.Style; Barre.Down := fsStrikeOut in Edition.Font.Style; end;

Les conseils d’aide

Les meilleures applications présentent des explications quant à la fonctions des boutons des barres d’outils et des commandes des menus.

Tout composant visuel (contrôle) a une propriété Hint représentant une chaîne de caractères nous informant sur sa fonction.

La propriété ShowHints du volet (Panel) permet d’autoriser ou non l’affichage des conseils d’aide (Hint) des contrôles qu’il contient.

L’événement OnHint du composant ‘Application’ (qui représente votre application) permet de réagir au changement de contrôle pointé par la souris pour afficher le conseil d’aide associé de la façon que vous voulez.

Dans notre cas :

Pour chaque bouton, ajouter des conseils d’aide et mettre la propriété ‘ShowHints’ de la barre d’outil à vrai. Idem pour la barre de statut.

Exercice :

Rependre la visualisateur de forme :

- ajouter une barre de statut qui reprend les proportions des marges

- ajouter une barre d’outils contenant des boutons avec leur conseil d’aide pour activer les différentes boîtes

Les menus surgissants

Un menu surgissant = menu qui s’affiche lorsque l’utilisateur sélectionne un composant et clique sur le bouton droit de la souris.

Composant :

PopupMenu , sa propriété AutoPopup lui permet de se déclencher automatiquement en l’affectant à la propriété PopupMenu du composant auquel il se rapporte.

Placer un menu surgissant dans l’éditeur de texte et définir des entrées pour le press-papier et associez le à la propriété ‘PopupMenu’ du mémo ‘Edition’.

Nous définissons les commandes du press-papiers dans le menu surgissant ajouté comme dans le menu principal : « couper2 », « copier2 » et « coller2 ».

Delphi et Kylix 188 L. Jourdan Pour définir les réactions à ces commandes, vous pouvez réutiliser les méthoes de réaction aux commandes du press- papiers du menu principal (‘Couper1Click’….).

Vous pouvez y accéder directement dans le volet événement de l’explorateur de composant et accéder aux réactions déjà définies.

Exercice :

Ajouter au visualisateur de forme un menu surgissant qui appelle les boîtes de changement de police et de changement de marge.

Dans le document [PDF] Document complet Delphi pdf (Page 183-188)