Delphi-PRAXiS
Seite 3 von 5     123 45      

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 16:02

AW: Lazarus: StringGrid drucken
 
Irgendwie scheinen die Druck und die Suchfunktionen nicht sauber zu sein, so das man sie nicht einfach einbinden kann.

@ DeddyH: Jetzt bekomme ich keine Syntax-fehler aber wieder den "SIGSEGV"

BadenPower 18. Feb 2015 16:04

AW: Lazarus: StringGrid drucken
 
Was steht in unit1.pas in der Zeile 252 ?


Die Druckfunktion von swiss funktioniert einwandfrei. Habe ich hier gerade mit Lazarus getestet.

Kralle 18. Feb 2015 16:16

AW: Lazarus: StringGrid drucken
 
Zitat:

Zitat von BadenPower (Beitrag 1290419)
Was steht in unit1.pas in der Zeile 252 ?

Delphi-Quellcode:
 Y2 := 450;
Zitat:

Zitat von BadenPower (Beitrag 1290419)
Die Druckfunktion von swiss funktioniert einwandfrei. Habe ich hier gerade mit Lazarus getestet.

In welchem Kontext? Mal eben Ein Grid platziert und das ausgedruckt?

Gruß heiko

BadenPower 18. Feb 2015 16:19

AW: Lazarus: StringGrid drucken
 
Zitat:

Zitat von Kralle (Beitrag 1290422)
In welchem Kontext? Mal eben Ein Grid platziert und das ausgedruckt?

Yupp.


Schmeiss bitte einmal Deine gesamte Unit hoch.

Kralle 18. Feb 2015 16:25

AW: Lazarus: StringGrid drucken
 
Zitat:

Zitat von BadenPower (Beitrag 1290423)
Schmeiss bitte einmal Deine gesamte Unit hoch.

Also, ich bin jetzt mal Deinen Weg hiermit gegangen:

Delphi-Quellcode:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
         Grids, Types, Windows, Printers;

type

         { TForm1 }

      TForm1 = class(TForm)
                  Button1: TButton;
                  StringGrid1: TStringGrid;
                  procedure Button1Click(Sender: TObject);
      private
            { private declarations }
      public
            { public declarations }
      end;

var
      Form1: TForm1;

implementation

{$R *.lfm}

procedure PrintGrid(sGrid: TStringGrid; sTitle: string);
var
  X1, X2: Integer;
  Y1, Y2: Integer;
  TmpI: Integer;
  F: Integer;
  TR: TRect;
begin
  Printer.Title := sTitle;
  Printer.BeginDoc;
  Printer.Canvas.Pen.Color := 0;
  Printer.Canvas.Font.Name := 'Times New Roman';
  Printer.Canvas.Font.Size := 12;
  Printer.Canvas.Font.Style := [fsBold, fsUnderline];
  Printer.Canvas.TextOut(0, 100, Printer.Title);
  for F := 1 to sGrid.ColCount - 1 do
  begin
    X1 := 0;
    for TmpI := 1 to (F - 1) do
      X1 := X1 + 5 * (sGrid.ColWidths[TmpI]);
    Y1 := 300;
    X2 := 0;
    for TmpI := 1 to F do
      X2 := X2 + 5 * (sGrid.ColWidths[TmpI]);
    Y2 := 450;
    TR := Types.Rect(X1, Y1, X2 - 30, Y2);
    Printer.Canvas.Font.Style := [fsBold];
    Printer.Canvas.Font.Size := 7;
    Printer.Canvas.TextRect(TR, X1 + 50, 350, sGrid.Cells[F, 0]);
    Printer.Canvas.Font.Style := [];
    for TmpI := 1 to sGrid.RowCount - 1 do
    begin
      Y1 := 150 * TmpI + 300;
      Y2 := 150 * (TmpI + 1) + 300;
      TR := Types.Rect(X1, Y1, X2 - 30, Y2);
      Printer.Canvas.TextRect(TR, X1 + 50, Y1 + 50, sGrid.Cells[F, TmpI]);
    end;
  end;
  Printer.EndDoc;
end;




procedure TForm1.Button1Click(Sender: TObject);
begin
    PrintGrid(StringGrid1, 'Print Stringgrid');
end;

end.
Und es gibt wieder ein "SIGSEGV" :twisted:

Kralle 18. Feb 2015 16:27

AW: Lazarus: StringGrid drucken
 
Ich glaube mein Lazarus hat einen Schuß

BadenPower 18. Feb 2015 16:39

AW: Lazarus: StringGrid drucken
 
So, habe jetzt nur Deinen Source in meine Unit kopiert und es funktioniert.

Allerdings musst Du vorher noch die Unit Types in die Uses-Klausel aufnehmen.

Kralle 18. Feb 2015 16:44

AW: Lazarus: StringGrid drucken
 
Zitat:

Zitat von BadenPower (Beitrag 1290426)
So, habe jetzt nur Deinen Source in meine Unit kopiert und es funktioniert.

Die aus #25??
Zitat:

Zitat von BadenPower (Beitrag 1290426)
Allerdings musst Du vorher noch die Unit Types in die Uses-Klausel aufnehmen.

Steht da doch drin. Zwischen Grid und Windows.

Wäre es eigentlich zulässig und machbar die Uses direkt in die Units zu packen in den sie gebraucht werden? Wenn ja, würden die Uses in der Procedure die anderen Uses ersetzen oder ergänzen?

Gruß Heiko

creed steiger 18. Feb 2015 16:44

AW: Lazarus: StringGrid drucken
 
kcontrols wäre auch eine Möglichkeit
http://www.tkweb.eu/en/delphicomp/

und wenn ich mich richtig entsinne hatte Lazreport auch ein Printgrid oder so ähnlich

BadenPower 18. Feb 2015 16:49

AW: Lazarus: StringGrid drucken
 
Zitat:

Zitat von Kralle (Beitrag 1290428)
Zitat:

Zitat von BadenPower (Beitrag 1290426)
So, habe jetzt nur Deinen Source in meine Unit kopiert und es funktioniert.

Die aus #25??

Ja, die aus #25.


Zitat:

Zitat von Kralle (Beitrag 1290428)
Zitat:

Zitat von BadenPower (Beitrag 1290426)
Allerdings musst Du vorher noch die Unit Types in die Uses-Klausel aufnehmen.

Steht da doch drin. Zwischen Grid und Windows.

Habs gerade auch gesehen.
Ich hatte Deine Uses nicht übernommen.

Habe zu Sicherheit aber nochmals getestet mit den von Dir eingebundenen Units, auch in der gleichen Reihenfolge.
Und es funktioniert immer noch.


Zitat:

Zitat von Kralle (Beitrag 1290428)
Wäre es eigentlich zulässig und machbar die Uses direkt in die Units zu packen in den sie gebraucht werden? Wenn ja, würden die Uses in der Procedure die anderen Uses ersetzen oder ergänzen?

Du willst doch nicht ernsthaft die ganzen Deklarationen und Funktionen in Deinen Quelltext kopieren?


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:18 Uhr.
Seite 3 von 5     123 45      

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