gpt4 book ai didi

delphi - 在运行时重新分配数据源

转载 作者:行者123 更新时间:2023-12-03 15:21:12 27 4
gpt4 key购买 nike

我做了一些搜索,只发现了更多未解答的问题。 :)

使用D5pro。

我想在运行时将数据源重新分配给 TDBGrid。我有七个相同结构的数据集,并且根据单击的按钮,我希望在网格中显示适当的数据集。

我已经尝试了一切,但无法让它显示下一个数据集。它坚持启动时分配的第一个。我已经采取了过度杀伤的方法,但仍然没有任何效果。这就是我现在所处的位置。

procedure SetSource(var aSrc : TDataSource);
begin
aSrc.DataSet.Close;
dbgridShowData.DataSource:=aSrc;
aSrc.DataSet.Open;
aSrc.DataSet.First;
aSrc.DataSet.Refresh;
end;

我哪里出错了?

谢谢

最佳答案

您可以在运行时非常轻松地更改 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 的列,则数据集的结构将需要相同,否则当您更改显示的数据集时,您将必须更改列定义。

我更喜欢每个数据集使用一个数据源,因为它更灵活。

关于delphi - 在运行时重新分配数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15397135/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com