![]() |
Fastreport DBGrid
Hallo,
ich drucke ein DBGrid (Jedi) mit Hilfe eines Crosstab aus und bin am verzweifeln einzelne Spalten auszurichten. Leider habe ich nur die Fastreport Basic Variante und dort gibt es nicht die Möglichkeit über OnPrintCell-Event die Spalten zu formatieren. Gibt es eine Möglichkeit während der Laufzeit die Spalten zu formatieren oder eine andere Variante wie ich das schon formatierte DBGrid mit Fastreport ausdrucken kann ? Grüße Michael |
AW: Fastreport DBGrid
Jedes Datenbankfeld (Basisklasse TField) kennt das Event
![]() Damit kann man über einen Eventhandler die Textrepräsentation des Feldes beliebig formatieren. Man könnte z.B. aus einem Integerfeld mit dem Wert 2380 den Text "2,380 ms" erzeugen. |
AW: Fastreport DBGrid
Ich kenne die Fastreport Basic Variante nicht.
In meiner Version kann man eine Zelle im Crosstab auswählen. Dann unter Eigenschaften "Memo" auswählen. Dort unter "Highlight" die Bedingung für die Formatierung angeben. oder: kein CrossTab verwenden sonder mit Memos und Rahmen arbeiten und Hightlight der Memos nutzen Eventuell hilft Dir das ja weiter. |
AW: Fastreport DBGrid
Hallo,
das Problem ist das ich nicht weiß wie viele Spalten es zur Laufzeit gibt und deshalb kann ich es nicht im Report vorher schon definieren. Irgendwie muss es doch eine Möglichkeit geben zu sagen das Spalte 1 Rechtsbündig ausgerichtet werden soll. Grüße Michael |
AW: Fastreport DBGrid
Die Fragestellung ist etwas merkwürdig.
1. Man druckt kein DBGrid aus, sondern erstellt eine eigene Tabelle in FastReport auf Grundlage von Datenmengen (TDataSet). 2. Bei einer Kreuztabelle ist ja gerade der Witz der, das man die Spalten zur Laufzeit erstellt. Das liegt in der Natur der Sache. Einerseits hast Du ein TDBGrid, andererseits eine Kreuztabelle. Was denn nun? Wenn Du eine Crosstab hast und die erste Spalte statisch rechtsbündig ausrichten willst, versuche, die Query so umzuformen, das die erste Spalte als eigene Spalte erscheint (denn die ist ja dann auch statisch). Eventuell kommst du dann weiter (aber ich sehe nicht direkt, wie). Aber es scheint mit Mühe zu gehen, vermutlich über Umwege: Man kann den fertig gerenderten Report ja auch nachträglich per Delphi-Code durchsuchen und entsprechende Komponenten anfassen. Hier müsstest Du an die erste Spalte deines Crosstab-Objekts herankommen. |
AW: Fastreport DBGrid
Sende doch mal ein Bild wie es aussehen soll
Vielleicht hilft Dir auch folgendes: ![]() |
AW: Fastreport DBGrid
Liste der Anhänge anzeigen (Anzahl: 1)
Anbei mal ein Bild wie es jetzt mit einem Crosstab aussieht.
Die Gesamtsumme will ich rechts ausrichten.
Delphi-Quellcode:
procedure TfrmAuswertung.frxReport1BeforePrint(Sender: TfrxReportComponent);
//CrossView füllen var Cross: TfrxCrossView; i, j: Integer; s: string; begin if Sender is TfrxCrossView then begin Cross := TfrxCrossView(Sender); DBGrid1.DataSource.DataSet.First; i := 0; while not DBGrid1.DataSource.DataSet.Eof do begin for j := 0 to DBGrid1.DataSource.DataSet.Fields.Count - 1 do begin if (DBGrid1.DataSource.DataSet.Fields[j] is TFloatField) then begin s := format('%.2f',[DBGrid1.DataSource.DataSet.Fields[j].AsFloat]); Cross.AddValue([i], [DBGrid1.DataSource.DataSet.Fields[j].DisplayLabel], [s]); end else begin Cross.AddValue([i], [DBGrid1.DataSource.DataSet.Fields[j].DisplayLabel], [DBGrid1.DataSource.DataSet.Fields[j].AsString]); end; end; DBGrid1.DataSource.DataSet.Next; Inc(i); end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 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