> ## 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.

# Kontextmenü und Symbolleiste einer visuellen Komponente anpassen

> Passen Sie das Kontextmenü und die Symbolleiste der visuellen Komponenten von ABBYY FineReader Engine unter Windows an: Fügen Sie Befehle hinzu, entfernen oder ersetzen Sie sie passend zu Ihrem Workflow.

<Warning>
  Visuelle Komponenten sind in FRE for Windows implementiert.
</Warning>

Auf die meisten Funktionen der visuellen Komponenten von ABBYY FineReader Engine können Sie über deren Kontextmenü und Symbolleiste (falls vorhanden) zugreifen. Die im Kontextmenü und in der Symbolleiste verfügbaren Befehle sind für die meisten gängigen Einsatzszenarien nützlich. Möglicherweise müssen Sie deren Elemente jedoch an Ihre Anforderungen anpassen.

Die Symbolleiste ist für [Image Viewer](/de/fine-reader/engine/visual-components-reference/imageviewer), [Text Editor](/de/fine-reader/engine/visual-components-reference/texteditor) und [Document Viewer](/de/fine-reader/engine/visual-components-reference/documentviewer) verfügbar. Sie können der Symbolleiste neue Schaltflächen hinzufügen und überflüssige entfernen. Die Schaltflächen können entweder vordefiniert oder von Ihnen erstellt sein.

<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" />

Das Kontextmenü ist für [Image Viewer](/de/fine-reader/engine/visual-components-reference/imageviewer), [Zoom Viewer](/de/fine-reader/engine/visual-components-reference/zoomviewer), [Text Editor](/de/fine-reader/engine/visual-components-reference/texteditor) und [Document Viewer](/de/fine-reader/engine/visual-components-reference/documentviewer) verfügbar. Das Kontextmenü jeder Komponente besteht aus einem Standardteil und einem benutzerdefinierten Teil:

* Der Standardteil des Kontextmenüs ist der Teil, der in der Komponente standardmäßig angezeigt wird. Dieser Teil kann nicht geändert werden. Sie können ihn nur ein- oder ausblenden.
* Der benutzerdefinierte Teil des Kontextmenüs kann bearbeitet werden. Standardmäßig ist er leer. Sie können diesem Teil des Kontextmenüs beliebige für die Komponente verfügbare Standardbefehle oder beliebige benutzerdefinierte Befehle hinzufügen. Der benutzerdefinierte Teil des Kontextmenüs wird immer nach dem Standardteil angezeigt. Er kann außerdem aktiviert oder deaktiviert werden.

<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">
  ## Verfügbare Befehle verwalten
</div>

Die vollständige Liste der in visuellen Komponenten verfügbaren Befehle finden Sie in den Konstanten der Aufzählung [MenuItemEnum](/de/fine-reader/engine/visual-components-reference/enumerations/menuitemenum). Die Unterobjekte [Commands](/de/fine-reader/engine/visual-components-reference/supplementary-objects/commands) der Objekte [ImageViewer](/de/fine-reader/engine/visual-components-reference/imageviewer), [ZoomViewer](/de/fine-reader/engine/visual-components-reference/zoomviewer), [DocumentViewer](/de/fine-reader/engine/visual-components-reference/documentviewer) und [TextEditor](/de/fine-reader/engine/visual-components-reference/texteditor) bieten Zugriff auf die in den einzelnen Komponenten verfügbaren Befehle.

Die Befehle können wie folgt aufgerufen werden:

* durch Auswählen eines Eintrags in einem Kontextmenü,
* durch Klicken auf eine Schaltfläche in der Symbolleiste,
* durch Drücken einer Tastenkombination,
* durch Verwenden der Methode [DoCommand](/de/fine-reader/engine/visual-components-reference/supplementary-objects/commands/docommand-method) des Unterobjekts Commands einer Komponente.

Allerdings stehen nicht alle diese Methoden für jeden Befehl zur Verfügung. Eine Liste der verfügbaren Befehle und der Möglichkeiten, wie sie in den einzelnen Komponenten verwendet werden können, finden Sie hier:

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

Um einen Befehl zu aktivieren oder zu deaktivieren, verwenden Sie die Methode [EnableCommand](/de/fine-reader/engine/visual-components-reference/supplementary-objects/commands/enablecommand-method) bzw. [DisableCommand](/de/fine-reader/engine/visual-components-reference/supplementary-objects/commands/disablecommand-method) des Objekts Commands. Wenn Sie einen Befehl deaktivieren, funktioniert keine der für diesen Befehl verfügbaren Aufrufmethoden.

<div id="adding-predefined-commands-to-the-toolbar">
  ## Vordefinierte Befehle zur Symbolleiste hinzufügen
</div>

Einige der vordefinierten Befehle sind standardmäßig in der Symbolleiste verfügbar, andere können vom Entwickler zur Symbolleiste einer Komponente hinzugefügt werden. Eine Übersicht der verfügbaren vordefinierten Befehle für die einzelnen Komponenten finden Sie in den entsprechenden Listen.

So fügen Sie einen vordefinierten Befehl zu einer Symbolleiste hinzu oder entfernen ihn:

1. Rufen Sie das Objekt [Toolbar](/de/fine-reader/engine/visual-components-reference/supplementary-objects/toolbar) über die Eigenschaft Toolbar der Komponente ab.
2. Fügen Sie den Befehl mit der Methode [InsertAt](/de/fine-reader/engine/visual-components-reference/supplementary-objects/toolbar/insertat-method) des Objekts Toolbar an der gewünschten Position in die Symbolleiste ein, oder entfernen Sie ihn mit der Methode [Delete](/de/fine-reader/engine/visual-components-reference/supplementary-objects/toolbar/delete-method) oder [DeleteAt](/de/fine-reader/engine/visual-components-reference/supplementary-objects/toolbar/deleteat-method).

<Note>
  Sie können die Schaltflächen auf der Symbolleiste mithilfe von Trennlinien gruppieren. Verwenden Sie dazu die Methode InsertAt des Objekts Toolbar mit der Konstante MI\_Separator als Parameter.
</Note>

<Accordion title="C#-Code">
  ```csharp theme={null}
  // Wir fügen den vordefinierten Befehl MI_InvertImage am Anfang der Symbolleiste von Image Viewer hinzu
  private FineReaderVisualComponents.AxImageViewer imageViewer;
  imageViewer.Toolbar.InsertAt(FineReaderVisualComponents.MenuItemEnum.MI_InvertImage, 0);
  ```
</Accordion>

Nachdem der vordefinierte Befehl hinzugefügt wurde, kann er in der Anwendung verwendet werden. ABBYY FineReader Engine verarbeitet die entsprechenden Ereignisse. Sie können den Handler mithilfe des Ereignisses [OnCommand](/de/fine-reader/engine/visual-components-reference/supplementary-objects/icommandevents/oncommand-method) der Schnittstelle [ICommandEvents](/de/fine-reader/engine/visual-components-reference/supplementary-objects/icommandevents) um zusätzliche Funktionalität erweitern.

<div id="adding-predefined-commands-to-the-context-menu">
  ## Vordefinierte Befehle zum Kontextmenü hinzufügen
</div>

Einige der vordefinierten Befehle sind im Kontextmenü standardmäßig verfügbar — diese Befehle bilden den Standardteil des Kontextmenüs. Alle anderen in der Komponente verfügbaren vordefinierten Befehle können dem benutzerdefinierten Teil des Kontextmenüs hinzugefügt werden.

So fügen Sie dem benutzerdefinierten Teil eines Kontextmenüs einen vordefinierten Befehl hinzu oder entfernen ihn:

1. Rufen Sie das Objekt [PopupMenu](/de/fine-reader/engine/visual-components-reference/supplementary-objects/popupmenu) über die Eigenschaft PopupMenu der Komponente ab.
2. Deaktivieren Sie bei Bedarf den gesamten Standardteil des Kontextmenüs mit der Eigenschaft [StandardMenuEnabled](/de/fine-reader/engine/visual-components-reference/supplementary-objects/popupmenu#standardmenuenabled) des Objekts PopupMenu. Standardmäßig ist der Standardteil aktiviert.
3. Aktivieren Sie den benutzerdefinierten Teil des Kontextmenüs mit der Eigenschaft [CustomMenuEnabled](/de/fine-reader/engine/visual-components-reference/supplementary-objects/popupmenu#custommenuenabled) des Objekts PopupMenu.
4. Fügen Sie mit der Methode [InsertAt](/de/fine-reader/engine/visual-components-reference/supplementary-objects/popupmenu/insertat-method) des Objekts PopupMenu einen Befehl an der ausgewählten Position im benutzerdefinierten Teil des Kontextmenüs ein oder entfernen Sie ihn mit der Methode [Delete](/de/fine-reader/engine/visual-components-reference/supplementary-objects/toolbar/delete-method) oder [DeleteAt](/de/fine-reader/engine/visual-components-reference/supplementary-objects/toolbar/deleteat-method).

<Note>
  Sie können die Elemente im benutzerdefinierten Teil des Kontextmenüs mithilfe von Trennlinien gruppieren. Verwenden Sie dazu die Methode InsertAt des Objekts PopupMenu mit der Konstante MI\_Separator als Parameter.
</Note>

<Accordion title="C#-Code">
  ```csharp theme={null}
  // Wir fügen den vordefinierten Befehl MI_InvertImage am Anfang des benutzerdefinierten Teils des Kontextmenüs von Image Viewer hinzu
  private FineReaderVisualComponents.AxImageViewer imageViewer;
  imageViewer.PopupMenu.StandardMenuEnabled = false;
  imageViewer.PopupMenu.CustomMenuEnabled = true;
  imageViewer.PopupMenu.InsertAt(FineReaderVisualComponents.MenuItemEnum.MI_InvertImage, 0);
  ```
</Accordion>

Nachdem der vordefinierte Befehl hinzugefügt wurde, kann er in der Anwendung verwendet werden. ABBYY FineReader Engine verarbeitet die entsprechenden Ereignisse. Sie können den Handler mithilfe des Ereignisses [OnCommand](/de/fine-reader/engine/visual-components-reference/supplementary-objects/icommandevents/oncommand-method) der Schnittstelle [ICommandEvents](/de/fine-reader/engine/visual-components-reference/supplementary-objects/icommandevents) um zusätzliche Funktionalität ergänzen.

<div id="creating-user-defined-commands">
  ## Erstellen benutzerdefinierter Befehle
</div>

Sie können auch eigene Befehle erstellen und sie einer Symbolleiste oder einem Kontextmenü hinzufügen. Die Aufzählung [MenuItemEnum](/de/fine-reader/engine/visual-components-reference/enumerations/menuitemenum) enthält die Konstanten (MI\_CustomCommand1, ... MI\_CustomCommand10), mit denen Sie eigene Befehle definieren können.

Bevor Sie einen benutzerdefinierten Befehl hinzufügen, müssen Sie ein Symbol (16х16 px) für die entsprechende Schaltfläche in der Symbolleiste erstellen und einen Text für den Befehl festlegen. Anschließend sollten Sie den Befehl in der Komponente registrieren und ihn der Symbolleiste oder dem benutzerdefinierten Teil des Kontextmenüs hinzufügen. Weitere Details finden Sie unten.

So fügen Sie einen Benutzerbefehl hinzu:

1. Registrieren Sie den Befehl in der Komponente. Verwenden Sie dazu die Methode [RegisterUserCommand](/de/fine-reader/engine/visual-components-reference/supplementary-objects/commands/registerusercommand-method) des Unterobjekts [Commands](/de/fine-reader/engine/visual-components-reference/supplementary-objects/commands) der Komponente und übergeben Sie eine der Konstanten MI\_CustomCommand1, ... MI\_CustomCommand10 als Parameter. Außerdem sollten Sie in den Parametern dieser Methode den Pfad zum Symbol, den Text des Befehls und das Tastenkürzel angeben.

<Note>
  Ein Tastenkürzel besteht aus zwei Teilen: dem virtuellen Tastencode und den Tastenmodifikatoren (Ctrl, Alt, Shift). Wenn Sie ein Tastenkürzel an eine Methode von FineReader Engine übergeben, sollte es dasselbe Format wie der Rückgabewert (LRESULT) der Windows-Funktion [SendMessage](http://msdn.microsoft.com/en-us/library/ms644950\(VS.85\).aspx) für die gesendete Nachricht [HKM\_GETHOTKEY](http://msdn.microsoft.com/en-us/library/windows/desktop/bb775235\(v=vs.85\).aspx) haben. Um den Wert des Tastenkürzels in diesem Format zu erhalten, müssen Sie den virtuellen Tastencode des Tastenkürzels in das Low-Order-Byte des Werts und den Tastenmodifikator, der die Tasten der Tastenkombination festlegt, in das High-Order-Byte packen. Wenn Sie für den Befehl kein Tastenkürzel benötigen, übergeben Sie 0 als Parameter der Methode.
</Note>

2. Implementieren Sie das Ereignis [OnCommand](/de/fine-reader/engine/visual-components-reference/supplementary-objects/icommandevents/oncommand-method) der Schnittstelle [ICommandEvents](/de/fine-reader/engine/visual-components-reference/supplementary-objects/icommandevents), damit das Ereignis für den neuen Befehl verarbeitet wird. Siehe [Arbeiten mit verknüpfbaren Objekten](/de/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/working-with-connectable-objects).
3. Fügen Sie den Befehl der Symbolleiste oder dem benutzerdefinierten Teil des Kontextmenüs der Komponente hinzu. Das Vorgehen ist dasselbe wie bei vordefinierten Befehlen einer Symbolleiste oder eines Kontextmenüs.

Danach kann der Befehl in Ihrer Anwendung verwendet werden.

<Accordion title="C# code">
  ```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;
  // Erstellen des Tastenkürzelwerts
  private int makeWord(int keyCode, int modifierFlags)
  {
   return (int)((uint)((byte)(keyCode)) | ((uint)((byte)(modifierFlags)) << 8));
  }
  // Hinzufügen benutzerdefinierter Befehle
  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);
   …
  }
  // Handler für das OnCommand-Ereignis des Image Viewer
  private void imageViewer_OnCommand( FineReaderVisualComponents.MenuItemEnum command, out bool cancel ){
   if( command == FineReaderVisualComponents.MenuItemEnum.MI_CustomCommand1 )
   {
    ...
   }
  }
  ```
</Accordion>

So entfernen Sie einen zuvor hinzugefügten Benutzerbefehl:

1. Entfernen Sie ihn aus der Symbolleiste oder aus dem benutzerdefinierten Teil des Kontextmenüs. Das Vorgehen ist dasselbe wie bei vordefinierten Befehlen einer Symbolleiste oder eines Kontextmenüs.
2. Heben Sie die Registrierung des Befehls auf. Verwenden Sie dazu die Methode [UnregisterUserCommand](/de/fine-reader/engine/visual-components-reference/supplementary-objects/commands/unregisterusercommand-method) des Unterobjekts Commands der Komponente.

<div id="see-also">
  ## Siehe auch
</div>

[Erstellen einer Anwendung mit grafischer Benutzeroberfläche](/de/fine-reader/engine/guided-tour/advanced-techniques/using-gui-elements/creating-an-application-with-gui)
