function FormFieldZOrderAt(X, Y: Integer): Integer;
| X, Y | Integer. مختصات پیکسلی نسبت به کنترل بیننده؛ همان مختصاتی که رخدادهای ماوس میگیرند |
یک پیکسل صفحهنمایش را با حاشیهنویسیهای ویجت 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- برمیگرداند
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;