📄 db.pas
字号:
procedure SetAsByteArray(const Value: Variant); override;
public
constructor Create(AOwner: TComponent); override;
end;
{ TBCDField }
{PBcd struct moved to FmtBcd.pas}
TBCDField = class(TNumericField)
private
FCurrency: Boolean;
FCheckRange: Boolean;
FMinValue: Currency;
FMaxValue: Currency;
FPrecision: Integer;
procedure SetCurrency(Value: Boolean);
procedure SetMaxValue(Value: Currency);
procedure SetMinValue(Value: Currency);
procedure SetPrecision(Value: Integer);
procedure UpdateCheckRange;
protected
class procedure CheckTypeSize(Value: Integer); override;
procedure CopyData(Source, Dest: Pointer); override;
function GetAsBCD: TBcd; override;
function GetAsCurrency: Currency; override;
function GetAsFloat: Double; override;
function GetAsInteger: Longint; override;
function GetAsString: string; override;
function GetAsVariant: Variant; override;
function GetDataSize: Integer; override;
function GetDefaultWidth: Integer; override;
procedure GetText(var Text: string; DisplayText: Boolean); override;
function GetValue(var Value: Currency): Boolean;
procedure SetAsBCD(const Value: TBcd); override;
procedure SetAsCurrency(Value: Currency); override;
procedure SetAsFloat(Value: Double); override;
procedure SetAsInteger(Value: Longint); override;
procedure SetAsString(const Value: string); override;
procedure SetVarValue(const Value: Variant); override;
public
constructor Create(AOwner: TComponent); override;
property Value: Currency read GetAsCurrency write SetAsCurrency;
published
{ Lowercase to avoid name clash with C++ Currency type }
property currency: Boolean read FCurrency write SetCurrency default False;
property MaxValue: Currency read FMaxValue write SetMaxValue;
property MinValue: Currency read FMinValue write SetMinValue;
property Precision: Integer read FPrecision write SetPrecision default 0;
property Size default 4;
end;
{ TFMTBCDField }
TFMTBCDField = class(TNumericField)
private
FCurrency: Boolean;
FCheckRange: Boolean;
FMinValue: String;
FMaxValue: String;
FPrecision: Integer;
procedure BcdRangeError(Value: Variant; Max, Min: String);
procedure SetCurrency(Value: Boolean);
procedure SetMaxValue(Value: String);
procedure SetMinValue(Value: String);
procedure SetPrecision(Value: Integer);
procedure UpdateCheckRange;
protected
class procedure CheckTypeSize(Value: Integer); override;
procedure CopyData(Source, Dest: Pointer); override;
function GetAsCurrency: Currency; override;
function GetAsBCD: TBcd; override;
function GetAsFloat: Double; override;
function GetAsInteger: Longint; override;
function GetAsString: string; override;
function GetAsVariant: Variant; override;
function GetDataSize: Integer; override;
function GetDefaultWidth: Integer; override;
procedure GetText(var Text: string; DisplayText: Boolean); override;
function GetValue(var Value: TBcd): Boolean;
procedure SetAsCurrency(Value: Currency); override;
procedure SetAsBCD(const Value: TBcd); override;
procedure SetAsFloat(Value: Double); override;
procedure SetAsInteger(Value: Longint); override;
procedure SetAsString(const Value: string); override;
procedure SetVarValue(const Value: Variant); override;
public
constructor Create(AOwner: TComponent); override;
property Value: TBcd read GetAsBCD write SetAsBCD;
published
{ Lowercase to avoid name clash with C++ Currency type }
property currency: Boolean read FCurrency write SetCurrency default False;
property MaxValue: String read FMaxValue write SetMaxValue;
property MinValue: String read FMinValue write SetMinValue;
property Precision: Integer read FPrecision write SetPrecision default 0;
property Size default 4;
end;
{ TBlobField }
TBlobType = ftBlob..ftOraClob;
TBlobField = class(TField)
private
FModifiedRecord: Integer;
FModified: Boolean;
FGraphicHeader: Boolean;
FTransliterate: Boolean;
function GetBlobType: TBlobType;
function GetModified: Boolean;
procedure LoadFromBlob(Blob: TBlobField);
procedure LoadFromStrings(Strings: TStrings);
procedure LoadFromStreamPersist(StreamPersist: IStreamPersist);
procedure SaveToStrings(Strings: TStrings);
procedure SaveToStreamPersist(StreamPersist: IStreamPersist);
procedure SetBlobType(Value: TBlobType);
procedure SetModified(Value: Boolean);
function SupportsStreamPersist(const Persistent: TPersistent;
var StreamPersist: IStreamPersist): Boolean;
protected
procedure AssignTo(Dest: TPersistent); override;
procedure FreeBuffers; override;
function GetAsString: string; override;
function GetAsVariant: Variant; override;
function GetBlobSize: Integer; virtual;
function GetClassDesc: string; override;
function GetIsNull: Boolean; override;
procedure GetText(var Text: string; DisplayText: Boolean); override;
procedure SetAsString(const Value: string); override;
procedure SetText(const Value: string); override;
procedure SetVarValue(const Value: Variant); override;
public
constructor Create(AOwner: TComponent); override;
procedure Assign(Source: TPersistent); override;
procedure Clear; override;
class function IsBlob: Boolean; override;
procedure LoadFromFile(const FileName: string);
procedure LoadFromStream(Stream: TStream);
procedure SaveToFile(const FileName: string);
procedure SaveToStream(Stream: TStream);
procedure SetFieldType(Value: TFieldType); override;
property BlobSize: Integer read GetBlobSize;
property Modified: Boolean read GetModified write SetModified;
property Value: string read GetAsString write SetAsString;
property Transliterate: Boolean read FTransliterate write FTransliterate;
published
property BlobType: TBlobType read GetBlobType write SetBlobType default ftBlob;
property GraphicHeader: Boolean read FGraphicHeader write FGraphicHeader default True;
property Size default 0;
end;
{ TMemoField }
TMemoField = class(TBlobField)
public
constructor Create(AOwner: TComponent); override;
published
property Transliterate default True;
end;
{ TGraphicField }
TGraphicField = class(TBlobField)
public
constructor Create(AOwner: TComponent); override;
end;
{ TObjectField }
TObjectField = class(TField)
private
FFields: TFields;
FOwnedFields: TFields;
FObjectType: string;
FTotalSize: Integer;
FUnNamed: Boolean;
procedure DataSetChanged;
procedure ReadUnNamed(Reader: TReader);
procedure WriteUnNamed(Writer: TWriter);
protected
class procedure CheckTypeSize(Value: Integer); override;
procedure DefineProperties(Filer: TFiler); override;
procedure FreeBuffers; override;
function GetAsString: string; override;
function GetAsVariant: Variant; override;
procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
function GetDefaultWidth: Integer; override;
function GetFieldCount: Integer;
function GetFields: TFields; virtual;
function GetFieldValue(Index: Integer): Variant; virtual;
function GetHasConstraints: Boolean; override;
procedure SetChildOrder(Component: TComponent; Order: Integer); override;
procedure SetDataSet(ADataSet: TDataSet); override;
procedure SetFieldKind(Value: TFieldKind); override;
procedure SetFieldValue(Index: Integer; const Value: Variant); virtual;
procedure SetParentField(AField: TObjectField); override;
procedure SetUnNamed(Value: Boolean);
procedure SetVarValue(const Value: Variant); override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property FieldCount: Integer read GetFieldCount;
property Fields: TFields read GetFields;
property FieldValues[Index: Integer]: Variant read GetFieldValue
write SetFieldValue; default;
property UnNamed: Boolean read FUnNamed default False;
published
property ObjectType: string read FObjectType write FObjectType;
end;
{ TADTField }
TADTField = class(TObjectField)
private
procedure FieldsChanged(Sender: TObject);
protected
function GetSize: Integer; override;
public
constructor Create(AOwner: TComponent); override;
end;
{ TArrayField }
TArrayField = class(TObjectField)
protected
procedure Bind(Binding: Boolean); override;
procedure SetSize(Value: Integer); override;
public
constructor Create(AOwner: TComponent); override;
property Size default 10;
end;
{ TDataSetField }
TDataSetField = class(TObjectField)
private
FOwnedDataSet: TDataSet;
FNestedDataSet: TDataSet;
FIncludeObjectField: Boolean;
function GetNestedDataSet: TDataSet;
procedure AssignNestedDataSet(Value: TDataSet);
procedure SetIncludeObjectField(Value: Boolean);
protected
procedure Bind(Binding: Boolean); override;
function GetCanModify: Boolean; override;
function GetFields: TFields; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property NestedDataSet: TDataSet read GetNestedDataSet;
published
property IncludeObjectField: Boolean read FIncludeObjectField write SetIncludeObjectField default False;
end;
{ TReferenceField }
TReferenceField = class(TDataSetField)
private
FReferenceTableName: string;
protected
function GetAsVariant: Variant; override;
function GetDataSize: Integer; override;
procedure SetVarValue(const Value: Variant); override;
public
constructor Create(AOwner: TComponent); override;
procedure Assign(Source: TPersistent); override;
published
property ReferenceTableName: string read FReferenceTableName write FReferenceTableName;
property Size default 0;
end;
{ TVariantField }
TVariantField = class(TField)
protected
class procedure CheckTypeSize(Value: Integer); override;
function GetAsBCD: TBcd; override;
function GetAsBoolean: Boolean; override;
function GetAsDateTime: TDateTime; override;
function GetAsSqlTimeStamp: TSqlTimeStamp; override;
function GetAsFloat: Double; override;
function GetAsInteger: Longint; override;
function GetAsString: string; override;
function GetAsVariant: Variant; override;
function GetDefaultWidth: Integer; override;
procedure SetAsBCD(const Value: TBcd); override;
procedure SetAsBoolean(Value: Boolean); override;
procedure SetAsSqlTimeStamp(const Value: TSqlTimeStamp); override;
procedure SetAsDateTime(Value: TDateTime); override;
procedure SetAsFloat(Value: Double); override;
procedure SetAsInteger(Value: Longint); override;
procedure SetAsString(const Value: string); override;
procedure SetVarValue(const Value: Variant); override;
public
constructor Create(AOwner: TComponent); override;
end;
{ TInterfaceField }
TInterfaceField = class(TField)
protected
class procedure CheckTypeSize(Value: Integer); override;
function GetValue: IUnknown;
function GetAsVariant: Variant; override;
procedure SetValue(const Value: IUnknown);
procedure SetVarValue(const Value: Variant); override;
public
constructor Create(AOwner: TComponent); override;
property Value: IUnknown read GetValue write SetValue;
end;
{ TIDispatchField }
TIDispatchField = class(TInterfaceField)
protected
function GetValue: IDispatch;
procedure SetValue(const Value: IDispatch);
public
constructor Create(AOwner: TComponent); override;
property Value: IDispatch read GetValue write SetValue;
end;
{ TGuidField }
TGuidField = class(TStringField)
protected
class procedure CheckTypeSize(Value: Integer); override;
function GetAsGuid: TGUID;
function GetDefaultWidth: Integer; override;
procedure SetAsGuid(const Value: TGUID);
public
constructor Create(AOwner: TComponent); override;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -