TStringGrid : Daten speichern und drucken.

Rund um die LCL und andere Komponenten
bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

TStringGrid : Daten speichern und drucken.

Beitrag von bembulak »

Erstmal Hallo und ein gutes neues Jahr. Viel Erfolg euch allen!

Obwohl mir dazu schon einmal geraten wurde, ich aber bisher die Zeit nicht fand, habe ich gestern die TStringGrid-Komponente für mich entdeckt. Da ich ja ohnehin ein Programm zum Aufzeichnen meiner Arbeitsstunden schreiben wollte, bietet es sich hier sehr gut an!

Die Eingabe von Daten und das Anpassen funktionieren schon recht gut. Wobei ich allerdings schon beim drüber Nachdenken (ohne es versucht zu haben, weil ich nicht weiß, wo ich beginnen soll) Schwierigkeiten habe:
  • Wie kann ich die Daten am Besten speichern? Die Spaltenanzahl ist immer gleich, bloß die Zeilen können variieren. Mit dem Laden uns Schreiben von Daten habe ich noch nicht mehr gemacht, als StringLists mit den Methoden SaveToFile und LoadFromFile zu schreiben/lesen. Dies erscheint mir hier aber denkbar umständlich. Auch mit Sqlite oder so habe ich bisher keine Erfahrungen gesammelt.
    Ist mein Ziel zu hoch gesteckt, oder gibt es eine Möglichkeit für mich, mein Vorhaben zu realisieren?
  • Auch mit dem Drucken habe ich bisher keine Erfahrungen. Je nachdem, wie ich die Daten speichere und lade - ist es besser, den Inhalt von TStringGrid zu drucken (und wenn ja, wie und wo fängt man an)? Oder ist es besser, den Inhalt des "Speichers" (also der Datei oder Datenbank) auf Papier zu bringen?
Ich wäre euch sehr dankbar für eure Meinungen, Anregungen, Ratschläge. Vielen Dank schon mal.

Beste Neujahrsgrüße nochmal,

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Zeilen und Spalten können variiieren und werden automatisch mitgeladen:

Code: Alles auswählen

procedure StringGridOeffnen(StringGrid: TStringGrid; FileName: string);
var F: TStringList;
    i: integer;
begin
  F:= TStringList.Create;
  try
    F.LoadFromFile(FileName);
    StringGrid.RowCount := StrToInt(F[0]);
    StringGrid.ColCount := StrToInt (F[1]);
    for i := 0 To (StringGrid.RowCount - 1) do
      StringGrid.Rows[i].CommaText := F[i + 2];
  finally
    F.Free;
  end;
end;
 
 
procedure StringGridSpeichern(StringGrid: TStringGrid; FileName: string);
var F: TStringList;
    i: integer;
begin
F := TStringList.Create;
  try
    F.Add(IntToStr(StringGrid.RowCount));
    F.Add(IntToStr(StringGrid.ColCount));
    for i := 0 to (StringGrid.RowCount - 1) do
      F.Add(StringGrid.Rows[i].CommaText);
    F.SaveToFile (FileName);
  finally
    F.Free;
  end;
end;
Johannes

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Wow, Dankeschön! Dass dies doch so funktionieren kann, hätte ich nicht gedacht. Ich will mir das jetzt noch mal genauer ansehen, bevor ich dies Prozeduren einfach so verwende.
Danke vielmals.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6770
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

Eventuell ist der LazReport auch noch eine Erwähnung wert. In den Komponeneten Unterverzeichnis befinden sich auch Beispiele, wie man ohne Datenbank den auch verwendet.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Super! Dann muss ich meine Version mal wieder auf den neuesten Stand bringen. Ist schon ne Weile her, dass ich das letzte mal das PDF gezogen habe.
Danke.

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Ich glaub du verwechselst was...PDF?

Af meint nicht die LazSnippets, sondern LazReport als Komponentenpacket von Lazarus, und in dem Verzeichnis gibts die Beispiele ;)
Johannes

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

@|
Sorry, da war ich wohl wirklich zu schnell. Hab af... gelesen und sodann gleich meine Schlüsse gezogen. Das war sehr wohl ein Fehler (wo gerade ich das bei anderen nicht mag, wenn sie nicht richtig lesen und nachdenken... uiui... kein guter Start ins neue Jahr... :( )

LazReport? Das hört sich auf jeden Fall interessant an. Ich muss aber gestehen, dass ich nicht weiß, ob ich damit nicht gar ein wenig überfordert sein werde, da ich im Moment ja noch damit kämpfe, den Toolbar-buttons Bilder aufzuzwingen, wenn möglich. Aber ich steh halt wie der Ochs vorm besagten Scheunentor.
Wäre LazReport nicht ein wenig zu Viel des Guten, nur um nen Stundenzettel zu drucken? Ich meine: geil, ich wollte immerschon mit freien Reportingsachen herumspielen und freue mich über die Info. :)
Aber ich fürchte, dass meine Fähigkeiten noch weit nicht ausreichen, um es zu beherrschen. Da ist im Moment zuviel Input für mich. Viele Klassen, DatenStrukturen,... Eine weitere Komponente wird es mir nicht gerade einfacher machen, versteht ihr?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6770
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

bembulak hat geschrieben:Aber ich fürchte, dass meine Fähigkeiten noch weit nicht ausreichen, um es zu beherrschen. Da ist im Moment zuviel Input für mich. Viele Klassen, DatenStrukturen,... Eine weitere Komponente wird es mir nicht gerade einfacher machen, versteht ihr?
LazReport wird sicher ein wenig zu viel des Guten sein, zumindest für den Anfang. Kann aber, weil bereits mit Beispielen vorhanden, eine Abkürzung sein.

Denn Drucken ist meistens eine schwierigere Sache, wenn es über einfache Texte hinausgeht. Zumindest das der Ausdruck immer genausoschön aussieht wie am Bildschirm (auf allen Druckern). Ist zumindest meine Erfahrung. Deshalb habe ich auch bei kleineren Projekten meistens Reportgeneratoren eingestzt. Ist am Anfang ein wenig mehr Einarbeitung, später aber recht angenehm, weil die Projekte dann relativ Problemlos in der Größe skaliert werden können.

Ich habe mit dem LazReport bis jetzt ein wenig herumgespielt, wenn du ihn einsetzen willst, so werde ich Versuchen dir da Support zu geben und damit auch gleich ein wenig für die LazInfos an Material aus den Fragen erzeugen :-) Dann hätten wir alle was davon.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Hm, das überzeugt mich. Sobald ich an die Stelle mit dem Drucken komme, melde ich mich wieder, ja?
Da ich noch nie Komponenten nachinstalliert habe, wird das allein schon ein Heidenspass. :/

Danke.

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

fünf klicks und Lazreport ist installiert ;)
Johannes

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Naja, wenn man das noch nie gemacht hat, ist die Angst, sich die Konfig irgendwie zu zerschiessen, doch groß.
Fünf Klicks wären ja nicht viel, aber wo muss man klicken? ;)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Probiers doch einfach mal und sag uns wo du hängen bleibst
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Komponenten > Installierte Packages einrichten...

Rechts Lazreport auswählen, Auswahl installieren klicken und anschließend unten Speichern und IDE neu bauen, nachfolgenden Dialog noch ein Klick auf Ok (ist der 6. Klick, hab mich verzählt :lol: ) und warten bis Laz kompiliert hat und neu startet.
Johannes

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Beitrag von creed steiger »

Hier ein Video wie Lazreport installiert wird:

http://rapidshare.de/files/38225046/rep ... n.ogv.html" onclick="window.open(this.href);return false;

Hier ein Flashvideo zur Reporterstellung
http://lazreport.sourceforge.net/lazreport_flash1.html" onclick="window.open(this.href);return false;

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Danke.
In der Zwischenzeit habe ich es versucht und auch geschafft. Ein LPK einzufügen ist ja ganz einfach, wenn es der Distributor gut arbeitet. Hurra.

Jetzt seh ich mir das Video an, spiele ein wenig rum, werde das für af... gleich auch noch dokumentieren (LazInfos) und dann gehts auch schon los.

Danke für die Hilfe!

Antworten