我做了一些搜索,只找到了更多未解答的问题.:)
使用D5pro.
我想在运行时将DataSource重新分配给TDBGrid.我有七个相同的结构化DataSet,根据按钮单击,我希望在网格中显示相应的DataSet.
我已经尝试了一切,我无法让它显示下一个DataSet.它坚持在启动时分配的第一个.我正在采取过度杀伤方法,但仍然没有任何工作.这就是我现在所处的位置.
procedure SetSource(var aSrc : TDataSource);
begin
aSrc.DataSet.Close;
dbgridShowData.DataSource:=aSrc;
aSrc.DataSet.Open;
aSrc.DataSet.First;
aSrc.DataSet.Refresh;
end;
Run Code Online (Sandbox Code Playgroud)
我哪里错了?
谢谢
小智 6
您可以非常轻松地在运行时轻松更改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;
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
如果定义DBGrid的列,则DataSet的结构必须相同,或者在更改显示的数据集时必须更改列定义.
我更喜欢每个DataSet使用一个DataSource,因为它更灵活.
| 归档时间: |
|
| 查看次数: |
9195 次 |
| 最近记录: |