Einzelnen Beitrag anzeigen

tomkupitz

Registriert seit: 26. Jan 2011
323 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: TPrinter: Portrait auf Landscape umzuschalten

  Alt 2. Jul 2019, 10:14
Eine Lösung ist folgende Helper Klasse, die in die Vcl.Printers.pas eingebaut werden muss:

Delphi-Quellcode:
  ...

  TPrinterHelper = class Helper for TPrinter
  public
    procedure NewPageEx(Orientation: Integer);
  end;
  ...

[PrintingPermission(SecurityAction.LinkDemand, Level=PrintingPermissionLevel.AllPrinting)]
procedure TPrinterHelper.NewPageEx(Orientation: Integer);
begin
  CheckPrinting(True);
  EndPage(DC);

  FDevMode^.dmOrientation:=Orientation; //DMORIENT_PORTRAIT DMORIENT_LANDSCAPE

  if ResetDC(Canvas.Handle, FDevMode^)=0 then
    Exit;

  StartPage(DC);
  Inc(FPageNumber);
  Canvas.Refresh;
end;
Aufruf dann:

Delphi-Quellcode:
procedure TForm1.FormClick(Sender: TObject);
begin
  Printer.Orientation:=poPortrait;

  Printer.BeginDoc;

  Printer.Canvas.TextOut(100, 100, 'Seite 1');

  Printer.NewPageEx(DMORIENT_LANDSCAPE);

  Printer.Canvas.TextOut(100, 100, 'Seite 2');

  Printer.EndDoc;
end;
Beste Grüße
  Mit Zitat antworten Zitat