property OnDblClick: TNotifyEvent; // published, inherited from TControl
OnDblClick는 시스템의 두 번 클릭 시간과 픽셀 허용 범위를 사용해, 두 번 클릭 시퀀스의 두 번째 OnClick 뒤에 발생합니다. Sender 매개변수는 TPdfView 자체이며, 화면 위치는 Mouse.CursorPos에서 가져와 ScreenToClient로 client 좌표로 변환할 수 있습니다
PDF reader에서 이 event의 자연스러운 활용은 "zoom-to-point" 동작입니다. 사용자가 문서를 두 번 클릭해 페이지 맞춤 너비와 이전 zoom 수준 사이를 전환하고, 필요하면 클릭 위치를 기준으로 보기를 가운데에 맞춥니다. 또 다른 흔한 패턴은 CharacterIndexAtPos를 호출해 커서 아래 단어를 선택한 뒤, 맞은 글자를 중심으로 CurrentCharIndex와 선택 길이를 확장하는 방식입니다
뷰어의 주석 또는 링크 핸들러가 먼저 실행됩니다. 따라서 사용자가 링크를 두 번 클릭하면 첫 번째 클릭에서 이미 링크가 따라가집니다. 그러므로 두 번 클릭은 일반적인 탐색 제스처와 충돌하지 않는 동작에 두는 편이 좋습니다
VCL과 LCL에서 동일하게 동작합니다. LCL은 widget set의 두 번 클릭 시간 개념을 따릅니다Enabled = False이면 이 event는 발생하지 않습니다OnMouseDown handler에서 PdfView1.CharacterIndexAtPos(Point(X, Y), PageNo)를 호출한 뒤, OnDblClick에서 처리합니다
// 두 번 클릭 시 페이지 맞춤 너비와 100% zoom을 전환합니다
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;