Registriert seit: 2. Jul 2013
120 Beiträge
FreePascal / Lazarus
|
AW: Memo text ausdrucken
2. Jul 2013, 18:55
also hier ist mal der code wie es aktuell ist wobei der besagte fehler auftritt
die uses
Code:
uses
Classes, SysUtils, FileUtil, PrintersDlgs, Forms, Controls, Graphics, Dialogs,
StdCtrls, ComCtrls, Buttons, EditBtn, ExtCtrls, PopupNotifier, Printers, Windows,
Menus, Grids;
die procedure
Code:
type
{ TForm1 }
TForm1 = class(TForm)
PrintDialog1: TPrintDialog;
btnPrint: TSpeedButton;
procedure btnPrintClick(Sender: TObject);
der button btnPrint
Code:
procedure TForm1.btnPrintClick(Sender: TObject);
begin
Drucken(Memo.Lines);
end;
und die procedure Drucken
Code:
procedure TForm1.Drucken(sl: TStrings);
var zeile, x, y: integer;
breite, hoehe, randlinks, randoben: integer;
begin
if PrintDialog1.Execute then
begin
Printer.BeginDoc; //Druckjob beginnen
SetMapMode(Printer.Canvas.Handle, MM_LOMETRIC); //Umstellen auf 1/10 mm
//Schrift-Einstellungen:
Printer.Canvas.Font.Name:='Courier New';
Printer.Canvas.Brush.Color:=clWhite;
Printer.Canvas.Font.Height:=50; //5 mm
//Blattgöße in 1/10 mm ermitteln:
breite:=GetDeviceCaps(Printer.Canvas.Handle, HORZSIZE)*10;
hoehe:=GetDeviceCaps(Printer.Canvas.Handle, VERTSIZE)*10;
randlinks:=60; //0,6 cm
randoben:=150; //1,5 cm
x:=randlinks;
y:=randoben*-1;
for zeile:=0 to sl.Count-1 do
begin
if -y>(hoehe-2*randoben) then
begin
y:=randoben*-1;
Printer.NewPage;
end;
if y=-randoben then
begin
Printer.Canvas.Font.Style:=[fsbold];
Printer.Canvas.TextOut(x, y, 'Seite '+
IntToStr(Printer.PageNumber));
Printer.Canvas.Font.Style:=[];
y:=y-Printer.Canvas.TextHeight(sl[zeile]);
end;
Printer.Canvas.TextOut(x, y, sl[zeile]);
y:=y-Printer.Canvas.TextHeight(sl[zeile]);
end;
Printer.EndDoc;
end;
end;
|
|
Zitat
|