DispatchInputEvent

Формы, взаимодействие, ввод

Описание

Передает одно не зависящее от GUI-фреймворка событие указателя, колеса, клавиатуры или текстового ввода через текущую TPDFlibFormSession

Координаты указателя используют ту же повернутую визуальную систему координат CropBox, что и HitTest, с началом в визуальном левом верхнем углу

/E Координаты указателя используют ту же повернутую визуальную систему координат CropBox, что и /X, с началом в визуальном левом верхнем углу Диспетчер отслеживает введенные и нажатые виджеты, поэтому действия аннотаций /D, /U,

Действие отпускания указателя и активация по умолчанию происходят только когда основная кнопка была нажата на виджете и отпущена внутри той же непрерывной зоны вхождения

fiekPointerCancel очищает захват, не отправляя /U, и должен посылаться, когда хост теряет захват указателя

Обработка клавиатуры включает обход фокуса Tab и Shift+Tab, безопасные для графем Backspace и Delete, направленное перемещение выделения, учитывающее строки движение Up и Down, Home и End, Enter и Escape текстового поля, активацию кнопок и сочетания Control или Meta для выделения всего, отмены и повтора

fiekTextInput принимает полный ввод WideString, поэтому хосты могут пересылать составной или дополнительный текст Unicode, не сводя его к кодам клавиш платформы

Вертикальные дельты колеса — нормализованные логические шаги, а не константы операционной системы; положительные значения выбирают более ранние элементы выбора, отрицательные — более поздние

Объявление

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

Параметры

InputEventТип события и поля, требуемые этим типом
InputResultИтог обработки плюс результирующие состояния фокуса, наведения, нажатия, значения и выделения

Поля события

Перемещение, нажатие, отпускание и двойной щелчок указателяЗадайте Page, X и Y; нажатие и отпускание также задают Button
Уход и отмена указателяКоординаты не требуются
КолесоЗадайте Page, X, Y и нормализованное WheelDeltaX или WheelDeltaY
Нажатие и отпускание клавишиЗадайте Key и любые активные Modifiers
Текстовый вводЗадайте Text равным составному тексту для вставки или замены

Возвращаемое значение

Возвращает 1, когда структура события допустима и принята к диспетчеризации, включая события, намеренно остающиеся необработанными, чтобы хост мог применить собственную резервную обработку Возвращает

0 для недопустимого события, недопустимых координат указателя, отсоединенного сеанса или рекурсивной диспетчеризации ввода Используйте

InputResult.Handled, чтобы решить, требуется ли еще резервная обработка хоста

Пример

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;

См. также

TPDFlibFormInputEvent, TPDFlibFormInputResult, TPDFlibFormSession, HitTest, FocusNext