PDFium Delphi Component Docs

FormFieldZOrderAt متد

کامپوننت: TPdfView  ·  واحد: PDFium
ترتیب چیدمان بالاترین فیلد AcroForm برخوردکرده در پیکسل (X, Y) نمایشگر را برمی‌گرداند، یا 1-

Syntax

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

Parameters

X, YInteger. مختصات پیکسلی نسبت به کنترل بیننده؛ همان مختصاتی که رخدادهای ماوس می‌گیرند

Return Value

Integer. ترتیب z فیلد فرم در نقطهٔ تست‌شده، یا 1- وقتی هیچ فیلد فرمی برخورد نکرده یا تست نمی‌تواند اجرا شود

Description

یک پیکسل صفحه‌نمایش را با حاشیه‌نویسی‌های ویجت AcroForm صفحهٔ فعلی hit-test می‌کند و موقعیت چیدمانی بالاترین‌شان را گزارش می‌دهد. بیننده اول (X, Y) را با DeviceToPage — که Zoom، Rotation، حالت نمایش، padding صفحه و آفست اسکرول را در نظر می‌گیرد — به مختصات فضای صفحه تبدیل می‌کند و سپس FPDFPage_FormFieldZOrderAtPoint را با دستهٔ فرم صفحه صدا می‌زند

مقدار بازگشتی بزرگ‌تر یعنی ویجت نزدیک‌تر به بیننده چیده شده، یعنی روی فیلدهایی با مقادیر کوچک‌تر رسم شده. z-order اینجا ترتیب hit-test بالاترینِ پشتهٔ حاشیه‌نویسی است، نه اندیس ویجت؛ پس مقادیر را اعداد مقایسه‌ای غیرشفاف ببینید

جایی که یک ویجت فرم و یک حاشیه‌نویسی لینک هم‌پوشانی دارند، این نتیجه را با 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