Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Lazarus (IDE) (https://www.delphipraxis.net/81-lazarus-ide/)
-   -   Memo text ausdrucken (https://www.delphipraxis.net/175585-memo-text-ausdrucken.html)

Finki 2. Jul 2013 16:42

AW: Memo text ausdrucken
 
????????

was meinst du damit?

die printers.pas ist vorgegeben da hab ich nix geändert

DeddyH 2. Jul 2013 16:52

AW: Memo text ausdrucken
 
Ich meinte: wenn ich in Delphi auf Printer zugreife, wird eine Instanz von TPrinter erstellt, sofern es sie vorher noch nicht gab. Sollte das unter Lazarus nicht so sein (was ich allerdings nicht glaube), dann greifst Du auf ein Objekt zu, das gar nicht da ist. Ich weiß nicht, ob das Folgende funktioniert, aber einen Versuch wäre es wert:
Delphi-Quellcode:
var
  MyPrinter: TPrinter;
begin
  MyPrinter := TPrinter.Create;
  try
    MyPrinter.BeginDoc;
    try
      MyPrinter.Canvas.TextOut(100, 100, 'Testdruck');
    finally
      MyPrinter.EndDoc;
    end;
  finally
    MyPrinter.Free;
  end;
end;

Finki 2. Jul 2013 17:02

AW: Memo text ausdrucken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hey (cool) jetzt kommt der Fehler weiter vornen in der printers.pas

in Zeile 303

Code:
constructor TPrinter.Create;
begin
  if ClassType=TPrinter then
    raise Exception.Create('TPrinter is an abstract base class.'
    +' Please use a printer implementation like the package printers4lazarus.');
  Inherited Create;
  fPrinterIndex:=-1; //By default, use the default printer
  fCanvas:=nil;
  fPaperSize:=nil;
  fTitle:='';
end;
also ich denke Lazarus mach das von allein, oder? :D

DeddyH 2. Jul 2013 17:13

AW: Memo text ausdrucken
 
Achso, dann gibt es also Ableitungen von TPrinter. Nun weiß ich leider nicht weiter, da ich kein Lazarus installiert habe, da muss jemand Anderes einspringen.

Finki 2. Jul 2013 17:15

AW: Memo text ausdrucken
 
Gut du hast es versucht dafür bin ich dir schon dankbar. Also vielen vielen dank.

Finki 2. Jul 2013 17:55

AW: Memo text ausdrucken
 
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;

MrMooed 2. Jul 2013 17:58

AW: Memo text ausdrucken
 
Da hast du dir echt einen tollen "Fehler" ausgesucht :lol:

Es sollte genügen, wenn du die TPrintersDialog Komponente (unter dem Reiter 'Dialoge') auf das Formular ziehst (nur 'PrintersDlgs' in die uses einzufügen klappt irgendwie nicht :?)

Finki 2. Jul 2013 18:02

AW: Memo text ausdrucken
 
Zitat:

Zitat von MrMooed (Beitrag 1220466)
Es sollte genügen, wenn du die TPrintersDialog Komponente (unter dem Reiter 'Dialoge') auf das Formular ziehst

hab ich gemacht!! :)

Zitat:

Zitat von MrMooed (Beitrag 1220466)
(nur 'PrintersDlgs' in die uses einzufügen klappt irgendwie nicht :?)

logisch weiß ich doch :wink:

MrMooed 2. Jul 2013 18:15

AW: Memo text ausdrucken
 
Also .. bei mir klappt es wie's Brezelbacken :shock:

habe deinen Code 1:1 übernommen und ihm ein Memo1.Lines übergeben - Drucker Auswahl erschienen und ich konnte drucken.
An welcher Stelle kommt denn der Fehler genau? einfach mal einen Brakepoint nach dem Begin setzen (in die Zeile klicken, F5 drücken) und dann durch den Code bewegen (F8)

Finki 3. Jul 2013 06:20

AW: Memo text ausdrucken
 
Kann es evtl daran liegen das meine memo componente erst während dem ausführen des Programms erstellt wird?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 Uhr.
Seite 2 von 5     12 34     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz