function FormFieldZOrderAt(X, Y: Integer): Integer;
| X, Y | Integer. Pixelcoördinaten relatief aan het viewerbesturingselement, dezelfde coördinaten die de mouse-events ontvangen |
Test een schermpixel tegen de AcroForm-widgetannotaties van de huidige pagina en rapporteert de stapelpositie van de bovenste. De viewer zet eerst (X, Y) om naar paginaruimtecoördinaten met DeviceToPage, waarbij Zoom, Rotation, weergavemodus, paginapadding en scrolloffset worden meegenomen, en roept vervolgens de FPDFPage_FormFieldZOrderAtPoint van PDFium aan met de formulierhandle van de pagina
Een grotere retourwaarde betekent dat de widget dichter bij de kijker gestapeld staat, dus getekend wordt boven velden met kleinere waarden. Z-order is hier de hit-testvolgorde van bovenaf in de annotatiestapel, geen widgetindex; behandel de waarden dus als opaakte vergelijkingsgetallen
Waar een form-widget en een linkannotatie overlappen, vergelijkt u dit resultaat met LinkZOrderAt: beide waarden komen uit dezelfde annotatiestapelvolgorde en de hoogste wijst de annotatie aan die PDFium op die pixel als geraakt beschouwt
De TPdf-tegenhanger TPdf.FormFieldZOrderAtPoint(X, Y: Double) omhult dezelfde PDFium-functie. Die neemt paginaruimtecoördinaten rechtstreeks als Double aan en veroorzaakt een exception wanneer geen pagina actief is of de formulieromgeving niet is geïnitialiseerd, terwijl de TPdfView-wrapper soft faalt en -1 teruggeeft
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;