DispatchInputEvent
Formulare, Interaktion, Eingabe
Beschreibung
TPDFlibFormSession
HitTest
Der Dispatcher verfolgt betretene und gedrückte Widgets, sodass Anmerkungsaktionen /E, /X, /D und /U den PDF-Trigger-Reihenfolgeregeln folgen
Eine Pointer-up-Aktion und Standardaktivierung treten nur auf, wenn die primäre Taste auf einem Widget gedrückt und innerhalb desselben ununterbrochenen Betreten-Bereichs losgelassen wurde
fiekPointerCancel löscht die Erfassung, ohne /U zu versenden, und sollte gesendet werden, wenn der Host die Zeigererfassung verliert
Die Tastaturverarbeitung umfasst Tab- und Umschalt+Tab-Fokusdurchlauf, graphemsicheres Backspace und Delete, gerichtete Auswahlbewegung, zeilenbewusstes Auf- und Abbewegen, Home und End, Textfeld-Enter und Escape, Knopfaktivierung sowie Strg- oder Meta-Kürzel für alles auswählen, Undo und Redo
fiekTextInput akzeptiert vollständige WideString-Eingabe, sodass Hosts zusammengesetzten oder supplementären Unicode-Text weiterleiten können, ohne ihn auf Plattform-Tastencodes zu reduzieren
Vertikale Mausrad-Deltas sind normalisierte logische Schritte statt Betriebssystemkonstanten; positive Werte wählen frühere Auswahlelemente, negative Werte spätere Elemente
Deklaration
function DispatchInputEvent(
const InputEvent: TPDFlibFormInputEvent;
out InputResult: TPDFlibFormInputResult): Integer;
Parameter
| InputEvent | Ereignisart und die von dieser Art benötigten Felder |
|---|---|
| InputResult | Verarbeitungsergebnis samt resultierendem Fokus-, Hover-, Druck-, Wert- und Auswahlzustand |
Ereignisfelder
| Zeiger bewegen, drücken, loslassen und Doppelklick | Page, X und Y setzen; Drücken und Loslassen setzen zudem Button |
|---|---|
| Zeiger verlassen und abbrechen | Es sind keine Koordinaten erforderlich |
| Mausrad | Page, X, Y und normalisiertes WheelDeltaX oder WheelDeltaY setzen |
| Taste drücken und loslassen | Key und etwaige aktive Modifiers setzen |
| Texteingabe | Text auf den einzufügenden oder ersetzenden zusammengesetzten Text setzen |
Rückgabewert
Gibt 1 zurück, wenn die Ereignisstruktur gültig ist und zur Weiterleitung akzeptiert wird, einschließlich Ereignissen, die bewusst unbehandelt bleiben, damit der Host seinen eigenen Fallback anwenden kann
Gibt
0 für ein ungültiges Ereignis, ungültige Zeigerkoordinaten, eine abgekoppelte Sitzung oder rekursive Eingabeweiterleitung zurück
Verwenden Sie
InputResult.Handled, um zu entscheiden, ob ein Host-Fallback noch erforderlich ist
Beispiel
var
InputEvent: TPDFlibFormInputEvent;
InputResult: TPDFlibFormInputResult;
begin
InputEvent.Kind := fiekPointerDown;
InputEvent.Page := PageNumber;
InputEvent.X := PageX;
InputEvent.Y := PageY;
InputEvent.Button := fibPrimary;
InputEvent.Modifiers := [fimShift];
Session.DispatchInputEvent(InputEvent, InputResult);
InputEvent.Kind := fiekTextInput;
InputEvent.Text := ComposedText;
Session.DispatchInputEvent(InputEvent, InputResult);
end;
Siehe auch
TPDFlibFormInputEvent, TPDFlibFormInputResult, TPDFlibFormSession, HitTest, FocusNext