StringGrid Datendarstellung als Baumstruktur
StringGrid Datendarstellung als Baumstruktur
Hallo Zusammen,
ich beschäftige mich seit ein paar Tagen mit dem StringGrid.
Es mit SQL Daten zu befüllen klappt bereits.
Nun kam mir die Idee, mit einem StringGrid auch eine Baumstruktur darzustellen.
Ich stell mir das so vor.
Die Hauptzeile soll Summendaten beinhalten.
Etwas weiter darunter sollen dann die einzelnen Einträge erscheinen.
In etwa so :
1Head Überschirift : ____Niederlassung Anzahl Mitarbeiter Anzahl Abteilungen
________________Hamburg____2____________2
Child Überschift__________________Name Mitabreiter Abteilung
________________ ___________Max Mustermann Vertrieb
________________ ___________Anna Mustermann Buachhaltung
2Head Überschirift : ____Niederlassung Anzahl Mitarbeiter Anzahl Abteilungen
________________Berlin____1____________1
Child Überschift__________________Name Mitabreiter Abteilung
________________ ___________Klaus Mustermann Vertrieb
usw..
Eine Treeview möchte ich nicht.
Hab mich schon etwas informiert und nichts auf die schnelle gefunden.
Kann man so etwas mit einem String Grid darstellen ?
Jemand einen Tip ?
danke für euer Antworten
Lg Bernie
ich beschäftige mich seit ein paar Tagen mit dem StringGrid.
Es mit SQL Daten zu befüllen klappt bereits.
Nun kam mir die Idee, mit einem StringGrid auch eine Baumstruktur darzustellen.
Ich stell mir das so vor.
Die Hauptzeile soll Summendaten beinhalten.
Etwas weiter darunter sollen dann die einzelnen Einträge erscheinen.
In etwa so :
1Head Überschirift : ____Niederlassung Anzahl Mitarbeiter Anzahl Abteilungen
________________Hamburg____2____________2
Child Überschift__________________Name Mitabreiter Abteilung
________________ ___________Max Mustermann Vertrieb
________________ ___________Anna Mustermann Buachhaltung
2Head Überschirift : ____Niederlassung Anzahl Mitarbeiter Anzahl Abteilungen
________________Berlin____1____________1
Child Überschift__________________Name Mitabreiter Abteilung
________________ ___________Klaus Mustermann Vertrieb
usw..
Eine Treeview möchte ich nicht.
Hab mich schon etwas informiert und nichts auf die schnelle gefunden.
Kann man so etwas mit einem String Grid darstellen ?
Jemand einen Tip ?
danke für euer Antworten
Lg Bernie
Re: StringGrid Datendarstellung als Baumstruktur
Hallo nochmals..
hab jetzt einfach mal ausprobiert und bekomme auch ein Ergebnis

Ich habs so gemacht :
Geht bestimmt auch anders ?
Hatte mir auch schon überlegt ob man nicht gleich alles in eine Abfrage packt.
Wie würdet ihr das machen ?
Lg Bernie
hab jetzt einfach mal ausprobiert und bekomme auch ein Ergebnis

Ich habs so gemacht :
Code: Alles auswählen
procedure TFrm_TBL_UEBERSICHT.DBGrid1_Aktualisieren;
var
s : String;
s2 : String;
s3 : String;
i: integer;
i2 : integer;
begin
s := 'select * from v_TBL_UEBERSICHT '
+ ' ; ';
SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.ADD(s);
SQLQuery1.Open;
SQLQuery1.Last;
s2 := 'select * from STAMM_TABELLEN_FELD_NAMEN '
+ ' ; ';
SQLQuery2.Close;
SQLQuery2.SQL.Clear;
SQLQuery2.SQL.ADD(s2);
SQLQuery2.Open;
SQLQuery2.Last;
//Gesamtanzahl der Rows
StringGrid1.RowCount := SQLQuery1.RecordCount + 1 + SQLQuery2.RecordCount + 200;
SQLQuery1.first;
SQLQuery2.Close;
i := 0;
while not SQLQuery1.Eof do begin
i := i + 1;
StringGrid1.Cells[0,i] := SQLquery1.FieldByName('TBL_NAMEN_ID').AsString;
StringGrid1.Cells[1,i] := SQLquery1.FieldByName('TBL_NAMEN_NAME_DATENBANK').AsString;
StringGrid1.Cells[2,i] := SQLquery1.FieldByName('TBL_NAMEN_CODE').AsString;
StringGrid1.Cells[3,i] := SQLquery1.FieldByName('TBL_NAMEN_Bez').AsString;
StringGrid1.Cells[4,i] := SQLquery1.FieldByName('AnzFelder').AsString;
// hier bräuchte ich eine neue Zeile für die Überschrift der folgenden Daten
//StringGrid1.Cells[3,i] := 'FELD NAME';
//StringGrid1.Cells[4,i] := 'FELD TYP';
s3 := 'select * from STAMM_TABELLEN_FELD_NAMEN '
+ ' WHERE TBL_FELD_TBL_NAMEN_ID = '''+SQLquery1.FieldByName('TBL_NAMEN_ID').AsString+''' ; ';
SQLQuery3.Close;
SQLQuery3.SQL.Clear;
SQLQuery3.SQL.ADD(s3);
SQLQuery3.Open;
SQLQuery3.First;
for i2 := 0 to SQLquery1.FieldByName('AnzFelder').asInteger + 1 do begin
i := i + 1;
StringGrid1.Cells[3,i] := SQLquery3.FieldByName('TBL_FELD_NAME').AsString;
StringGrid1.Cells[4,i] := SQLquery3.FieldByName('TBL_FELD_TYP').AsString;
SQLquery3.Next;
end;
SQLquery1.Next;
end;
end;
Hatte mir auch schon überlegt ob man nicht gleich alles in eine Abfrage packt.
Wie würdet ihr das machen ?
Lg Bernie
- gladio
- Beiträge: 223
- Registriert: Sa 21. Jun 2014, 06:15
- OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: StringGrid Datendarstellung als Baumstruktur
Für sowas würde ich einen Report erstellen.
Re: StringGrid Datendarstellung als Baumstruktur
Reports benutze ich eigentlich nur für Ausdrucke oder zur Weiterleitung.
Um schnell Übersicht auf meine FIlterergebnisse zu haben möchte ich ehrlich gesagt auf Reports zur Ansicht verzichten.
Lg
-
- Beiträge: 726
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: StringGrid Datendarstellung als Baumstruktur
Ja, du kannst Mit StringGrid Baumstrukturen leicht darstellen. Ich habe es früher öfters verwendet. Ich habe ein Beispiel nach deiner Frage erstellt.
Das Beispiel enhält auch Spaltenverschmelzung(Colspan), siehe Maschaftsnamen.
Ich habe für Mitarbeiter Manschaften genommen, als Abteilungen Sportarten und die Städte sind Niederlassungen.
Mann könnte es erfahren in dem man mit Mausklick alle Zeilen einer Abteilung versteckt. Was das für ein Zeilentype ist, kann man aus der ersten Spalte entfernen. In der Objekt-Eigenschaft dieser Spalte kannst du alle deiner Verwaltungsvariablen, wie Index in der DB usw. verstecken.
Das Beispiel enhält auch Spaltenverschmelzung(Colspan), siehe Maschaftsnamen.
Ich habe für Mitarbeiter Manschaften genommen, als Abteilungen Sportarten und die Städte sind Niederlassungen.
Mann könnte es erfahren in dem man mit Mausklick alle Zeilen einer Abteilung versteckt. Was das für ein Zeilentype ist, kann man aus der ersten Spalte entfernen. In der Objekt-Eigenschaft dieser Spalte kannst du alle deiner Verwaltungsvariablen, wie Index in der DB usw. verstecken.
- Dateianhänge
-
SGridColspanDemo.zip
- Beispielprogramm
- (124.95 KiB) 74-mal heruntergeladen
Re: StringGrid Datendarstellung als Baumstruktur
Hi Soner herzlichen Dank !!!!Soner hat geschrieben: So 24. Jan 2021, 16:01 Ja, du kannst Mit StringGrid Baumstrukturen leicht darstellen. Ich habe es früher öfters verwendet. Ich habe ein Beispiel nach deiner Frage erstellt.
Das Beispiel enhält auch Spaltenverschmelzung(Colspan), siehe Maschaftsnamen.
Ich habe für Mitarbeiter Manschaften genommen, als Abteilungen Sportarten und die Städte sind Niederlassungen.
Mann könnte es erfahren in dem man mit Mausklick alle Zeilen einer Abteilung versteckt. Was das für ein Zeilentype ist, kann man aus der ersten Spalte entfernen. In der Objekt-Eigenschaft dieser Spalte kannst du alle deiner Verwaltungsvariablen, wie Index in der DB usw. verstecken.
scr2.jpg
Das hilft mir wahnsinnig weiter !!!..
Jetzt check ich auch wie man das mit den Fraben macht.

Wie versteckt man Zeilen ?
Ich hätte es mit mehreren Abfragen gemacht

Lg Bernie
-
- Beiträge: 726
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: StringGrid Datendarstellung als Baumstruktur
Gerne geschehen.
Die Zeilen kannst du verstecken mit :
StringGrid1.RowHeights[Zeilennr]:=0;
Du kannst die Tabelle auch mit zwei Abfragen füllen, das nennt man bei Datenbanken Master/Slave-Tabellen.
Ich würde in deiner Stelle die "Head"- und "Child"-Überschriften in die Titelzeile(Fixedrows) von Stringgrid plazieren, das ist übersichtlicher, siehe: Schau mal bei Berlin, ich habe Treeview-Funktion erstellt, wenn man auf die zweite Spalte klickt, dann öffnet oder schließt es sich. Da wo - oder + ist klicken.
Quelltext liegt bei.
Vielleicht solltest du Virtualtreeview verwenden, es hat schon diese Funktionen. Aber zum Programmieren oder LCL-Lernen ist das hier nicht schlecht.
Viel Spaß.
Die Zeilen kannst du verstecken mit :
StringGrid1.RowHeights[Zeilennr]:=0;
Du kannst die Tabelle auch mit zwei Abfragen füllen, das nennt man bei Datenbanken Master/Slave-Tabellen.
Ich würde in deiner Stelle die "Head"- und "Child"-Überschriften in die Titelzeile(Fixedrows) von Stringgrid plazieren, das ist übersichtlicher, siehe: Schau mal bei Berlin, ich habe Treeview-Funktion erstellt, wenn man auf die zweite Spalte klickt, dann öffnet oder schließt es sich. Da wo - oder + ist klicken.
Quelltext liegt bei.
Vielleicht solltest du Virtualtreeview verwenden, es hat schon diese Funktionen. Aber zum Programmieren oder LCL-Lernen ist das hier nicht schlecht.
Viel Spaß.
- Dateianhänge
-
sgridtreecolspan.zip
- Stringgridtreecolspan-demo2
- (125.33 KiB) 78-mal heruntergeladen
Re: StringGrid Datendarstellung als Baumstruktur
Hallo Soner herzlichen Dank nochmal...Soner hat geschrieben: So 24. Jan 2021, 18:18 Vielleicht solltest du Virtualtreeview verwenden, es hat schon diese Funktionen. Aber zum Programmieren oder LCL-Lernen ist das hier nicht schlecht.
Viel Spaß.
damit hast du mir jetzt alle Fragen vorserst beantwortet ! Merci Merci Merci !!
Ja ich möchte ersteinmal das StringGrid und die Möglichkeiten verstehen.
Und mit deinen Beispielen macht es gleich mehr spass.
Dass man den Zellen Schlüssel mit gibt die man dann zur Farbgebung oder eben für
die PlusMinus Geschichte benutzt, wäre ich so ersteinmal nicht gekommen

Lg Bernie