function FormFieldZOrderAtPoint(X, Y: Double): Integer;
| X, Y | Double. Ponto em unidades da página PDF, com a origem no canto inferior esquerdo da página. |
| Result | Integer. A ordem z do widget de campo de formulário que cobre o ponto, tal como reportada pelo teste nativo de colisão, ou -1 quando nenhum widget o cobre. |
Contraparte para campos de formulário de LinkZOrderAtPoint. O teste de colisão corre no ambiente de preenchimento de formulários (FPDFPage_FormFieldZOrderAtPoint) e devolve a ordem z do widget cuja área cobre a coordenada, pelo que widgets sobrepostos são resolvidos da mesma forma que o PDFium os resolve ao encaminhar a entrada do rato
A chamada exige que o ambiente de preenchimento de formulários esteja inicializado para o documento; quando não está, é gerado um EPdfError com a mensagem Form fill environment is not initialized. A página atual também tem de estar ativa
Para consultas com tipo, use FormFieldTypeAtPoint, que também indica o tipo de campo, ou HasFormFieldAt para uma verificação de presença. Converta uma posição do rato em unidades de página com DeviceToPage antes de chamar
-1 significa que o ponto não está sobre nenhum widget, e não que a página não tem formulário
var PX, PY: Double;
begin
if Pdf1.DeviceToPage(MouseX, MouseY, 0, 0, W, H, ro0, PX, PY) then
if Pdf1.FormFieldZOrderAtPoint(PX, PY) >= 0 then
Cursor := crIBeam; // a form widget is under the mouse
end;