Delphi字段定义枚举值FieldDefsftString
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Delphi字段定义枚举值FieldDefsftString
TClientDataSet[7]: 辨析Field、FieldDef、Fields、FieldDefs、FieldList、FieldDefList
发现这些东西早在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;
字段类型列表:
TStringField { ftString ; String } TWideStringField { ftWideString ; WideString } TNumericField { }
TIntegerField { ftInteger ; Integer } TLongWordField { ftLongWord ; LongWord } TSmallintField { ftSmallint ; Smallint } TShortintField { ftShortint ; Shortint }
TByteField { ftByte ; Byte }
TLargeintField { ftLargeint ; Int64 }
TWordField { ftWord ; Word }
TAutoIncField { ftAutoInc ; Integer } TUnsignedAutoIncField
{ ftAutoInc ; Cardinal } TFloatField { ftFloat ; Double }
TSingleField { ftSingle ; Single } TCurrencyField { ftCurrency ; Currency } TExtendedField { ftExtended ; Extended } TBooleanField { ftBoolean ; WordBool } TDateTimeField { ftDateTime ; DateTime } TSQLTimeStampField { ftTimeStamp ; TSQLTimeStamp } TSQLTimeStampField { ftTimeStampOffset; TSQLTimeStampOffset } TDateField { ftDate ; Integer } TTimeField { ftTime ; Integer } TBinaryField { }
TBytesField { ftBytes ; * }
TVarBytesField { ftVarBytes ; * }
TBCDField { ftBCD ; * } TFMTBCDField { ftFMTBCD ; * } TBlobField { ftBlob ; * } TMemoField { ftMemo ; * } TWideMemoField { ftWideMemo ; * } TGraphicField { ftGraphic ; * } TObjectField { }
TADTField { ftADT ; * } TArrayField { ftArray ; * } TDataSetField { ftDataSet ; TDataSet } TReferenceField { ftReference ; * } TVariantField { ftVariant ; OleVariant } TInterfaceField { ftInterface ; IUnknown } TIDispatchField { ftIDispatch ; IDispatch } TGuidField { ftGuid ; TGUID } TAggregateField { ftUnknown ; * }。