delphi TClientDataSet[21]: 使用 ADT(Abstract Data Type) 字段  
官方Delphi 学习QQ群: 682628230(三千人)\n
频道

delphi TClientDataSet[21]: 使用 ADT(Abstract Data Type) 字段


TClientDataSet[21]: 使用 ADT(Abstract Data Type) 字段


运行时:

20200814113733983.png



//先在窗体上放置: DBGrid1、DataSource1、ClientDataSet1 并关联, 然后:


procedure TForm1.FormCreate(Sender: TObject);

begin

  //ClientDataSet1.ObjectView := True; { 这是默认的 }


  { 先定义两个基本字段 }

  with ClientDataSet1.FieldDefs.AddFieldDef do begin

    Name := 'ID';

    DataType := ftInteger;

  end;

  with ClientDataSet1.FieldDefs.AddFieldDef do begin

    Name := 'Name';

    DataType := ftString;

    Size := 7;

  end;


  { 定义 ftADT 字段, 联系方式(Contact)中包括: Tel、QQ、Email }

  with ClientDataSet1.FieldDefs.AddFieldDef do begin

    Name := 'Contact';

    DataType := ftADT;

    Size := 3;

    ChildDefs.Add('Tel', ftString, 12);

    ChildDefs.Add('QQ', ftString, 9);

    ChildDefs.Add('Email', ftString, 15);

  end;

  ClientDataSet1.CreateDataSet;


  { 添加记录, 这种最方便 }

  ClientDataSet1.AppendRecord([1, '张三', VarArrayOf(['9111111', '12222', 'aaa@bbb'])]);


  { 下面的其他添加方法也可用于访问 }

  ClientDataSet1.Append;

  ClientDataSet1['ID'] := 2;

  ClientDataSet1['Name'] := '李四';

  ClientDataSet1['Contact.Tel'] := '9222222';

  ClientDataSet1['Contact.QQ'] := '13333';

  ClientDataSet1['Contact.Email'] := 'ccc@ddd';

  ClientDataSet1.Post;


  ClientDataSet1.Append;

  ClientDataSet1.Fields[0].AsInteger := 3;

  ClientDataSet1.Fields[1].AsString := '王五';

  TADTField(ClientDataSet1.Fields[2])[0] := '9333333';

  TADTField(ClientDataSet1.Fields[2])[1] := '14444';

  TADTField(ClientDataSet1.Fields[2])[2] := 'eee@fff';

  ClientDataSet1.Post;


  ClientDataSet1.Append;

  ClientDataSet1.FieldByName('ID').Value := 4;

  ClientDataSet1.FieldByName('Name').Value := '孙六';

  TADTField(ClientDataSet1.FieldByName('Contact')).FieldValues[0] := '9444444';

  TADTField(ClientDataSet1.FieldByName('Contact')).FieldValues[1] := '15555';

  TADTField(ClientDataSet1.FieldByName('Contact')).FieldValues[2] := 'ggg@hhh';

  ClientDataSet1.Post;

end;



设计时:




这种复杂点的数据可以保存为 cds, 但保存不了 xml, 且 XMLData 也生成不了.

o_10012102.gif


推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.042067050933838 seconds