DispatchInputEvent

폼, 상호 작용, 입력

설명

GUI 프레임워크 중립적인 포인터, 휠, 키보드 또는 텍스트 입력 이벤트 하나를 현재 TPDFlibFormSession을 통해 디스패치합니다

포인터 좌표는 HitTest와 같은 회전된 시각 CropBox 좌표계를 쓰며, 원점은 시각 왼쪽 위입니다

디스패처는 진입한 위젯과 누른 위젯을 추적하므로 주석 /E, /X, /D, /U 액션이 PDF 트리거 순서 규칙을 따릅니다

포인터 업 액션과 기본 활성화는 기본 버튼이 위젯에서 눌린 뒤 같은 끊김 없는 진입 영역 안에서 놓였을 때만 발생합니다

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