TPopupMenu с просмотрщиком PDF, чтобы щелчок правой кнопкой на странице открывал контекстное менюproperty PopupMenu: TPopupMenu; // published, inherited from TControl
Назначение PopupMenu связывает просмотрщик с компонентом TPopupMenu, размещенным на той же форме. Когда пользователь щелкает правой кнопкой мыши (или нажимает клавишу меню) внутри просмотрщика, VCL/LCL автоматически показывает меню в позиции курсора — приложению не нужно самостоятельно обрабатывать WM_CONTEXTMENU
Типичное контекстное меню PDF reader предлагает пункты вроде Copy Selected Text, Zoom In, Zoom Out, Fit Width, Rotate, Go to Page…, Find… и Save As…. Пункты меню обычно читают или записывают публичные свойства вроде CurrentCharIndex, Zoom, FitMode, Rotation и PageNumber, чтобы управлять документом
Поскольку popup показывается через механизм OnContextPopup, вы можете динамически подавить его или заменить, обработав OnContextPopup и установив Handled := True — это полезно, когда щелчок правой кнопкой приходится на поле формы или аннотацию, которым нужно собственное меню
TPopupMenu хранится как ссылка на компонент в файле формыAllowUserTextSelection равно FalseTPopupMenu.OnPopup и проверьте состояние просмотрщика, например CurrentCharIndex или Pdf.Active
// Attach a context menu offering Copy / Fit Width / Go to Page
procedure TForm1.FormCreate(Sender: TObject);
begin
PdfView1.PopupMenu := pmReader;
end;
procedure TForm1.miFitWidthClick(Sender: TObject);
begin
PdfView1.FitMode := pfmFitToWidth;
end;
procedure TForm1.miGoToPageClick(Sender: TObject);
var S: string;
begin
S := IntToStr(PdfView1.PageNumber);
if InputQuery('Go to page', 'Page number:', S) then
PdfView1.PageNumber := StrToIntDef(S, PdfView1.PageNumber);
end;