我想知道获取你在tcxgrid中看到的内容的最简单方法,然后点击一个按钮,然后将记录保存到xml文件中。
答案 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;