Ich hab mal einen kleinen Schnippsel um die Daten aus einem DataSet in Edit-Feldern anzuzeigen.
Übergeben werden mus der Name der Form, Das DataSet, dann noch das Feld in dem ein eindeutiger Wert steht(pk) sowie der gesuchte Wert (value)
Delphi-Quellcode:
function FillToEdit(frm: TForm;ds : TDataSet;pk,value: string):boolean;
{**************************************************************************
Zeigt ausgewählten Datensatz in namensgleichen Edit-Feldern an.
**************************************************************************}
var
i: Integer;
begin
result := true;
if ds.Locate(pk,value,[]) then
begin
for i:=0 to frm.ComponentCount-1 do
begin
if frm.Components[i] is TEdit then
begin
if ds.FieldDefs.IndexOf(frm.Components[i].Name) <> -1 then
TEdit(frm.Components[i]).Text :=
ds.FieldByName(frm.Components[i].Name).AsString;
end;
end;
end
else
result := false;
end;
In dem Array cols werden die Feldnamen die im ListView angezeigt werden sollen übergeben. das Feld pk wird nicht mit angezeigt, aber gespeichert. Dort kann der eindeutige Wert um den Datensatz zu identifizieren abgelegt werden.
Delphi-Quellcode:
procedure FillListView (cols:array of string;pk: string;lv: TListView;ds : TDataSet);
{**************************************************************************
Zeigt ausgewählte Datensätze eines Datasets in einem ListView an.
**************************************************************************}
var
NewItem: TListItem;
i: integer;
begin
with ds do
begin
First;
lv.Items.Clear;
lv.ViewStyle := vsReport;
lv.RowSelect := true;
for i := 0 to length(cols)-1 do
begin
lv.Columns.Add();
lv.Column[i].Caption := cols[i];
end;
while not eof do
begin
NewItem := lv.Items.Add;
NewItem.Caption := FieldByName(cols[0]).AsString;
for i := 1 to length(cols)-1 do
NewItem.SubItems.Add(FieldByName(cols[i]).AsString);
NewItem.SubItems.Add(FieldByName(pk).AsString);
Next;
end;
end;
end;
Gruß
tr909