-1

tcxgrid に表示されているものを取得し、ボタンをクリックするだけでレコードを xml ファイルに保存する最も簡単な方法を知りたいです。

4

1 に答える 1

2

ExportGridToXML プロシージャを使用する際の唯一の小さな問題は、かなりうまく隠されていることです。 cxGridExportLink ユニッ​​トを uses リストに追加する必要があります。

uses
  cxGridExportLink;

procedure TForm1.SaveToXML1;
var
  FileName : String;
begin
  FileName := IncludeTrailingPathDelimiter(GetEnvironmentVariable('Temp'));
  FileName := FileName + 'Grid.XML';
  ExportGridToXML(FileName, cxGrid1);
end;

これにより、XML ファイルが \users[your name]\appdata\local\Temp に保存されます。グリッドに列を持つデータセット フィールドのみが含まれることに注意してください。

次の手順は、データセットを XML に保存する別の方法を示しています。これは、グリッドをバイパスし、cxGrid に列があるかどうかに関係なく、データセットのすべてのフィールドのデータ値を保存します。これは、TDataSetProvider を介してデータセットのデータを一時的な TClientDataSet にコピーし、TClientDataSet の組み込み機能を使用してそのデータを XML に保存することによって機能します。渡されたデータセットが設定している可能性のあるすべてのフィルターを尊重します。

procedure TForm1.SaveToXML2(DataSet : TDataSet);
var
  FileName : String;
  DSP : TDataSetProvider;
  CDS : TClientDataSet;
begin
  FileName := IncludeTrailingPathDelimiter(GetEnvironmentVariable('Temp'));
  FileName := FileName + 'Grid2.XML';

  DSP := TDataSetProvider.Create(Self);
  CDS := TClientDataSet.Create(Self);

  try
    DSP.DataSet := DataSet;
    DSP.Name := 'TempProvider';
    CDS.ProviderName := DSP.Name;
    DataSet.DisableControls;  // otherwise you will see the source dataset scrolling 
    // if it's shown in a grid
    CDS.Open;
    CDS.SaveToFile(FileName, dfXML);
  finally
    DataSet.EnableControls;
    CDS.Free;
    DSP.Free;
  end;
end;
于 2014-11-25T17:19:30.163 に答える