PDFium Delphi Component Docs

FormFieldZOrderAt 메서드

컴포넌트: TPdfView  ·  유닛: PDFium
뷰 픽셀 (X, Y)에서 히트한 가장 위의 AcroForm 필드의 쌓임 순서를 반환하고 없으면 -1을 반환합니다

Syntax

function FormFieldZOrderAt(X, Y: Integer): Integer;

Parameters

X, YInteger. 뷰어 컨트롤 기준 픽셀 좌표로, 마우스 이벤트가 받는 것과 같은 좌표입니다

Return Value

Integer. 히트 테스트한 지점의 양식 필드 z-order이며, 양식 필드에 히트하지 않았거나 테스트를 실행할 수 없으면 -1입니다

Description

화면 픽셀을 현재 페이지의 AcroForm 위젯 어노테이션과 히트 테스트하고 가장 위에 있는 것의 쌓임 위치를 보고합니다. 뷰어는 먼저 DeviceToPage로 (X, Y)를 페이지 공간 좌표로 변환하는데, 이 변환은 Zoom, Rotation, 표시 모드, 페이지 여백, 스크롤 오프셋을 반영합니다. 그런 다음 페이지의 폼 핸들로 PDFium의 FPDFPage_FormFieldZOrderAtPoint를 호출합니다

반환값이 클수록 위젯이 뷰어 쪽에 가깝게 쌓여 있다는 뜻입니다. 즉 값이 작은 필드 위에 그려집니다. 여기서 z-order는 어노테이션 스택의 최상위 히트 테스트 순서이지 위젯 인덱스가 아니므로, 값을 불투명한 비교용 숫자로 취급하세요

폼 위젯과 링크 어노테이션이 겹치는 곳에서는 이 결과를 LinkZOrderAt과 비교하세요. 두 값은 같은 어노테이션 쌓임 순서에서 나오며, 더 높은 쪽이 그 픽셀에서 PDFium이 히트한 것으로 보는 어노테이션을 가리킵니다

TPdf 쪽 대응물인 TPdf.FormFieldZOrderAtPoint(X, Y: Double)는 같은 PDFium 함수를 감쌉니다. 페이지 공간 좌표를 Double로 바로 받고 페이지가 활성 상태가 아니거나 폼 환경이 초기화되지 않으면 예외를 발생시키는 반면, TPdfView 래퍼는 부드럽게 실패하고 -1을 반환합니다

Remarks

Example

procedure TForm1.PdfView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  FieldZ, LinkZ: Integer;
begin
  FieldZ := PdfView1.FormFieldZOrderAt(X, Y);
  LinkZ := PdfView1.LinkZOrderAt(X, Y);
  if (FieldZ >= 0) and (FieldZ > LinkZ) then
    Caption := 'form field wins the hit';
end;

See Also

LinkZOrderAt, HasFormFieldAt, FormFieldInfoAt, FormFieldTypeAt, DeviceToPage, AllowFormEvents