Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   FreePascal [gelöst] Lazarus: StringGrid drucken (https://www.delphipraxis.net/183997-%5Bgeloest%5D-lazarus-stringgrid-drucken.html)

Kralle 18. Feb 2015 14:58


[gelöst] Lazarus: StringGrid drucken
 
Moin,

jetzt suche ich schon seit 2 Tage nach einer funktionierenden Funktion um aus Lazarus heraus ein
Delphi-Quellcode:
Stringgrid
auszudrucken.

Ich schätze 99% der Treffer haben den Quellcode untereinander kopiert oder verlinkt.

Gefunden habe ich:
  1. http://www.swissdelphicenter.ch/de/showcode.php?id=1577
  2. http://www.delphitricks.com/source-c...tringgrid.html
  3. https://sites.google.com/site/soundd...idmultilateral

Aber, entweder brechen die mit einem "ARG..."-Fehler ab oder sie benutzen Typen die von Irgendwo her kommen und deren
Delphi-Quellcode:
Uses
man vergessen hat anzugeben.
Außerdem scheinen die alle eher für altes Delphi als für aktulles Lazarus zu sein.

Ich will keine riesige
Delphi-Quellcode:
Procedure
mit x-Schaltern, sondern nur auf den Standard-Drucker ausdrucken.

Wer kann helfen?

Gruß Heiko

DeddyH 18. Feb 2015 15:05

AW: Lazarus: StrinfGrid drucken
 
Was genau willst Du drucken? Wenn wirklich das StringGrid, mach einen Screenshot, schneide das StringGrid-Rechteck daraus aus und schicke es an den Drucker. Oder soll eher der Inhalt des Grids gedruckt werden? Da scheint mir der erste verlinkte Code doch ganz gut geeignet, was für Fehler kommen denn da? Alternativ kannst Du auch auf eine Reporting-Engine ausweichen, ich weiß gerade nicht, ob Lazarus da schon etwas an Bord hat.

Kralle 18. Feb 2015 15:22

AW: Lazarus: StrinfGrid drucken
 
Hallo DeddyH,

Zitat:

Zitat von DeddyH (Beitrag 1290389)
Was genau willst Du drucken?

Den Inhalt des Grids mit waagerechten und senkrechten Linien.

Zitat:

Zitat von DeddyH (Beitrag 1290389)
Wenn wirklich das StringGrid, mach einen Screenshot, schneide das StringGrid-Rechteck daraus aus und schicke es an den Drucker.

Das Grid kann aber Höher und Breiter als der Bildschirm werden.

Zitat:

Zitat von DeddyH (Beitrag 1290389)
Da scheint mir der erste verlinkte Code doch ganz gut geeignet, was für Fehler kommen denn da?

Zitat:

Projekt ... hat eine Exception-Klasse >>External: SIGSEGV<< ausgelöst. Bei Adresse 403C60
Da wir ja nun gestern schon die Probleme mit dem
Delphi-Quellcode:
StringList.Free
bearbeitet haben und das Programm alles das macht was es soll, weiß ich nicht wieso jetzt schon weider so ein "SEGxxx"-Fehler kommt.
Beim Debug komme ich genau bis zur Zeile
Delphi-Quellcode:
 Printer.Title := sTitle;
.
Muss also eine Fehler in "Printers" sein - oder?

Zitat:

Zitat von DeddyH (Beitrag 1290389)
Alternativ kannst Du auch auf eine Reporting-Engine ausweichen, ich weiß gerade nicht, ob Lazarus da schon etwas an Bord hat.

Ich auch nicht.

Gruß Heiko

DeddyH 18. Feb 2015 15:34

AW: Lazarus: StringGrid drucken
 
Woher kommt denn sTitle? Im ersten Beispielcode heißt das Title und ist ein Parameter, der an die Druckroutine übergeben wird.

Kralle 18. Feb 2015 15:37

AW: Lazarus: StringGrid drucken
 
Moin,

Zitat:

Zitat von DeddyH (Beitrag 1290399)
Woher kommt denn sTitle? Im ersten Beispielcode heißt das Title und ist ein Parameter, der an die Druckroutine übergeben wird.

Delphi-Quellcode:
procedure PrintGrid(sGrid: TStringGrid; sTitle: string);
var
  X1, X2: Integer;
  Y1, Y2: Integer;
  TmpI: Integer;
  F: Integer;
  TR: TRect;
begin
  Printer.Title := sTitle;
Delphi-Quellcode:
procedure TForm1.MI_DruckenClick(Sender: TObject);
begin
  PrintGrid(StringGrid1, 'Print Stringgrid');
end;
sTitle ist einer der beiden Übergabeparameter.

Upps, habe den Code aus dem falschen Browserfenster übernommen. Moment ich binde den anderen nochmal ein ...

Gruß HEiko

DeddyH 18. Feb 2015 15:40

AW: Lazarus: StringGrid drucken
 
Und wenn Du die Zeile auskommentierst, knallt es beim nächsten Zugriff auf die Printer-Variable? In dem Fall scheint es unter Lazarus tatsächlich etwas anders zu sein als unter Delphi.

BadenPower 18. Feb 2015 15:41

AW: Lazarus: StringGrid drucken
 
Was kommen denn für Code-Zeilen nach
Code:
Printer.Title := sTitle;
?

Kralle 18. Feb 2015 15:41

AW: Lazarus: StringGrid drucken
 
So, jetzt habe ich den anderen Code eingebunden und bei dem kennt Lazarus
Delphi-Quellcode:
GetDeviceCaps
nicht.

Delphi-Quellcode:
 //Druck auf mm einstellen
  mmx := GetDeviceCaps(Printer.Canvas.Handle, PHYSICALWIDTH) /
    GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSX) * 25.4;
  mmy := GetDeviceCaps(Printer.Canvas.Handle, PHYSICALHEIGHT) /
    GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY) * 25.4;
Gruß Heiko

DeddyH 18. Feb 2015 15:42

AW: Lazarus: StringGrid drucken
 
Die Unit Windows (oder wie die auch sonst heißen mag) ist eingebunden?

Kralle 18. Feb 2015 15:44

AW: Lazarus: StringGrid drucken
 
Moin,

Zitat:

Zitat von DeddyH (Beitrag 1290401)
Und wenn Du die Zeile auskommentierst, knallt es beim nächsten Zugriff auf die Printer-Variable? In dem Fall scheint es unter Lazarus tatsächlich etwas anders zu sein als unter Delphi.

Ja.
und springt in Printers an diese Stelle:
Delphi-Quellcode:
//Raise error if Printer.Printing is not Value
procedure TPrinter.CheckPrinting(Value: Boolean);
begin
  if Printing<>Value then
  begin
    if Value then
      raise EPrinter.Create('Printer is not printing')
    else
      raise Eprinter.Create('Printer is printing');
  end;
end;
Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:47 Uhr.
Seite 1 von 5  1 23     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