将记录从tcxgrid保存到xml文件 - Delphi XE2

时间:2014-11-25 15:22:48

标签: xml delphi delphi-xe2 tcxgrid

我想知道获取你在tcxgrid中看到的内容的最简单方法,然后点击一个按钮,然后将记录保存到xml文件中。

1 个答案:

答案 0 :(得分:2)

使用ExportGridToXML程序的唯一小问题是它隐藏得很好 - 您需要将cxGridExportLink单元添加到您的使用列表中。

uses
  cxGridExportLink;

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

这会将XML文件保存到\ users [您的名字] \ 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;