DispatchInputEvent

Moduli, interazione, input

Descrizione

TPDFlibFormSession

HitTest

Il dispatcher traccia i widget entrati e premuti così le azioni di annotazione /E, /X, /D e /U seguono le regole di ordine dei trigger del PDF

Un'azione di rilascio del puntatore e l'attivazione predefinita avvengono solo quando il pulsante principale è stato premuto su un widget e rilasciato dentro la stessa area di ingresso ininterrotta

fiekPointerCancel pulisce la cattura senza dispedere /U e va inviato quando l'host perde la cattura del puntatore

La gestione della tastiera include il percorso di focus Tab e Maiusc+Tab, Backspace e Canc sicuri per grafemi, il movimento di selezione direzionata, il movimento Su e Giù consapevole delle righe, Home ed End, Enter ed Escape dei campi di testo, l'attivazione dei pulsanti e le scorciatoie Control o Meta per selezionare tutto, undo e redo

fiekTextInput accetta input WideString completo così gli host possono inoltrare testo Unicode composto o supplementare senza ridurlo a codici di tasti di piattaforma

I delta della rotella verticale sono passi logici normalizzati piuttosto che costanti del sistema operativo; i valori positivi selezionano elementi di scelta precedenti e i negativi elementi successivi

Dichiarazione

function DispatchInputEvent(
  const InputEvent: TPDFlibFormInputEvent;
  out InputResult: TPDFlibFormInputResult): Integer;

Parametri

InputEventTipo di evento e campi richiesti da quel tipo
InputResultEsito della gestione più lo stato risultante di focus, hover, pressione, valore e selezione

Campi dell'evento

Spostamento, pressione, rilascio e doppio clic del puntatoreImpostare Page, X e Y; pressione e rilascio impostano anche Button
Uscita e annullamento del puntatoreNon è richiesta alcuna coordinata
RotellaImpostare Page, X, Y e WheelDeltaX o WheelDeltaY normalizzati
Pressione e rilascio dei tastiImpostare Key ed eventuali Modifiers attivi
Input di testoImpostare Text al testo composto da inserire o sostituire

Valore restituito

Restituisce 1 quando la struttura dell'evento è valida e viene accettata per l'invio, inclusi gli eventi che restano deliberatamente non gestiti perché l'host possa applicare il proprio fallback Restituisce

0 per un evento non valido, coordinate del puntatore non valide, una sessione scollegata o un invio di input ricorsivo Usare

InputResult.Handled per decidere se è ancora necessario il fallback dell'host

Esempio

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;

Vedere anche

TPDFlibFormInputEvent, TPDFlibFormInputResult, TPDFlibFormSession, HitTest, FocusNext