Zum Hauptinhalt springen
Visuelle Komponenten sind in FRE for Windows implementiert.
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, Text Editor und Document Viewer 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. Toolbar Das Kontextmenü ist für Image Viewer, Zoom Viewer, Text Editor und Document Viewer 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.
PopupMenu

Verfügbare Befehle verwalten

Die vollständige Liste der in visuellen Komponenten verfügbaren Befehle finden Sie in den Konstanten der Aufzählung MenuItemEnum. Die Unterobjekte Commands der Objekte ImageViewer, ZoomViewer, DocumentViewer und 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 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: Um einen Befehl zu aktivieren oder zu deaktivieren, verwenden Sie die Methode EnableCommand bzw. DisableCommand des Objekts Commands. Wenn Sie einen Befehl deaktivieren, funktioniert keine der für diesen Befehl verfügbaren Aufrufmethoden.

Vordefinierte Befehle zur Symbolleiste hinzufügen

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 über die Eigenschaft Toolbar der Komponente ab.
  2. Fügen Sie den Befehl mit der Methode InsertAt des Objekts Toolbar an der gewünschten Position in die Symbolleiste ein, oder entfernen Sie ihn mit der Methode Delete oder DeleteAt.
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.
// 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);
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 der Schnittstelle ICommandEvents um zusätzliche Funktionalität erweitern.

Vordefinierte Befehle zum Kontextmenü hinzufügen

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 über die Eigenschaft PopupMenu der Komponente ab.
  2. Deaktivieren Sie bei Bedarf den gesamten Standardteil des Kontextmenüs mit der Eigenschaft StandardMenuEnabled des Objekts PopupMenu. Standardmäßig ist der Standardteil aktiviert.
  3. Aktivieren Sie den benutzerdefinierten Teil des Kontextmenüs mit der Eigenschaft CustomMenuEnabled des Objekts PopupMenu.
  4. Fügen Sie mit der Methode InsertAt 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 oder DeleteAt.
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.
// 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);
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 der Schnittstelle ICommandEvents um zusätzliche Funktionalität ergänzen.

Erstellen benutzerdefinierter Befehle

Sie können auch eigene Befehle erstellen und sie einer Symbolleiste oder einem Kontextmenü hinzufügen. Die Aufzählung 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 des Unterobjekts 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.
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 für die gesendete Nachricht HKM_GETHOTKEY 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.
  1. Implementieren Sie das Ereignis OnCommand der Schnittstelle ICommandEvents, damit das Ereignis für den neuen Befehl verarbeitet wird. Siehe Arbeiten mit verknüpfbaren Objekten.
  2. 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.
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 )
 {
  ...
 }
}
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 des Unterobjekts Commands der Komponente.

Siehe auch

Erstellen einer Anwendung mit grafischer Benutzeroberfläche