> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Personnaliser le menu contextuel et la barre d’outils d’un composant visuel

> Personnalisez le menu contextuel et la barre d’outils des composants visuels d’ABBYY FineReader Engine sous Windows : ajoutez, supprimez ou remplacez des commandes pour les adapter à votre workflow.

<Warning>
  Les composants visuels sont implémentés dans FRE for Windows.
</Warning>

La plupart des fonctionnalités offertes par les composants visuels d’ABBYY FineReader Engine sont accessibles via leur menu contextuel et leur barre d’outils (le cas échéant). Les commandes disponibles dans le menu contextuel et la barre d’outils répondent à la plupart des cas d’usage courants. Toutefois, vous devrez parfois personnaliser leurs éléments pour les adapter à vos besoins.

La barre d’outils est disponible pour [Image Viewer](/fr/fine-reader/engine/visual-components-reference/imageviewer), [Text Editor](/fr/fine-reader/engine/visual-components-reference/texteditor), [Document Viewer](/fr/fine-reader/engine/visual-components-reference/documentviewer). Vous pouvez ajouter de nouveaux boutons à la barre d’outils et supprimer ceux qui sont superflus. Les boutons peuvent être soit prédéfinis, soit créés par vous.

<img src="https://mintcdn.com/abbyy/i-EfCQVmseNiPQcp/images/fine-reader/engine/toolbar.gif?s=4d3c945dd89dce825bea4deeb04178d8" alt="Toolbar" width="431" height="28" data-path="images/fine-reader/engine/toolbar.gif" />

Le menu contextuel est disponible pour [Image Viewer](/fr/fine-reader/engine/visual-components-reference/imageviewer), [Zoom Viewer](/fr/fine-reader/engine/visual-components-reference/zoomviewer), [Text Editor](/fr/fine-reader/engine/visual-components-reference/texteditor), [Document Viewer](/fr/fine-reader/engine/visual-components-reference/documentviewer). Le menu contextuel de chaque composant comprend une partie standard et une partie personnalisée :

* La partie standard du menu contextuel correspond au menu contextuel affiché par défaut dans le composant. Cette partie ne peut pas être modifiée. Vous pouvez uniquement afficher ou masquer cette partie du menu.
* La partie personnalisée du menu contextuel peut être modifiée. Par défaut, elle est vide. Vous pouvez y ajouter n’importe laquelle des commandes standard disponibles pour le composant, ainsi que toute commande définie par l’utilisateur. La partie personnalisée du menu contextuel est toujours affichée après la partie standard. Elle peut également être activée ou désactivée.

<img src="https://mintcdn.com/abbyy/i-EfCQVmseNiPQcp/images/fine-reader/engine/popupmenu.gif?s=47bde52eabbcbe558d7bdd4cf56fb4a7" alt="PopupMenu" width="239" height="195" data-path="images/fine-reader/engine/popupmenu.gif" />

<div id="managing-available-commands">
  ## Gestion des commandes disponibles
</div>

Vous trouverez la liste complète des commandes disponibles dans Visual Components parmi les constantes de l’énumération [MenuItemEnum](/fr/fine-reader/engine/visual-components-reference/enumerations/menuitemenum). Les sous-objets [Commands](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/commands) des objets [ImageViewer](/fr/fine-reader/engine/visual-components-reference/imageviewer), [ZoomViewer](/fr/fine-reader/engine/visual-components-reference/zoomviewer), [DocumentViewer](/fr/fine-reader/engine/visual-components-reference/documentviewer) et [TextEditor](/fr/fine-reader/engine/visual-components-reference/texteditor) permettent d’accéder aux commandes disponibles dans chaque composant.

Les commandes peuvent être appelées de différentes façons :

* en sélectionnant un élément dans un menu contextuel,
* en cliquant sur un bouton de la barre d’outils,
* en appuyant sur une touche de raccourci,
* en utilisant la méthode [DoCommand](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/commands/docommand-method) du sous-objet Commands d’un composant.

Cependant, toutes ces méthodes ne sont pas disponibles pour chaque commande. Consultez la liste des commandes disponibles et les modes d’utilisation de ces commandes dans chaque composant :

* [Commandes d’Image Viewer](/fr/fine-reader/engine/visual-components-reference/imageviewer/image-viewer-commands)
* [Commandes de Zoom Viewer](/fr/fine-reader/engine/visual-components-reference/zoomviewer/zoom-viewer-commands)
* [Commandes de Document Viewer](/fr/fine-reader/engine/visual-components-reference/documentviewer/document-viewer-commands)
* [Commandes de Text Editor](/fr/fine-reader/engine/visual-components-reference/texteditor/text-editor-commands)

Pour activer ou désactiver une commande, utilisez la méthode [EnableCommand](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/commands/enablecommand-method) ou [DisableCommand](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/commands/disablecommand-method) de l’objet Commands. Si vous désactivez une commande, aucune des méthodes d’appel disponibles pour cette commande ne fonctionnera.

<div id="adding-predefined-commands-to-the-toolbar">
  ## Ajout de commandes prédéfinies à la barre d’outils
</div>

Certaines commandes prédéfinies sont disponibles par défaut dans la barre d’outils, tandis que d’autres peuvent être ajoutées à la barre d’outils d’un composant par le développeur. Consultez la liste des commandes prédéfinies disponibles pour chaque composant.

Pour ajouter une commande prédéfinie à une barre d’outils ou la supprimer :

1. Obtenez l’objet [Toolbar](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/toolbar) via la propriété Toolbar du composant.
2. Insérez la commande à l’emplacement souhaité dans la barre d’outils à l’aide de la méthode [InsertAt](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/toolbar/insertat-method) de l’objet Toolbar, ou supprimez-la à l’aide de la méthode [Delete](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/toolbar/delete-method) ou [DeleteAt](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/toolbar/deleteat-method).

<Note>
  Vous pouvez regrouper les boutons de la barre d’outils à l’aide de séparateurs. Utilisez la méthode InsertAt de l’objet Toolbar avec la constante MI\_Separator comme paramètre.
</Note>

<Accordion title="Code C#">
  ```csharp theme={null}
  // Ajoute la commande prédéfinie MI_InvertImage au début de la barre d’outils d’Image Viewer
  private FineReaderVisualComponents.AxImageViewer imageViewer;
  imageViewer.Toolbar.InsertAt(FineReaderVisualComponents.MenuItemEnum.MI_InvertImage, 0);
  ```
</Accordion>

Une fois la commande prédéfinie ajoutée, elle peut être utilisée dans l’application. ABBYY FineReader Engine gère les événements correspondants. Vous pouvez ajouter des fonctionnalités supplémentaires au gestionnaire en utilisant l’événement [OnCommand](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/icommandevents/oncommand-method) de l’interface [ICommandEvents](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/icommandevents).

<div id="adding-predefined-commands-to-the-context-menu">
  ## Ajout de commandes prédéfinies au menu contextuel
</div>

Certaines commandes prédéfinies sont disponibles par défaut dans le menu contextuel — elles constituent la partie standard du menu contextuel. Toutes les autres commandes prédéfinies disponibles dans le composant peuvent être ajoutées à la partie personnalisée du menu contextuel.

Pour ajouter une commande prédéfinie à la partie personnalisée d’un menu contextuel ou la supprimer :

1. Obtenez l’objet [PopupMenu](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/popupmenu) via la propriété PopupMenu du composant.
2. Désactivez l’intégralité de la partie standard du menu contextuel à l’aide de la propriété [StandardMenuEnabled](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/popupmenu#standardmenuenabled) de l’objet PopupMenu si vous n’en avez pas besoin. Par défaut, la partie standard est activée.
3. Activez la partie personnalisée du menu contextuel à l’aide de la propriété [CustomMenuEnabled](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/popupmenu#custommenuenabled) de l’objet PopupMenu.
4. Insérez une commande à l’emplacement souhaité dans la partie personnalisée du menu contextuel à l’aide de la méthode [InsertAt](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/popupmenu/insertat-method) de l’objet PopupMenu, ou supprimez-la à l’aide de la méthode [Delete](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/toolbar/delete-method) ou [DeleteAt](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/toolbar/deleteat-method).

<Note>
  Vous pouvez regrouper les éléments dans la partie personnalisée du menu contextuel à l’aide de séparateurs. Utilisez la méthode InsertAt de l’objet PopupMenu avec la constante MI\_Separator comme paramètre.
</Note>

<Accordion title="Code C#">
  ```csharp theme={null}
  // Nous ajoutons la commande prédéfinie MI_InvertImage au début de la partie personnalisée du menu contextuel d’Image Viewer
  private FineReaderVisualComponents.AxImageViewer imageViewer;
  imageViewer.PopupMenu.StandardMenuEnabled = false;
  imageViewer.PopupMenu.CustomMenuEnabled = true;
  imageViewer.PopupMenu.InsertAt(FineReaderVisualComponents.MenuItemEnum.MI_InvertImage, 0);
  ```
</Accordion>

Une fois la commande prédéfinie ajoutée, elle peut être utilisée dans l’application. ABBYY FineReader Engine gère les événements correspondants. Vous pouvez enrichir le gestionnaire avec des fonctionnalités supplémentaires à l’aide de l’événement [OnCommand](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/icommandevents/oncommand-method) de l’interface [ICommandEvents](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/icommandevents).

<div id="creating-user-defined-commands">
  ## Création de commandes personnalisées
</div>

Vous pouvez également créer vos propres commandes et les ajouter à une barre d’outils ou à un menu contextuel. L’énumération [MenuItemEnum](/fr/fine-reader/engine/visual-components-reference/enumerations/menuitemenum) comprend les constantes (MI\_CustomCommand1, ... MI\_CustomCommand10), qui peuvent être utilisées pour définir vos propres commandes.

Avant d’ajouter une commande personnalisée, vous devez créer une icône (16х16 px) pour son bouton dans la barre d’outils et définir le texte de la commande. Vous devez ensuite enregistrer la commande dans le composant et l’ajouter à la barre d’outils ou à la partie personnalisée du menu contextuel. Voir ci-dessous pour plus de détails.

Pour ajouter une commande personnalisée :

1. Enregistrez la commande dans le composant. Utilisez la méthode [RegisterUserCommand](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/commands/registerusercommand-method) du sous-objet [Commands](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/commands) du composant avec l’une des constantes MI\_CustomCommand1, ... MI\_CustomCommand10 comme paramètre. Vous devez également spécifier, dans les paramètres de cette méthode, le chemin d’accès à l’icône, le texte de la commande et le raccourci clavier.

<Note>
  Un raccourci clavier se compose de deux parties : le code de touche virtuelle et les modificateurs de touche (Ctrl, Alt, Shift). Lorsque vous transmettez un raccourci clavier à une méthode FineReader Engine, il doit avoir le même format que la valeur renvoyée (LRESULT) par la fonction Windows [SendMessage](http://msdn.microsoft.com/en-us/library/ms644950\(VS.85\).aspx) pour le message [HKM\_GETHOTKEY](http://msdn.microsoft.com/en-us/library/windows/desktop/bb775235\(v=vs.85\).aspx). Pour obtenir la valeur du raccourci clavier dans ce format, vous devez placer le code de touche virtuelle du raccourci dans l’octet de poids faible de la valeur et le modificateur de touche, qui spécifie les touches définissant une combinaison de raccourci, dans l’octet de poids fort. Si vous n’avez pas besoin d’utiliser de raccourci clavier pour la commande, passez 0 comme paramètre de la méthode.
</Note>

2. Implémentez l’événement [OnCommand](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/icommandevents/oncommand-method) de l’interface [ICommandEvents](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/icommandevents) afin qu’il gère l’événement de la nouvelle commande. Voir [Utilisation des objets connectables](/fr/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/working-with-connectable-objects).
3. Ajoutez la commande à la barre d’outils ou à la partie personnalisée du menu contextuel du composant. La procédure est la même que pour les commandes prédéfinies d’une barre d’outils ou d’un menu contextuel.

Après cela, la commande peut être utilisée dans votre application.

<Accordion title="Code C#">
  ```csharp theme={null}
  private FineReaderVisualComponents.AxImageViewer imageViewer;
  private FineReaderVisualComponents.AxTextEditor textEditor;
  private const int HotkeyShift = 1;
  private const int HotkeyControl = 2;
  private const int HotkeyAlt = 4;
  // Création de la valeur du raccourci clavier
  private int makeWord(int keyCode, int modifierFlags)
  {
   return (int)((uint)((byte)(keyCode)) | ((uint)((byte)(modifierFlags)) << 8));
  }
  // Ajout de commandes personnalisées
  private void addCommands()
  {
   …
   int hotKey = makeWord((int)Keys.B, HotkeyShift);
   imageViewer.Commands.RegisterUserCommand(FineReaderVisualComponents.MenuItemEnum.MI_CustomCommand1, "MyCommand", "D:\\img.bmp", hotKey);
   imageViewer.Toolbar.InsertAt(FineReaderVisualComponents.MenuItemEnum.MI_CustomCommand1, 0);
   imageViewer.Commands.OnCommand += new FineReaderVisualComponents.DICommandEvents_OnCommandEventHandler( imageViewer_OnCommand );
   hotKey = makeWord((int)Keys.T, HotkeyAlt | HotkeyShift);
   textEditor.Commands.RegisterUserCommand(FineReaderVisualComponents.MenuItemEnum.MI_CustomCommand1, "MyTextCommand", "", hotKey);
   …
  }
  // Gestionnaire de l’événement OnCommand du visualiseur d’images
  private void imageViewer_OnCommand( FineReaderVisualComponents.MenuItemEnum command, out bool cancel ){
   if( command == FineReaderVisualComponents.MenuItemEnum.MI_CustomCommand1 )
   {
    ...
   }
  }
  ```
</Accordion>

Pour supprimer une commande personnalisée précédemment ajoutée :

1. Supprimez-la de la barre d’outils ou de la partie personnalisée du menu contextuel. La procédure est la même que pour les commandes prédéfinies d’une barre d’outils ou d’un menu contextuel.
2. Annulez l’enregistrement de la commande. Utilisez la méthode [UnregisterUserCommand](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/commands/unregisterusercommand-method) du sous-objet Commands du composant.

<div id="see-also">
  ## Voir aussi
</div>

[Créer une application avec une interface utilisateur graphique](/fr/fine-reader/engine/guided-tour/advanced-techniques/using-gui-elements/creating-an-application-with-gui)
