![]() |
Datenbank: mysql • Version: neuste • Zugriff über: direkt
Daten von Datenbank in eine Tabelle füllen
Also folgendes... ich hab das Tutorial von Luckie mal durchgemacht und mir die Beispielanwendung, das Adressbuch, mal "vorgenommen". Siehe
![]() Hab auf das Formular noch ne TListView draufgesetzt. Diese soll genau so gefüllt werden wie das TStringGrid welches schon drauf war. Also hab ich diese prozedur (FillGrid) leicht modifiziert:
Delphi-Quellcode:
Aber irgendwie funktioniert das nicht richtig... Momentan kommt dann immer ne Fehlermeldung "Zugriffsverletzung..."
procedure tform1.FillGrid(SG: TStringGrid; Cols: TCols; Rows: TRows);
var i, j : Integer; NewItem: TlistItem; clmen: TListColumn; k : integer; begin ListView1.Clear; SG.ColCount := 0; SG.RowCount := 0; if Assigned(Rows) then begin SG.RowCount := length(Rows[0]) + 1; SG.ColCount := length(Cols); SG.FixedRows := 0; for i := 0 to length(Cols) - 1 do begin SG.Cols[i].Add(Cols[i]); SG.Cells[i, 0] := Cols[i]; end; for i := 0 to length(Cols) - 1 do begin for j := 0 to length(Rows[0]) - 1 do begin SG.Cells[i, j + 1] := Rows[i, j]; end; end; end; if Assigned(Rows) then begin for i := 0 to length(Cols) - 1 do begin clmen := ListView1.Columns.Add; clmen.Caption := Cols[i]; end; for k := 0 to length(rows[0]) + 1 do begin NewItem := ListView1.Items.Add; NewItem.Caption := ''; for i := 0 to length(rows) + 1 do NewItem.SubItems.Add(''); end; end; for i := -1 to length(Cols) - 1 do begin for j := 0 to length(Rows[0]) - 1 do begin ListView1.Items[j].SubItems[i] := Rows[i, j]; end; end; end; Gruß Martin W |
Re: Daten von Datenbank in eine Tabelle füllen
NewItem.Create irgendwo einbauen.
|
Re: Daten von Datenbank in eine Tabelle füllen
Delphi-Quellcode:
Wen es interessiert, hier ist es richtig, hab den Fehler gerfunden.
var
i, j : Integer; NewItem: TlistItem; clmen: TListColumn; k : integer; begin ListView1.Clear; SG.ColCount := 0; SG.RowCount := 0; if Assigned(Rows) then begin SG.RowCount := length(Rows[0]) + 1; SG.ColCount := length(Cols); SG.FixedRows := 0; listview1.Columns.Clear; Listview1.Clear; for i := 0 to length(Cols) - 1 do begin SG.Cols[i].Add(Cols[i]); SG.Cells[i, 0] := Cols[i]; end; for i := 0 to length(Cols) - 1 do begin for j := 0 to length(Rows[0]) - 1 do begin SG.Cells[i, j + 1] := Rows[i, j]; end; end; end; if Assigned(Rows) then begin for i := 0 to length(Cols) - 1 do begin clmen := ListView1.Columns.Add; clmen.Caption := Cols[i]; end; for k := 0 to length(rows[0]) + 1 do begin NewItem := ListView1.Items.Add; NewItem.Caption := ''; for i := 0 to length(rows) + 1 do NewItem.SubItems.Add(''); end; end; k := -2; /// Ab hier verändert /// for i := 0 to length(Cols) - 1 do begin inc(k); for j := 0 to length(Rows[0]) - 1 do begin if k = -1 then begin ListView1.Items[j].Caption := Rows[i, j]; end else begin ListView1.Items[j].SubItems[k] := Rows[i, j]; end; end; end; end; |
Re: Daten von Datenbank in eine Tabelle füllen
Sorry, mein Kommentar war etwas falsch, NewItem := ListView1.Items.Add erstellt ja das Object. Sorry :wall:
|
Re: Daten von Datenbank in eine Tabelle füllen
Äh, was soll denn das:
Delphi-Quellcode:
Entwerder Striggrid oder Listview. Und was wenn mein Listview lstData heißt? dann kann ich in dem Code alle Stellen ändern wo du den Listview hardgecodet hast. Nicht sehr schön.
SG.RowCount := length(Rows[0]) + 1;
SG.ColCount := length(Cols); SG.FixedRows := 0; listview1.Columns.Clear; Listview1.Clear; |
Re: Daten von Datenbank in eine Tabelle füllen
Zitat:
|
Re: Daten von Datenbank in eine Tabelle füllen
Du hast doch den Code vor dir. Wie habe ich es denn mit dem StringGrid gemacht? :roll:
|
Re: Daten von Datenbank in eine Tabelle füllen
Jo... als Variable der Prozedur übergeben... aber das war ja nur zum Üben =) Wichtiger ist mir die Frage im anderen Thread ;-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 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 by Thomas Breitkreuz