PDFium Delphi Component Docs

свойство HasFormFieldAt

Компонент: TPdf  ·  Модул: PDFium
Hit тест, който връща True, когато уиджет на поле от формуляр покрива зададената координата на страницата

Синтаксис

property HasFormFieldAt[X, Y: Single]: Boolean; // read only

Описание

HasFormFieldAt извършва hit тест върху текущо активната страница: връща True, когато зададената координата (X, Y) попада вътре в правоъгълника на която и да е анотация уиджет. Координатите са в потребителското пространство на PDF — същата координатна система като PageWidth / PageHeight, с начало в долния ляв ъгъл, X нараства надясно, Y нараства нагоре, единиците са точки (1/72 inch)

Свойството връща False, когато Active е False, когато документът няма AcroForm уиджети или когато подадената координата не попада в нито един правоъгълник на уиджет. То е обвивка с константно време около FPDFPage_HasFormFieldAtPoint на PDFium — идеално за обратна връзка при mouse-move / посочване в преглед, където стойността се запитва много пъти в секунда

Hit тестът отчита само правоъгълника на уиджета — не границите на външния вид. Бутони или отметки, чийто видим глиф е по-малък от правоъгълника на уиджета, продължават да докладват True за целия правоъгълник. Комбинирайте със FormFieldInfoAt[X, Y], за да получите записа на засеченото поле, след като hit тестът потвърди, че курсорът е върху поле; тази схема избягва по-тежкото извличане на информация при всяко събитие mouse-move

Забележки

Пример

procedure TForm1.PdfView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var PageX, PageY: Double;
begin
  PdfView1.DeviceToPage(X, Y, PageX, PageY);
  if Pdf1.HasFormFieldAt[PageX, PageY] then
    PdfView1.Cursor := crHandPoint
  else
    PdfView1.Cursor := crDefault;
end;

Виж също

FormFieldAt, FormFieldInfoAt, FormFieldCount, TPdfView.DeviceToPage