![]() |
Stringgrid im Quickrep darstellen
Hallo
ich würde gerne wissen wie ich den Inhalt eines Stringgrid's in einem Quickreport ausgeben kann. Mein Stringgrig hat 5 Spalten, diese würde ich gerne Tabellenartig im Quickreport anzeigen. Ich arbeite nicht mit einer Datenbank sondern mit *csv Dateien. Das Stringgrid nehme ich deswegen weil relativ untschiedlich langer Text gespeichert werden soll und auch immer wieder neue Zeilen hinzugefügt werden müssen. Die Ausgabe soll dann Tabellenmäßg im Quickreport angezeigt werden. Ich hab auch schon mit Stringgrid to HTML rumexperimentiert (nun seit 2 Tagen), mein Problem damit war der unterschiedlich lange Text, die Tabellen wurden immer wieder in der Breite zerhauen, je nachdem wie lang der Text im Stringgrid halt war. Un da ich nicht genau weiß wieviel Text jemand eingibt klappt das damit nicht *schade* |
Re: Stringgrid im Quickrep darstellen
Du könntest folgendes tun:
* StringGrid durch DBGrid ersetzen * die Daten werden in einer Memorytable gehalten, anstatt wie bisher im StringGrid * da die Memorytable von TDataset abgeleitet ist, kannst du QRDBText benützen um die Daten anzuzeigen. Memorytables gibt's hier: ![]() Auch in der JVCL oder der RX-Lib sind Memorytable Komponenten enthalten. |
Re: Stringgrid im Quickrep darstellen
Hallo shmia
ohne DBGrid geht es nicht? Dann muss ich ja mit einer Datenbank arbeiten, oder? :gruebel: Oder ist dafür das Memorytable? gruss vom capo |
Re: Stringgrid im Quickrep darstellen
Zitat:
Zitat:
Wenn du schon mal mit TTable und/oder TQuery gearbeitet hast, ist das natürlich von Vorteil, denn musst die wichtigsten Methoden von TDataset kennen und benützen. |
Re: Stringgrid im Quickrep darstellen
|
Re: Stringgrid im Quickrep darstellen
Hallo Hansa,
das Problem ist das ich mit verschiedenen Stringgrids arbeiten muss, d.h. verschiedene Stringgrids unterschiedlich miteinander kombinieren muss. gruss capo |
Re: Stringgrid im Quickrep darstellen
Zitat:
|
Re: Stringgrid im Quickrep darstellen
Das Problem ist, dass ich richtig formatieren können muss, mit Logo und allem drum und dran, deshalb wollte ich ein Quickrep nehmen.
Und evt. auch noch andere Kompos verwendet werden die auch mit ausgedruckt werden müssen. Ausserdem kann das mit den Formatierungsmöglichkeiten nicht beurteilen weil mit folgendem Beispiel folgender Fehler auftritt. ![]() Zitat:
|
Re: Stringgrid im Quickrep darstellen
Das hier ist doch schonmal ein Anfang :
Zitat:
|
Re: Stringgrid im Quickrep darstellen
Hallo Hansa,
die Daten werden vom User eingegeben, bisher sind die Daten immer in Excel eingegeben worden. Es sind Protokolle über Arbeitsabläufe die festhalten sollen was erledigt wurde und was nicht. Mit der Zeit werden die Listen immer länger und das Problem ist, dass manche Einträge dieser Liste nicht mehr mit ausgedruckt werden müssen, andere aber doch.(weil doch noch nicht erledigt) Mit Excel ist das aber alles zu Zeitintensiv. (zuviel Copy&Paste) Es muss kein Stringgrid sein. Es kann auch eine andere Komponente sein, es muss auch kein Quickrep sein. Wie gesagt hatte ich mit HTML und einem Stringgrid experimentiert, leider liefert diese Methode kein zuverlässiges Ergebnis. Das ganze ist ja auch nur der Anfang aber wenn ich den schonmal habe bekomme ich den Rest selber hin. Zitat:
Letztenendes ist es ja nur die Art der Darstellung die mir Kopfzerbrechen bereitet. grüsse vom capo |
Re: Stringgrid im Quickrep darstellen
Zitat:
|
Re: Stringgrid im Quickrep darstellen
Das muss doch auch anders gehen, ich kann dir da aber auch nicht weiter helfen.
|
Re: Stringgrid im Quickrep darstellen
Wen du die Einarbeitung in Datenbanken scheust, mußt du halt den komplizierteren für dich einfacheren Weg gehen und das Grid zur Laufzeit in QR erzeugen.
|
Re: Stringgrid im Quickrep darstellen
Also ich habe lange nicht mit QReport gearbeitet, aber ein DBGrid kann das auch nicht so ohne Weiteres anzeigen, oder?
Soweit ich weiss, muss man doch ein Master-Band erstellen und für jedes Feld ein TQRDBText in das Band reinbepseln. Meine Idee (mit Funktionsgarantie :zwinker:): Dazu benötigst Du die Explode-Funktion (hier aus dem Forum), das eine CSV-Zeile in ein Array Of String überführt. 1. Verwende ein TStringsBand: In die Items-Eigenschaft kommt einfach die CSV-Datei. 1.a Im OnBeforePrint-Ereignis des TStringsBands rufst Du Explode auf und erzeugst so ein Array Of String mit den einzelnen Zellenwerten.
Delphi-Quellcode:
2. Für jede Spalte erzeugst Du zur Laufzeit eine TQRLabel-Komponente, die Position kannst Du anhand der String-Grid-Spaltenbreiten ausrechnen. In die Tag-Eigenschaft kommt die Spaltennummer.
Procedure TForm1.QRStringsBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean);
Begin // In QRStringsBand1 steht der aktuelle Datensatz im CSV-Format. Explode (QRStringsBand1.Item, MyFieldArray); // Jetzt stehen im MyFieldArray die Zellenwerte der aktuellen Zeile. End; 2.a Im OnBeforePrint-Ereignis der TQRLabel-Komponenten schreibst Du:
Delphi-Quellcode:
Et voilá. Fertig ist der dynamische Stringgrid-Ausdruck-O-Mat.
procedure TForm1.QRLabel2Print(sender: TObject; var Value: String);
Begin Value := MyExplodedFields[ TQRLabel(Sender).Tag] // .Tag ist ja die Spaltennummer End; |
Re: Stringgrid im Quickrep darstellen
Hallo alzaimar,
vielen Dank, ich guck mir das an und geb dann Rückmeldung :) gruss capo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:29 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