Gestion de l'événement OnPopup

De RAD Studio
Aller à : navigation, rechercher

Remonter à Manipulation des contrôles - Index

Il peut être nécessaire de préparer certains éléments d'un menu surgissant avant d'afficher celui-ci, comme vous devez spécifier les éléments activés ou désactivés d'un menu normal. Avec un menu normal, l'événement OnClick correspondant à l'affichage du menu est généralement associé au titre de ce menu.

Comme les menus surgissants n'ont pas de barre de menu, vous devez gérer l'événement dans le composant lui-même. Le composant menu surgissant offre pour cela un événement particulier appelé OnPopup.

Pour préparer des éléments d'un menu surgissant avant de les afficher,

  1. Sélectionnez le composant menu surgissant.
  2. Attachez un gestionnaire à son événement OnPopup.
  3. Ecrivez dans le gestionnaire d'événement le code activant, désactivant, dissimulant ou affichant les éléments du menu.

Dans le code suivant, un gestionnaire existant pour l'événement Edit1Click décrit précédemment dans la section Désactivation des éléments de menu est attaché à l'événement OnPopup du composant menu surgissant. Une ligne de code est ajoutée à Edit1Click pour chaque élément du menu surgissant.



 procedure TEditForm.Edit1Click(Sender: TObject);
 var
   HasSelection: Boolean;
 begin
   Paste1.Enabled := Clipboard.HasFormat(CF_TEXT);
   Paste2.Enabled := Paste1.Enabled;{Ajouter cette ligne}
   HasSelection := Editor.SelLength <> 0;
   Cut1.Enabled := HasSelection;
   Cut2.Enabled := HasSelection;{Ajouter cette ligne}
   Copy1.Enabled := HasSelection;
   Copy2.Enabled := HasSelection;{Ajouter cette ligne}
   Delete1.Enabled := HasSelection;
 end;



 void __fastcall TMainForm::EditEditClick(TObject *Sender)
 {
   // Active ou désactive l'élément de menu Coller
   Paste1->Enabled = Clipboard()->HasFormat(CF_TEXT);
   Paste2->Enabled = Paste1->Enabled;            // Ajouter cette ligne
   bool HasSelection = (RichEdit1->SelLength > 0);  // true si du texte est sélectionné
   Cut1->Enabled = HasSelection;  // activer l'élément de menu si HasSelection vaut true
   Cut2->Enabled = HasSelection;    // ajouter cette ligne
   Copy1->Enabled = HasSelection;
   Copy2->Enabled = HasSelection;   // ajouter cette ligne
   Delete1->Enabled = HasSelection;
 }