程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> TClientDataSet[7]: 辨析 Field、FieldDef、Fields、FieldDefs、FieldList、FieldDefList

TClientDataSet[7]: 辨析 Field、FieldDef、Fields、FieldDefs、FieldList、FieldDefList

編輯:Delphi
TFIEld TFIEldDef TFIElds TFIEldDefs TFieldList、TFIEldDefList Assign
AssignValue
Clear
FocusControl
GetData
GetParentComponent
HASParent
IsBlob
IsValidChar
RefreshLookupList
SetData
SetFIEldType
SetParentComponent
Validate

AsBCD
AsBoolean
AsCurrency
AsDateTime
AsSQLTimeStamp
AsSQLTimeStampOffset
AsSingle
AsFloat
AsExtended
AsInteger
AsLargeInt
AsString
AsWideString
AsAnsiString
AsBytes
AsVariant
AttributeSet
Calculated
CanModify
CurValue
DataSet
DataSize
DataType
DisplayName
DisplayText
EditMask
EditMaskPtr
FIEldNo
FullName
IsIndexFIEld
IsNull
Lookup
LookupList
NewValue
Offset
OldValue
ParentFIEld
Size
Text
ValidChars
Value
Alignment
AutoGenerateValue
CustomConstraint
ConstraintErrorMessage
DefaultExpression
DisplayLabel
DisplayWidth
FIEldKind
FIEldName
HasConstraints
Index
ImportedConstraint
LookupDataSet
LookupKeyFIElds
LookupResultFIEld
KeyFIElds
LookupCache
Origin
ProviderFlags
ReadOnly
Required
Visible

OnChange
OnGetText
OnSetText
OnValidate AddChild
Assign
CreateFIEld
HasChildDefs

FIEldClass
FIEldNo
InternalCalcFIEld
ParentDef
Required
Attributes
ChildDefs
DataType
Precision
Size
Name
GetNamePath
Collection
ID
Index
DisplayName Add
CheckFIEldName
CheckFIEldNames
Clear
FindFIEld
FIEldByName
FIEldByNumber
GetEnumerator
GetFIEldNames
IndexOf
Remove
Count
DataSet
FIElds AddFIEldDef
Find
Update
Add
GetItemNames
IndexOf
Owner
Assign
BeginUpdate
Clear
Delete
EndUpdate
FindItemID
GetEnumerator
GetNamePath
Insert

HiddenFIElds
Items
ParentDef
DataSet
Updated
Capacity
Count
ItemClass FIEldByName
Find
Fields(FIEldDefs)
Update
DataSet
Add
AddObject
Clear
Delete
Exchange
IndexOf
Insert
InsertObject
Sort
CustomSort
Append
AddStrings
Assign
BeginUpdate
EndUpdate
Equals
GetEnumerator
GetText
IndexOfName
IndexOfObject
LoadFromFile
LoadFromStream
Move
SaveToFile
SaveToStream
SetText

Duplicates
Sorted
CaseSensitive
Capacity
CommaText
Count
Delimiter
DelimitedText
LineBreak
Names
Objects
QuoteChar
Values
ValueFromIndex
NameValueSeparator
StrictDelimiter
Strings
Text
StringsAdapter

OnChange
OnChanging
OwnsObjects

  發現這些東西早在 Delphi 3 的時候就比較成熟了, 至今也基本沒有變化; 我暫時對它們的理解是:

1、Fields 是 FIEld 的集合, 它們主要用於運行時對字段元數據和字段值的訪問.

2、FieldDefs 是 FIEldDef 的集合, 它們主要用於構建數據集(表)和對字段元數據的訪問.

3、FieldList 和 FieldDefList 分別是訪問 Field 和 FieldDef 的快捷列表; 主要使用其 FIEldByName、Find 方法和默認的數組屬性訪問數據; 它們是只讀的.

4、通過 Fields、FieldList、FIEld 可以得到更多信息, 但必須是在數據集打開的情況下;
通過 FieldDefs、FieldDefList、FIEldDef 只能獲取定義時的信息, 但即使在數據集關閉時也能使用.

5、顧名思義 FieldDef 是用於定義表的, 但通過 FIEld 也可以定義表;
用 FieldDef 定義表很方便, 用 FIEld 可以定義一些更復雜的表;
每個 FieldDef 都會對應一個 Field, 但一個 Field 不一定有 FIEldDef 對應;
程序運行後 FieldDef 不能再改變, 而 Field 與 FIElds 則可以動態改變或增減.

設計時兩者是結合使用的.

  下面是通過三種方法動態建表的代碼:

//使用 TFIEldDef 建表:  
begin 
 with ClientDataSet1.FIEldDefs do 
 begin 
  Add('Name' , ftString, 12, True); { True 表示是必填字段 } 
  Add('Age', ftInteger); 
 end; 
 ClIEntDataSet1.CreateDataSet; 
end; 
 
//使用 TFIEld(這裡是用其子類)建表: 
begin 
 with TStringFIEld.Create(Self) do 
 begin 
  FIEldName := 'Name'; 
  Size := 12; 
  Required := True; { 必填字段 } 
  DataSet := ClIEntDataSet1; 
 end; 
 with TIntegerFIEld.Create(Self) do 
 begin 
  FIEldName := 'Age'; 
  DataSet := ClIEntDataSet1; 
 end; 
 ClIEntDataSet1.CreateDataSet; 
end; 
 
//混合使用(這好像就是設計時的情形): 
var 
 F: TIntegerFIEld; 
begin 
 with ClientDataSet1.FieldDefs.AddFIEldDef do 
 begin 
  Name := 'Name'; 
  DataType := ftString; 
  Size := 12; 
  Required := True; 
  CreateField(ClIEntDataSet1); 
 end; 
 with ClientDataSet1.FieldDefs.AddFIEldDef do 
 begin 
  Name := 'Age'; 
  DataType := ftInteger; 
  { 指定最大值和最小值 } 
  F := CreateField(ClientDataSet1) as TIntegerFIEld; 
  F.MinValue := 0; 
  F.MaxValue := 150; 
 end; 
 ClIEntDataSet1.CreateDataSet; 
end; 


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