Einzelnen Beitrag anzeigen

Finki

Registriert seit: 2. Jul 2013
120 Beiträge
 
FreePascal / Lazarus
 
#16

AW: Memo text ausdrucken

  Alt 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;
  Mit Zitat antworten Zitat