DBGrid によって表示されるデータセットは、実行時に非常に簡単に変更できます。2 つのアプローチがあります。
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 ごとに DataSource を使用することを好みます。