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