DispatchInputEvent

Formulários, interação, entrada

Descrição

Despacha um evento de ponteiro, roda, teclado ou entrada de texto neutro em relação à framework de GUI pela TPDFlibFormSession atual

Coordenadas de ponteiro usam o mesmo sistema de coordenadas visual rotacionado do CropBox que HitTest, com a origem no canto superior esquerdo visual

O dispatcher rastreia Widgets com entrada e pressão para que as ações de anotação /E, /X, /D e /U sigam as regras de ordenação de gatilhos do PDF

A ação de soltar o ponteiro e a ativação padrão ocorrem apenas quando o botão primário foi pressionado sobre um Widget e solto dentro da mesma área de entrada ininterrupta

fiekPointerCancel limpa a captura sem despachar /U e deve ser enviado quando o hospedeiro perde a captura do ponteiro

O tratamento de teclado inclui navegação de foco com Tab e Shift+Tab, Backspace e Delete seguros para grafemos, movimento direcional de seleção, movimento para cima e para baixo consciente de linhas, Home e End, Enter e Escape de campo de texto, ativação de botão e atalhos Control ou Meta para selecionar tudo, desfazer e refazer

fiekTextInput aceita entrada WideString completa para que os hospedeiros possam encaminhar texto Unicode composto ou suplementar sem reduzi-lo a códigos de tecla da plataforma

Deltas de roda vertical são passos lógicos normalizados, não constantes do sistema operacional; valores positivos selecionam itens de escolha anteriores e valores negativos selecionam itens posteriores

Declaração

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

Parâmetros

InputEventTipo de evento e os campos exigidos por esse tipo
InputResultResultado do tratamento mais o estado resultante de foco, sobreposição, pressão, valor e seleção

Campos do evento

Movimento, pressão, soltura e duplo clique do ponteiroDefina Page, X e Y; pressão e soltura também definem Button
Saída e cancelamento do ponteiroNenhuma coordenada é necessária
RodaDefina Page, X, Y e WheelDeltaX ou WheelDeltaY normalizado
Pressionar e soltar teclaDefina Key e quaisquer Modifiers ativos
Entrada de textoDefina Text com o texto composto a inserir ou substituir

Valor retornado

Retorna 1 quando a estrutura do evento é válida e aceita para despacho, incluindo eventos que deliberadamente permanecem sem tratamento para que o host possa aplicar seu próprio fallback Retorna

0 para um evento inválido, coordenadas de ponteiro inválidas, uma sessão desanexada ou despacho de entrada recursivo Use

InputResult.Handled para decidir se o fallback do host ainda é necessário

Exemplo

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;

Veja também

TPDFlibFormInputEvent, TPDFlibFormInputResult, TPDFlibFormSession, HitTest, FocusNext