Man kann auch ausgehend von der DataSource rückschliesen auf alle verbundenen
DB aware Controls.
Diese Controls könnten ja auch auf einem anderen Formular oder Frame liegen.
Für jedes Control gibt es einen internen
TDataLink.
Und das geht so:
Delphi-Quellcode:
type
TDataSourceCracker=class(TDataSource);
procedure TForm1.Button1Click(Sender: TObject);
var
dlist : TList;
i : Integer;
dlink : TDataLink;
control : TComponent;
begin
dlist := TDataSourceCracker(DataSource1).DataLinks;
for i := 0 to dlist.Count-1 do
begin
dlink := TDataLink(dlist[i]);
if dlink is TFieldDataLink then
begin
control := TFieldDataLink(dlink).Control;
memo1.lines.add('Control: ' +control.GetNamePath+ ' Fieldname:'+TFieldDataLink(dlink).FieldName);
end;
end;
end;