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 hier (tutoriallink)
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 03:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz