PDFium Delphi Component Docs

μέθοδος FormFieldZOrderAt

Στοιχείο: TPdfView  ·  Μονάδα: PDFium
Επιστρέφει τη σειρά στοίβαξης του ανώτατου πεδίου AcroForm που χτυπήθηκε στο pixel (X, Y) της προβολής, ή -1

Syntax

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

Parameters

X, YInteger. Συντεταγμένες pixel σε σχέση με το control της προβολής, οι ίδιες συντεταγμένες που λαμβάνουν τα συμβάντα του ποντικιού

Return Value

Integer. Το z-order του πεδίου φόρμας στο hit-test σημείο, ή -1 όταν κανένα πεδίο φόρμας δεν χτυπιέται ή ο έλεγχος δεν μπορεί να εκτελεστεί

Description

Κάνει hit-testing ένα pixel οθόνης στις σχολίες widget AcroForm της τρέχουσας σελίδας και αναφέρει τη θέση στοίβαξης του ανώτατου. Η προβολή πρώτα μετατρέπει το (X, Y) σε συντεταγμένες χώρου σελίδας με το DeviceToPage, που λαμβάνει υπόψη το Zoom, την Rotation, τη λειτουργία εμφάνισης, το padding σελίδας και την μετατόπιση κύλισης, και μετά καλεί το FPDFPage_FormFieldZOrderAtPoint του PDFium με το handle φόρμας της σελίδας

Μεγαλύτερη τιμή επιστροφής σημαίνει ότι το widget είναι στοιβαγμένο πιο κοντά στην προβολή, δηλαδή σχεδιασμένο πάνω από πεδία με μικρότερες τιμές. Το z-order εδώ είναι η σειρά hit-testing του ανώτατου στη στοίβα σχολιών, όχι δείκτης widget, οπότε αντιμετωπίστε τις τιμές ως αδιαφανείς αριθμούς σύγκρισης

Όπου ένα widget φόρμας και μια σχολία συνδέσμου επικαλύπτονται, συγκρίνετε αυτό το αποτέλεσμα με το LinkZOrderAt: και οι δύο τιμές προέρχονται από την ίδια σειρά στοίβαξης σχολιών, και η μεγαλύτερη ταυτοποιεί τη σχολία που το PDFium θεωρεί χτυπημένη σε αυτό το pixel

Το TPdf αντίστοιχο TPdf.FormFieldZOrderAtPoint(X, Y: Double) τυλίγει την ίδια συνάρτηση του PDFium. Δέχεται απευθείας συντεταγμένες χώρου σελίδας σε Double και εγείρει εξαίρεση όταν δεν υπάρχει ενεργή σελίδα ή το περιβάλλον φόρμας δεν έχει αρχικοποιηθεί, ενώ το wrapper του 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