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