Registriert seit: 1. Feb 2018
3.691 Beiträge
Delphi 11 Alexandria
|
AW: Fastreport druckt nicht
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;
|
|
Zitat
|