Hai Plague,
da ein TListView keine Datenbanksensitive-Komponente ist musst Du das alles von Hand machen. Ich mache es immer so:
Ich speichere mit über die Eigenschaft
.Data eines Items den Primärschlüssel eines Datensatzes (ID-Feld). Bei einem klick auf die Zeile des ListViews führe ich ein neues SELECT aus und filtere auf die Ausgewähle ID.
Hier mal ein Beispiel wie ich es in einem Projekt gemacht habe:
Delphi-Quellcode:
procedure TFRM_Main.ShowAnreden;
// Alle Anreden in einem ListView anzeigen
var
LI: TListItem;
LC: TListColumn;
begin
with DataModule1.ZReadOnlyQuery1
do
begin
close;
SQL.Text := '
SELECT * FROM anreden ORDER BY anrede';
open;
ListView1.Items.BeginUpdate;
Listview1.Items.Clear;
Listview1.Columns.Clear;
LC := ListView1.Columns.Add;
LC.Caption := '
Anrede';
LC.Width := 150;
LC := ListView1.Columns.Add;
LC.Caption := '
Briefanrede';
LC.Width := 250;
while not (EOF)
do
begin
LI := Listview1.Items.Add;
LI.ImageIndex := 0;
LI.Data := Pointer(FieldByName('
id').AsInteger);
// ID speichern!
LI.Caption := FieldByName('
anrede').AsString;
LI.SubItems.Add(FieldByName('
briefanrede').AsString);
Next;
end;
ListView1.Items.EndUpdate;
close;
end;
end;
An die ID des markierten Items kommst Du dann so:
ID := Integer(ListView1.Items[ListView1.ItemIndex].Data)
Stephan B.
"Lasst den Gänsen ihre Füßchen"