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
| InputEvent | Tipo de evento e os campos exigidos por esse tipo |
|---|---|
| InputResult | Resultado 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 ponteiro | Defina Page, X e Y; pressão e soltura também definem Button |
|---|---|
| Saída e cancelamento do ponteiro | Nenhuma coordenada é necessária |
| Roda | Defina Page, X, Y e WheelDeltaX ou WheelDeltaY normalizado |
| Pressionar e soltar tecla | Defina Key e quaisquer Modifiers ativos |
| Entrada de texto | Defina 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