AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein FreePascal [gelöst] Lazarus: StringGrid drucken
Thema durchsuchen
Ansicht
Themen-Optionen

[gelöst] Lazarus: StringGrid drucken

Ein Thema von Kralle · begonnen am 18. Feb 2015 · letzter Beitrag vom 19. Feb 2015
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#1

AW: Lazarus: StringGrid drucken

  Alt 18. Feb 2015, 15:59
Die Rect-Funktion steht IIRC in Types.pas, also wieder voll qualifizieren: Types.Rect.
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
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#2

AW: Lazarus: StringGrid drucken

  Alt 18. Feb 2015, 16:04
Was steht in unit1.pas in der Zeile 252 ?


Die Druckfunktion von swiss funktioniert einwandfrei. Habe ich hier gerade mit Lazarus getestet.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Kralle

Registriert seit: 31. Okt 2004
Ort: Bremerhaven
355 Beiträge
 
Delphi XE7 Professional
 
#3

AW: Lazarus: StringGrid drucken

  Alt 18. Feb 2015, 16:16
Was steht in unit1.pas in der Zeile 252 ?
 Y2 := 450;
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
OS: Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC)
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#4

AW: Lazarus: StringGrid drucken

  Alt 18. Feb 2015, 16:19
In welchem Kontext? Mal eben Ein Grid platziert und das ausgedruckt?
Yupp.


Schmeiss bitte einmal Deine gesamte Unit hoch.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Kralle

Registriert seit: 31. Okt 2004
Ort: Bremerhaven
355 Beiträge
 
Delphi XE7 Professional
 
#5

AW: Lazarus: StringGrid drucken

  Alt 18. Feb 2015, 16:25
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"
OS: Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC)
  Mit Zitat antworten Zitat
Kralle

Registriert seit: 31. Okt 2004
Ort: Bremerhaven
355 Beiträge
 
Delphi XE7 Professional
 
#6

AW: Lazarus: StringGrid drucken

  Alt 18. Feb 2015, 16:27
Ich glaube mein Lazarus hat einen Schuß
OS: Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC)
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#7

AW: Lazarus: StringGrid drucken

  Alt 18. Feb 2015, 16:39
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.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 08:45 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