PDFium Delphi Component Docs

מתודת FormFieldZOrderAt

Component: TPdfView  ·  Unit: PDFium
מחזירה את סדר הערימה של שדה ה-AcroForm העליון ביותר שנפגע בפיקסל (X, Y) של התצוגה, או -1

Syntax

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

Parameters

X, YInteger. קואורדינטות פיקסלים ביחס לפקד המציג, אותן קואורדינטות שאירועי העכבר מקבלים

Return Value

Integer. סדר ה-z של שדה הטופס בנקודה שנבדקה, או -1 כאשר לא נפגע שדה טופס או כאשר הבדיקה אינה יכולה לרוץ

Description

מבצע hit testing של פיקסל מסך מול הערות ה-widget של ה-AcroForm בעמוד הנוכחי ומדווח על מיקום הערימה של העליון שבהם. המציג ממיר תחילה את (X, Y) לקואורדינטות מרחב עמוד באמצעות DeviceToPage, שמביאה בחשבון את Zoom, Rotation, מצב התצוגה, הריפוד של העמוד והיסט הגלילה, ואז קורא ל-FPDFPage_FormFieldZOrderAtPoint של PDFium עם ידית הטופס של העמוד

ערך החזרה גדול יותר פירושו שה-widget מוערם קרוב יותר למציג, כלומר מצויר מעל שדות בעלי ערכים קטנים יותר. סדר ה-z כאן הוא סדר ה-hit testing העליון של ערימת ההערות, ולא אינדקס widget, ולכן יש להתייחס לערכים כמספרי השוואה אטומים

כאשר widget של טופס והערת קישור חופפים, השוו את התוצאה הזו עם 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