文档章节

TClientDataSet[22]: 数组字段与 ObjectView

涂孟超
 涂孟超
发布于 2014/09/26 15:33
字数 334
阅读 2
收藏 0

数组字段(ftArray) 与 ADT 字段类似(设计过程一样), 定义数组字段时只需定义一个元素来说明元素类型.

本例同时测试 ObjectView 为 True 和 False 时的不同效果.

下面是在运行时实现的数组字段:



//先在窗体上放置: 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 := 'Group';
    DataType := ftString;
    Size := 7;
  end;

  { 定义数组字段: 假如数组包括 4 个元素 }
  with ClientDataSet1.FieldDefs.AddFieldDef do begin
    Name := 'Member';
    DataType := ftArray;
    Size := 4;
    ChildDefs.Add('TempName', ftString, 11); { 只需定义一个子元素来说明元素类型 }
  end;
  ClientDataSet1.CreateDataSet;

  { 添加记录 }
  ClientDataSet1.AppendRecord([1, '一组', VarArrayOf(['A1','A2','A3','A4'])]);

  { 下面的添加方式也可用于访问 }
  ClientDataSet1.Append;
  ClientDataSet1['ID'] := 2;
  ClientDataSet1['Group'] := '二组';
  TArrayField(ClientDataSet1.FieldByName('Member'))[0] := 'B1';
  TArrayField(ClientDataSet1.FieldByName('Member'))[1] := 'B2';
  TArrayField(ClientDataSet1.FieldByName('Member')).FieldValues[2] := 'B3';
  TArrayField(ClientDataSet1.FieldByName('Member')).FieldValues[3] := 'B4';
  ClientDataSet1.Post;

  ClientDataSet1.Append;
  ClientDataSet1['ID'] := 3;
  ClientDataSet1['Group'] := '三组';
  TArrayField(ClientDataSet1.FieldByName('Member')).Fields[0].AsString := 'B1';
  TArrayField(ClientDataSet1.FieldByName('Member')).Fields[1].AsString := 'B2';
  TArrayField(ClientDataSet1.FieldByName('Member')).Fields[2].Value := 'B3';
  TArrayField(ClientDataSet1.FieldByName('Member')).Fields[3].Value := 'B4';
  ClientDataSet1.Post;
end;

{ 可以通过下面代码查看 ObjectView 为 True 和 False 时的不同 }
procedure TForm1.Button1Click(Sender: TObject);
begin
  ClientDataSet1.Close;
  ClientDataSet1.ObjectView := not ClientDataSet1.ObjectView;
  Text := Format('ObjectView: %s', [BoolToStr(ClientDataSet1.ObjectView, True)]);
  ClientDataSet1.Open;
end;

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2010/02/05/1664335.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
TClientDataSet使用(二)

转自:http://hi.baidu.com/zwl232/blog/item/76f011dfc9543812622798f2.html TClientDataSet    与TTable、TQuery一样,TClientDataSet也是从TDataSet继承下来的,它通常用于多层体系结构的......

天地弦
2007/06/01
0
0
ClientDataSet探讨(1)-介绍

KeyLife富翁笔记 作者: hongxingdl 标题: ClientDataSet探讨(1)-介绍 关键字: midas 分类: 开发经验 密级: 公开 与TTable、TQuery一样,TClientDataSet也是从TDataSet继承下来的,...

天地弦
2004/08/06
0
0
JSon SuperObject 研究2:数据集与JSON对象互转

JSon SuperObject 研究2:数据集与JSON对象互转 JSON不能完全替代XML,但绝对是未来的大势所趋,其优点是简单、体积小、解析更快、解析占用资源更少。在delphi中,数据集是最常用数据存取方式...

vga
2014/12/20
0
1
一个ClientDataset的Delta与XML相互转换

一个ClientDataset的Delta与XML相互转换的文章: 大家都知道TClientDataSet的Delta属性保存数据集的变化,但是Delta是OleVariant类型的属性,这样如果用Delphi写Webservice,就有需要把它转成...

vga
2014/02/27
0
18
Android开发数据库三层应用-DataSnap

Android开发数据库三层应用-DataSnap 时间:2013-10-24 13:41:54 点击:4988   核心提示:我觉得Delphi最强大的的功能之一就是开发数据库三层应用的DataSnap,在Android上的实现,首先是完...

vga
2014/06/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

70.shell的函数 数组 告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析 20.16/20.17 shell中的函数: ~1. 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段...

王鑫linux
今天
2
0
分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
今天
6
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
今天
4
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
今天
42
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部