Hallo Bigeddie,
habs mit zwei Datagrid´s gemacht.
Die Relation hast du ja schon erstellt.
erstelle einen Delegaten "DataGridX.CurrentCellChanged"
In der zugehörigen Procedure machst du dann einen Refresh
Delphi-Quellcode:
procedure TWinForm.TWinForm_Load(sender: System.Object; e: System.EventArgs);
begin
include(DataGrid1.CurrentCellChanged,dgCellChange);
end;
procedure TWinForm.dgCellChange(sender: TObject; e: System.EventArgs);
begin
RefreshChild;
end;
procedure TWinForm.RefreshChild;
var
drM, drN : DataRow;
drws : array[] of DataRow;
i, curDgRow, curTabRow, akt : integer;
mString : string;
begin
dtR.Clear;
curDgRow := DataGrid1.CurrentRowIndex;
curTabRow := convert.ToInt32(DataGrid1.Item[curDgRow,0]);
mString := DataGrid1.Item[curDgRow,0].ToString;
for i:= 0 to myds.Tables['T_MASTER'].Rows.Count-1 do
if mString=myds.Tables['T_MASTER'].Rows[i].Item[0].ToString then
begin
akt:=i;
Break;
end;
drM := myds.Tables['T_MASTER'].Rows[akt];
drws := drM.getChildRows(dRel);
for i:=0 to high(drws) do
// dtR.ImportRow(drws[i]);
begin
drN := dtR.NewRow;
drN.Item[0] := Convert.ToInt32(drws[i].Item[0]);
drN.Item[1] := Convert.ToInt32(drws[i].Item[2].ToString);
drN.Item[2] := drws[i].Item[1].ToString;
dtR.Rows.add(drN);
end;
DataGrid2.DataSource:= dtR;
end;
gibt aber vermutlich elegantere Lösungen
ciao