![]() |
AW: Memo text ausdrucken
????????
was meinst du damit? die printers.pas ist vorgegeben da hab ich nix geändert |
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; |
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:
also ich denke Lazarus mach das von allein, oder? :D
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; |
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.
|
AW: Memo text ausdrucken
Gut du hast es versucht dafür bin ich dir schon dankbar. Also vielen vielen dank.
|
AW: Memo text ausdrucken
also hier ist mal der code wie es aktuell ist wobei der besagte fehler auftritt
die uses
Code:
die procedure
uses
Classes, SysUtils, FileUtil, PrintersDlgs, Forms, Controls, Graphics, Dialogs, StdCtrls, ComCtrls, Buttons, EditBtn, ExtCtrls, PopupNotifier, Printers, Windows, Menus, Grids;
Code:
der button btnPrinttype { TForm1 } TForm1 = class(TForm) PrintDialog1: TPrintDialog; btnPrint: TSpeedButton; procedure btnPrintClick(Sender: TObject);
Code:
und die procedure Drucken
procedure TForm1.btnPrintClick(Sender: TObject);
begin Drucken(Memo.Lines); end;
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; |
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 :?) |
AW: Memo text ausdrucken
Zitat:
Zitat:
|
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) |
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 09:36 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