Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Fastreport druckt nicht

  Alt 12. Apr 2018, 08:31
Vielleicht hilft Dir ja einer der Schnippsel hier um ans Ziel zu kommen.
Delphi-Quellcode:
uses Printers;

// so könnte man den Standard-Drucker-Namen und sein Port ermitteln
procedure TForm1.Button1Click(Sender: TObject);
var
  MyPrinter, MyDriver, MyPort: array[0..100] of Char;
  DevMode: THandle;
begin
  Printer.GetPrinter(MyPrinter, MyDriver, MyPort, DevMode);
  Label1.Caption:=MyPrinter;
  Label2.Caption:=MyPort;
end;

// so könnte man alle Drucker ermitteln
procedure TForm1.Button2Click(Sender: TObject);
begin
  Memo1.Lines.Assign(Printer.Printers);
end;

// so könnte man die DPI vom Drucker ermitteln
procedure TForm1.Button3Click(Sender: TObject);
begin
  Label3.Caption := IntToStr(GetDeviceCaps(Printer.Handle, LOGPIXELSX)) +
                    ' x '+IntToStr(GetDeviceCaps(Printer.Handle, LOGPIXELSY))+
                    ' DPI (dots per inch)';
end;


// so könnte man die eingelegte papiergröße ermitteln
procedure TForm1.Button4Click(Sender: TObject);
var
  papermmx, papermmy: Extended;
begin
  Printer.BeginDoc;
  {
  PHYSICALWIDTH = Dots horizontal of the paper
  LOGPIXELSX    = DPI (Dots per Inch)
  25.4          = To calculte Inch to Millimeter
  }

  papermmx:=GetDeviceCaps(Printer.Canvas.Handle,PHYSICALWIDTH)/
            GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSX) * 25.4;
  papermmy:=GetDeviceCaps(Printer.Canvas.Handle,PHYSICALHEIGHT)/
            GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSY) * 25.4;
  with printer.canvas do
  begin
    TextOut(200,100,floattostr(papermmx)+' mm x '+floattostr(papermmy)+' mm');
  end;
  Printer.EndDoc;
end;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat