property OnDblClick: TNotifyEvent; // published, inherited from TControl
OnDblClick срабатывает после второго OnClick в последовательности двойного щелчка, по системному интервалу double-click и допустимому отклонению в пикселях. Параметр Sender — сам TPdfView; позицию на экране можно взять из Mouse.CursorPos и пересчитать в клиентские координаты через ScreenToClient
Естественное применение этого события в PDF-ридере — жест "zoom-to-point": пользователь делает двойной щелчок по документу, чтобы переключиться между fit-to-width и предыдущим уровнем зума, опционально центрируя вид на точке щелчка. Другой распространённый паттерн — выделять двойным щелчком слово под курсором, вызывая CharacterIndexAtPos, а затем расширяя CurrentCharIndex / длину выделения вокруг задетого символа
Обработчик аннотаций/ссылок у вьювера срабатывает первым — если пользователь дважды щёлкнул по ссылке, первый клик уже перешёл по ней. Поэтому двойной щелчок лучше приберечь для поведения, которое не конфликтует с обычными жестами навигации
Enabled = FalsePdfView1.CharacterIndexAtPos(Point(X, Y), PageNo) из парного обработчика OnMouseDown, запоминающего позицию, и действуйте уже в OnDblClick
// Toggle between fit-to-width and 100% zoom on double-click
procedure TForm1.PdfView1DblClick(Sender: TObject);
begin
if PdfView1.FitMode = pfmFitToWidth then
begin
PdfView1.FitMode := pfmNone;
PdfView1.Zoom := 1.0;
end
else
PdfView1.FitMode := pfmFitToWidth;
end;