PDFium Delphi Component Docs

Metode FormFieldZOrderAt

Komponen: TPdfView  ·  Unit: PDFium
Mengembalikan urutan tumpukan bidang AcroForm teratas yang terkena pada piksel tampilan (X, Y), atau -1

Syntax

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

Parameters

X, YInteger. Koordinat piksel relatif terhadap kontrol penampil, koordinat yang sama yang diterima event mouse

Return Value

Integer. Z-order bidang formulir pada titik hasil hit test, atau -1 ketika tidak ada bidang formulir yang terkena atau pengujian tidak dapat berjalan

Description

Menjalankan hit-test piksel layar terhadap anotasi widget AcroForm halaman saat ini dan melaporkan posisi tumpukan yang paling atas. Penampil pertama mengonversi (X, Y) ke koordinat ruang halaman dengan DeviceToPage, yang memperhitungkan Zoom, Rotation, mode tampilan, padding halaman, dan offset scroll, lalu memanggil FPDFPage_FormFieldZOrderAtPoint milik PDFium dengan handle formulir halaman

Nilai kembalian yang lebih besar berarti widget ditumpuk lebih dekat ke penampil, artinya digambar di atas bidang dengan nilai lebih kecil. Z-order di sini adalah urutan hit-test teratas dari tumpukan anotasi, bukan indeks widget, jadi perlakukan nilainya sebagai angka perbandingan opaque

Ketika widget formulir dan anotasi link tumpang-tindih, bandingkan hasil ini dengan LinkZOrderAt: kedua nilai berasal dari urutan tumpukan anotasi yang sama, dan yang lebih tinggi mengidentifikasi anotasi yang oleh PDFium dianggap terkena pada piksel itu

Padanan TPdf TPdf.FormFieldZOrderAtPoint(X, Y: Double) membungkus fungsi PDFium yang sama. Ia menerima koordinat ruang halaman dalam Double secara langsung dan memunculkan exception ketika tidak ada halaman aktif atau lingkungan formulir belum diinisialisasi, sedangkan pembungkus TPdfView gagal dengan lembut dan mengembalikan -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