Вы легко можете легко изменить набор данных, показанный DBGrid, во время выполнения. Существует два подхода:
1: используйте один источник данных, назначенный DBGrid.DataSource, и измените DataSource.DataSet на нужный DataSet. Вот простой пример со всеми назначениями, выполненными во время выполнения.
procedure TForm1.FormCreate(Sender: TObject);
begin
DBGrid1.DataSource := DataSource1;
DataSet1.Active := true;
DataSet2.Active := true;
DataSet3.Active := true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
DataSource1.DataSet := DataSet1;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
DataSource1.DataSet := DataSet2;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
DataSource1.DataSet := DataSet3;
end;
2: использовать источник данных для каждого набора данных и изменить DBGrid.DataSource до желаемого DataSource. Вот простой пример со всеми назначениями, выполненными во время выполнения.
procedure TForm1.FormCreate(Sender: TObject);
begin
DataSource1.DataSet := DataSet1;
DataSource2.DataSet := DataSet2;
DataSource3.DataSet := DataSet3;
DataSet1.Active := true;
DataSet2.Active := true;
DataSet3.Active := true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
DBGrid1.DataSource := DataSource1;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
DBGrid1.DataSource := DataSource2;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
DBGrid1.DataSource := DataSource3;
end;
Если определить столбцы DBGrid, структура DataSets должны быть одинаковы, или вам придется менять определения столбцов при изменении набора данных отображается.
Я предпочитаю использовать DataSource для каждого набора данных, потому что он более гибкий.
Связанные с данными источники данных соответствуют их наборам данных? Простой dbgrid.DataSource: = Datasourcexy; должно быть достаточно. – bummi