// Класс формы:, и пускай программа сама считает, сколько будет ADOTable, и для каждой создает свой СтрингЛист. Вот теперь должно быть понятно, почему я написал "почти". Это все будет работать, только если во всех этих таблицах нужное тебе поле имеет одинаковое название. Иначе - эти названия надо будет тоже где-то хранить, потеряется гибкость. Ну, в общем дальше уже сам додумывай, тебе лучше знать, в каком виде у тебя это все задается, и как используется.
type
TForm1 = class(TForm)
// ...
private
{ Private declarations }
arrSL: array of TStringList;
public
{ Public declarations }
procedure CreateStrList(var T: TADOTable; sFieldName: string; i: integer);
end;
procedure TForm1.CreateStrList(var T: TADOTable; sFieldName: string; i: integer);
var s: string;
begin
T.First;
while not T.Eof do begin
s := s + ',' + T.FieldByName(sFieldName).AsString;
T.Next;
end;
arrSL[i] := TStringList.Create;
arrSL[i].Duplicates := dupIgnore;
arrSL[i].Delimiter := ',';
arrSL[i].DelimitedText := s;
end;
procedure TForm1.FormShow(Sender: TObject);
var i: integer;
begin
SetLength(arrSL, 0);
for i := 0 to Form1.ComponentCount - 1 do
begin
if Form1.Components[i] is TADOTable then
begin
SetLength(arrSL, Length(arrSL) + 1);
CreateStrList(Form1.Components[i] as TADOTable, 'txt', Length(arrSL) - 1);
end;
end;
end;
повторяющиеся данные в dbgrid - ? |