PDFium Component Docs

FormFieldZOrderAt Metoda

Component: TPdfView  ·  Unit: PDFium
Zwraca kolejność ułożenia najwyżej położonego pola AcroForm trafionego w pikselu widoku (X, Y) albo -1

Syntax

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

Parameters

X, YInteger. Współrzędne pikselowe względem sterowania podglądu, te same współrzędne, które otrzymują zdarzenia myszy

Return Value

Integer. Z-order pola formularza w punkcie objętym testem trafień albo -1, gdy żadne pole formularza nie zostało trafione albo test nie może zostać wykonany

Description

Wykonuje test trafienia piksela ekranu względem adnotacji widżetów AcroForm bieżącej strony i raportuje pozycję ułożenia tej najwyżej. Podgląd najpierw przelicza (X, Y) na współrzędne przestrzeni strony przez DeviceToPage, co uwzględnia Zoom, Rotation, tryb wyświetlania, marginesy strony i przesunięcie przewijania, a następnie wywołuje funkcję PDFium FPDFPage_FormFieldZOrderAtPoint z uchwytem formularza strony

Większa zwracana wartość oznacza, że widżet jest ułożony bliżej widza, czyli rysowany nad polami o mniejszych wartościach. Z-order to tutaj kolejność testu trafień najwyższego poziomu stosu adnotacji, a nie indeks widżetu, więc traktuj te wartości jako nieprzezroczyste liczby porównawcze

Tam, gdzie widżet formularza nakłada się z adnotacją łącza, porównaj ten wynik z LinkZOrderAt: obie wartości pochodzą z tej samej kolejności ułożenia stosu adnotacji, a wyższa wskazuje adnotację, którą PDFium uznaje za trafioną w tym pikselu

Odpowiednik w TPdf, TPdf.FormFieldZOrderAtPoint(X, Y: Double), opakowuje tę samą funkcję PDFium. Przyjmuje bezpośrednio współrzędne przestrzeni strony w Double i zgłasza wyjątek, gdy żadna strona nie jest aktywna albo środowisko formularzy nie jest zainicjalizowane, podczas gdy opakowanie TPdfView zawodzi łagodnie i zwraca -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