您可以在运行时非常轻松地更改 DBGrid 显示的数据集。有两种方法:
1:使用分配给 DBGrid.DataSource 的单个 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:为每个DataSet 使用一个DataSource 并将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 的列,则 DataSet 的结构需要相同,否则在更改显示的 Dataset 时必须更改列定义。
我更喜欢为每个 DataSet 使用一个 DataSource,因为它更灵活。