Désactivation des éléments de menu

De RAD Studio
Aller à : navigation, rechercher

Remonter à Manipulation des contrôles - Index

Il est souvent utile de désactiver des commandes de menus sans pour autant les retirer du menu. Dans un éditeur de texte, par exemple, si aucun texte n'est sélectionné, les commandes Couper, Copier et Supprimer du menu Edition sont inapplicables. L'activation ou la désactivation des éléments de menu peut être déclenchée lorsque l'utilisateur sélectionne le menu. Pour désactiver un élément de menu, donnez la valeur False à sa propriété Enabled.

Dans l'exemple suivant, un gestionnaire est attaché à l'événement OnClick d'un élément Edition appartenant à la barre de menu d'une fiche enfant. Il définit la propriété Enabled des éléments Couper, Copier et Supprimer dans le menu Edition, selon que du texte est sélectionné ou non dans le composant RichEdit1. La commande Coller sera activée ou désactivée selon que le presse-papiers contient ou non du texte.

 procedure TEditForm.Edit1Click(Sender: TObject);
 var
   HasSelection: Boolean;  { déclarer une variable temporaire }
 begin
   Paste1.Enabled := Clipboard.HasFormat(CF_TEXT);  {activer ou désactiver l'élément de menu Coller}
   HasSelection := Editor.SelLength > 0;  { True si texte sélectionné }
   Cut1.Enabled := HasSelection;  { activer les éléments de menu si HasSelection vaut True }
   Copy1.Enabled := HasSelection;
   Delete1.Enabled := HasSelection;
 end;
void __fastcall TMainForm::EditEditClick(TObject *Sender) {
	// enable or disable the Paste menu item
	Paste1->Enabled = Clipboard()->HasFormat(CF_TEXT);
	bool HasSelection = (RichEdit1->SelLength > 0); // true if text is selected
	Cut1->Enabled = HasSelection; // enable menu items if HasSelection is true
	Copy1->Enabled = HasSelection;
	Delete1->Enabled = HasSelection;
}

La méthode HasFormat du presse-papiers renvoie une valeur booléenne indiquant si le presse-papiers contient des objets, du texte ou des images d'un format particulier. En appelant HasFormat avec le paramètre CF_TEXT, vous pouvez déterminer si le presse-papiers contient du texte, et activer ou désactiver l'élément Coller selon le cas.

Voir aussi