程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> TClientDataSet[22]: 數組字段與 ObjectView

TClientDataSet[22]: 數組字段與 ObjectView

編輯:Delphi

數組字段(ftArray) 與 ADT 字段類似(設計過程一樣), 定義數組字段時只需定義一個元素來說明元素類型.

  本例同時測試 ObjectVIEw 為 True 和 False 時的不同效果.

  下面是在運行時實現的數組字段:

TClientDataSet[22]: 數組字段與 ObjectView

//先在窗體上放置: 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; 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved