AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Memo text ausdrucken

Ein Thema von Finki · begonnen am 2. Jul 2013 · letzter Beitrag vom 4. Jul 2013
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Finki

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

AW: Memo text ausdrucken

  Alt 2. Jul 2013, 16:42
????????

was meinst du damit?

die printers.pas ist vorgegeben da hab ich nix geändert
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Memo text ausdrucken

  Alt 2. Jul 2013, 16:52
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Finki

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

AW: Memo text ausdrucken

  Alt 2. Jul 2013, 17:02
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?
Miniaturansicht angehängter Grafiken
printerror2.jpg  

Geändert von Finki ( 2. Jul 2013 um 17:03 Uhr) Grund: neue infos
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Memo text ausdrucken

  Alt 2. Jul 2013, 17:13
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Finki

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

AW: Memo text ausdrucken

  Alt 2. Jul 2013, 17:15
Gut du hast es versucht dafür bin ich dir schon dankbar. Also vielen vielen dank.
  Mit Zitat antworten Zitat
Finki

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

AW: Memo text ausdrucken

  Alt 2. Jul 2013, 17: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
Benutzerbild von MrMooed
MrMooed

Registriert seit: 18. Feb 2012
101 Beiträge
 
Delphi 7 Enterprise
 
#17

AW: Memo text ausdrucken

  Alt 2. Jul 2013, 17:58
Da hast du dir echt einen tollen "Fehler" ausgesucht

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 )
  Mit Zitat antworten Zitat
Finki

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

AW: Memo text ausdrucken

  Alt 2. Jul 2013, 18:02
Es sollte genügen, wenn du die TPrintersDialog Komponente (unter dem Reiter 'Dialoge') auf das Formular ziehst
hab ich gemacht!!

(nur 'PrintersDlgs' in die uses einzufügen klappt irgendwie nicht )
logisch weiß ich doch
  Mit Zitat antworten Zitat
Benutzerbild von MrMooed
MrMooed

Registriert seit: 18. Feb 2012
101 Beiträge
 
Delphi 7 Enterprise
 
#19

AW: Memo text ausdrucken

  Alt 2. Jul 2013, 18:15
Also .. bei mir klappt es wie's Brezelbacken

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)
  Mit Zitat antworten Zitat
Finki

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

AW: Memo text ausdrucken

  Alt 3. Jul 2013, 06:20
Kann es evtl daran liegen das meine memo componente erst während dem ausführen des Programms erstellt wird?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:44 Uhr.
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