TPopupMenu mit dem PDF-Viewer, damit ein Rechtsklick auf eine Seite ein Kontextmenü anzeigtproperty PopupMenu: TPopupMenu; // published, inherited from TControl
Mit dem Setzen von PopupMenu verdrahtet man den Viewer mit einer TPopupMenu-Komponente auf derselben Form. Rechtsklickt der Nutzer im Viewer (oder drückt die Menütaste der Tastatur), zeigt VCL/LCL das Menü automatisch an der Cursorposition — die Anwendung muss WM_CONTEXTMENU nicht selbst behandeln
Ein typisches PDF-Reader-Kontextmenü bietet Einträge wie Markierten Text kopieren, Vergrößern, Verkleinern, Breite einpassen, Drehen, Gehe zu Seite…, Suchen… und Speichern unter…. Die Menüeinträge lesen oder schreiben üblicherweise öffentliche Eigenschaften wie CurrentCharIndex, Zoom, FitMode, Rotation und PageNumber, um auf das Dokument einzuwirken
Weil das Popup über den OnContextPopup-Mechanismus erscheint, lassen Sie es sich dynamisch unterdrücken oder ersetzen, indem Sie OnContextPopup behandeln und Handled := True setzen — nützlich, wenn der Rechtsklick über einem Formularfeld oder einer Annotation landet, die ihr eigenes Menü braucht
TPopupMenu-Instanz wird als Komponentenreferenz in der Form-Datei abgelegtAllowUserTextSelection False istTPopupMenu.OnPopup einhängen und den Viewer-Zustand prüfen, etwa CurrentCharIndex oder 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;