在Delphi中常常用到ClientDataset来操作视图或者存储过程中关联出来的字段,但是在操作的时候会提示这些字段不能被修改,找了个函数 :
procedure TLyffMainFrm.SetDstAllFieldCanEdit(dstNm: TClientDataSet; AddFields: string='');
var tmpDst: TClientDataSet;
I: Integer;
begin
tmpDst := TClientDataSet.Create(nil);
Try
dstNm.DisableControls;
tmpDst.Data := dstNm.Data;
dstNm.Close;
dstNm.FieldDefs.Clear;
for I := 0 to tmpDst.FieldDefs.Count - 1 do
begin
with dstNm.FieldDefs.AddFieldDef do
begin
DataType := tmpDst.FieldDefs[I].DataType;
Size := tmpDst.FieldDefs[I].Size;
Name := tmpDst.FieldDefs[I].Name;
end;
end;