起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 447|回复: 3

如何克隆UserDataSet?

[复制链接]
发表于 2011-6-13 08:52:23 | 显示全部楼层 |阅读模式
我有一个自定义数据集,大概有260个字段,作为模板,程序中需要多个这样的数据集。用TBizField.Create创建生成速度太慢,有没有快速的方法克隆?
回复

使用道具 举报

发表于 2011-6-14 09:38:08 | 显示全部楼层
你看下有没有一个 SaveToStream之类的,如果有那把 UserData1.Savexxx,然后 UserData2.Loadxxx。

如果没有,可以试试
   UserData2.BeginUpdate.
   try
     // 创建字段什么的
   
   finally
     UserData2.EndUpdate.
   end;

现在手上没环境,不好确认,你试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-6-14 11:41:32 | 显示全部楼层
好像是不行,DataGrid中的字段没出来。
我的代码:
unit MainForm;

interface

uses
  Business.System, Business.Forms, Business.Model, Business.Data;

type
  TMainForm = class(TForm)
    TemplateDate: TUserDataSet;
    Button1: TButton;
    DataSource1: TDataSource;
    DataGrid1: TDataGrid;
    procedure Button1Click(Sender: TObject);
  private
    {private declarations}
  public
    {public declarations}
    MyData: TUserDataSet;
  end;

implementation


procedure TMainForm.Button1Click(Sender: TObject);
var
  AStream :TStream;
begin
  MyData:= TUserDataSet.Create(self);
  DataSource1.DataSet := MyData;

  AStream := TMemoryStream.Create;
  try
    TemplateDate.Open;
    TemplateDate.SaveToStream(AStream,TDataPacketformat.dfBinary);
    AStream.Seek(0, TSeekOrigin.soBeginning);
    MyData.LoadFromStream(AStream);
  finally
    aStream.Free;
  end;
end;

end.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-6-14 11:43:03 | 显示全部楼层
另外,没有找到TUserDataSet.BeginUpdate这个函数
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-5-20 23:29 , Processed in 0.044625 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表