PDFium Component Docs

FormFieldZOrderAt methode

Component: TPdfView  ·  Unit: PDFium
Geeft de stapelvolgorde terug van het AcroForm-veld dat bovenaan geraakt wordt op de view-pixel (X, Y), of -1

Syntax

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

Parameters

X, YInteger. Pixelcoördinaten relatief aan het viewerbesturingselement, dezelfde coördinaten die de mouse-events ontvangen

Return Value

Integer. De z-order van het formulierveld op het geteste punt, of -1 wanneer geen formulierveld wordt geraakt of de test niet kan worden uitgevoerd

Description

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

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