关于ClientDataSet ( 积分: 100 )

  • 主题发起人 主题发起人 smsman
  • 开始时间 开始时间
S

smsman

Unregistered / Unconfirmed
GUEST, unregistred user!
我要动态制定ClientDataSet的field已达到控制DBGRID的显示字段。
下面是我用的方法,感觉不应该这么罗嗦的。请高手提供一下更好的方法。
var
cds: TClientDataSet;
begin
cds:=TClientDataSet.Create(nil);
cds.FileName:=cds1.FileName;
cds.Open;
cds1.close;
cds1.Fields.Clear;
for i := 0 to cds.Fields.Count-1 do
cds1.Fields.Add(cds.Fields.Fields);
 
Shares the data belonging to another client dataset.

Delphi syntax:

procedure CloneCursor(Source :TCustomClientDataSet; Reset: Boolean; KeepSettings: Boolean = False); virtual;

然后,将不显示的,在DBGrid中设置Visible为False;
 
例子:
for i := 0 to typeList.Count - 1 do //TypeList是个TStringList,记录了字段名列表
begin
with dataset do
begin
with FieldDefs.AddFieldDef do
begin
case dataTypes of //数据类型数组,与字段名列表等长
TYPE_INT: DataType := ftInteger;
TYPE_LONG: DataType := ftString; //Int64
TYPE_FLOAT: DataType := ftFloat;
TYPE_DOUBLE: DataType := ftString;
TYPE_BOOLEAN: DataType := ftBoolean;
TYPE_STRING: begin
DataType := ftString;
Size := 5000;
end;
TYPE_BIGDECIMAL:
DataType := ftCurrency;
TYPE_BYTEARRAY: DataType := ftBlob;
TYPE_BLOB: DataType := ftBlob;
TYPE_CLOB: DataType := ftMemo;
TYPE_DATE: DataType := ftDateTime;
end;
Name := typeList;
end;
end;
end;
dataset.CreateDataSet;
 
CDS1:=tClientDataSet.Create(niL);
CDS1.FieldDefs:=CDS.FieldDefs;
CDS1.CreateDataSet;
 
谢谢bjaman大大,收到!
感谢大家
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
923
SUNSTONE的Delphi笔记
S
S
回复
0
查看
948
SUNSTONE的Delphi笔记
S
后退
顶部