WinXP Pro, Delphi 6 Enterpriseを使用しています。
DataSourceを用いて、ClientDataSet1はGrid1にリンクし、ClientDataSet2はGrid2にリンクしています。
(GridはExpressQuantumGrid4のcxGridです)
つまづいているのは、ClientDataSet1をClientDataSet2にコピーし、Grid2にもGrid1と同様のデータを表示させようというところです。
ClientDataSet2についてOnFilterRecordイベントを使い、Grid2上で表示するレコードを絞りたいのです。
そのため、まずはクライアントデータセットを複製を実装しようと考えました。
Grid2に、Grid1と同様のデータが表示されることを期待しているのですが、
今のところ、Grid2は空白のままです…。
ヘルプを見ると、下記のように書いてありました。
「クライアントデータセットがプロバイダを使わないときは,別のクライアントデータセットからデータを次のようにコピーできます。
ClientDataSet1.Data := ClientDataSet2.Data;」
以下は、書いたコードの一部です。
恐れ入りますが、問題箇所を指摘していただけないでしょうか。
宜しくお願いします。
// ボタン押下で、別フォームを起動
// Form2.Associatedでデータセットを複製したい。
procedure TForm1.S1Click(Sender: TObject);
var
frmSetup: TForm2;
begin
if(NumLines = 0) then
ShowMessage('CSVファイルを読み込んでください。')
else
begin
frmSetup := TForm2.Create(Self);
Form2.Associated;
frmSetup.ShowModal;
frmSetup.Release;
end;
end;
// データセット複製のための関数
procedure TForm2.Associated;
begin
try
ClientDataSet2.Open;
ClientDataSet2.Data := Form1.ClientDataSet1.Data;
ClientDataSet2.Close;
except
ClientDataSet2.Free;
end;
end;
procedure TForm1.S1Click(Sender: TObject);の中の
Form2.Associated;をfrmSetup.Associated;に修正しました。
まだ改善されませんでした…。
何の検証も行っていませんが「Close」したらダメですよね・・・
自己解決しました。
// ボタン押下で、別フォームを起動
// Form2.Associatedでデータセットを複製したい。
procedure TForm1.S1Click(Sender: TObject);
begin
if(NumLines = 0) then
ShowMessage('CSVファイルを読み込んでください。')
else
begin
Form2.Associated;
Form2.ShowModal;
end;
end;
// データセット複製のための関数
procedure TForm2.Associated;
begin
try
ClientDataSet2.Open;
ClientDataSet2.Data := Form1.ClientDataSet1.Data;
except
ClientDataSet2.Free;
end;
end;
ツイート | ![]() |