![]() |
Memo Drucken
Hi,
ich versuche gerade mich in das Drucken einzuarbeiten und bin auf ein Problem gestoßen.
Code:
Wie hier zu sehen ist, versuche ich alle Zeilen eines Memos genau so auszudrucken wie sie, sozusagen, auf dem Bildschirm zu sehen sind (also untereinander).
procedure TForm1.Button2Click(Sender: TObject);
var i,y : Integer; begin Printer.BeginDoc; Printer.NewPage; for i := 0 to memo1.Lines.Count do begin inc(y,5); Printer.Canvas.TextOut(2,y,memo1.Lines[i]); end; Printer.EndDoc; end; Es werden auch keine Fehlermeldungen angezeigt, aber auf dem Papier, welches dann aus dem Drucker kommt ist auch nichts drauf :|. Ich komme leider nicht dahinter was daran falsch ist ... Danke für jede Hilfe :-D |
AW: Memo Drucken
Ist das der komplette Quellcode? Wenn ja, dann wird das y nicht initialisiert und da steht irgendetwas drin, nur nicht das, was du erwartest.
Außerdem ist ein inc(y, 5) etwas wenig für einen Zeilenvorschub auf einem Drucker. |
AW: Memo Drucken
Ich würde mal schätzen, deine Textausgabe liegt außerhalb des bedruckbaren Bereichs deines Druckers. Die meisten Drucker haben eine Rand, auf dem nichts gedrückt werden kann.
Ein Drucker hat eine wesentlich höhere Pixelauflösung (dpi) als z.b. Der Canvas einer Paintbox. Und du solltest ,al ermitteln welchen Mindestrand dein Drucker hat (meist in mm angegeben) und den umrechnen in Inch und das dann mit der DPI deines Drcker multiplizieren. Diese Werte addierst du dann auf die x bzw. y Angabe deine Canvas.textout Damit kannst du sicherstellen, dass die Ausgabe schon mal im druckbare Bereich liegt. |
AW: Memo Drucken
Hi,
wenn du es dir etwas einfacher machen möchtest gibt es bei Torry.net eine nette kleine Komponente namens TLinePrinter. Mit der bekommst du dein Anliegen ganz einfach umgesetzt |
AW: Memo Drucken
Hallo,
SetMapMode ( ![]() Ohne das setzen, sind die y-Werte negativ, weil der 0,0-Punkt links oben ist. |
AW: Memo Drucken
Wie wäre es hiermit?
Delphi-Quellcode:
uses Printers;
Delphi-Quellcode:
so in etwa Aufrufen:
procedure PrintStrings(Strings: TStrings);
var Prn: TextFile; i: word; begin AssignPrn(Prn); try Rewrite(Prn); try for i := 0 to Strings.Count - 1 do writeln(Prn, Strings.Strings[i]); finally CloseFile(Prn); end; except on EInOutError do MessageDlg('Drucker nicht bereit.', mtError, [mbOk], 0); end; end;
Delphi-Quellcode:
PrintStrings(Memo1.Lines);
Oder so:
Delphi-Quellcode:
einen hab ich noch :)
// pack einen TPrintDialog und TButton auf Form
// hier wird Memo1 Font auch berücksichtigt, falls das eine Rolle spielt procedure TForm1.Button1Click(Sender: TObject); var MemoOutput: TextFile; I: LongInt; begin If PrintDialog1.Execute then begin AssignPrn(MemoOutput); //assigns a text-file variable to the printer. try Rewrite(MemoOutput); //creates a new file and opens it try Printer.Canvas.Font := Memo1.Font; //Sets Font to Printer For I := 0 to Memo1.Lines.Count - 1 do WriteLn(MemoOutput, Memo1.Lines[I]); //puts it to the Printer Canvas finally CloseFile(MemoOutput); //terminates the association between file variable and an external disk file end; except on EInOutError do MessageDlg('Drucker nicht bereit.', mtError, [mbOk], 0); end; end; end;
Delphi-Quellcode:
procedure PrintMemo(const TheMemo: TMemo);
var MemoOutput: TextFile; I: LongInt; begin If PrintDialog1.Execute then begin AssignPrn(MemoOutput); //assigns a text-file variable to the printer. try Rewrite(MemoOutput); //creates a new file and opens it try Printer.Canvas.Font := TheMemo.Font; //Sets Font to Printer For I := 0 to TheMemo.Lines.Count - 1 do WriteLn(MemoOutput, TheMemo.Lines[I]); //puts it to the Printer Canvas finally CloseFile(MemoOutput); //terminates the association between file variable and an external disk file end; except on EInOutError do MessageDlg('Drucker nicht bereit.', mtError, [mbOk], 0); end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz