📄 db.pas
字号:
property AsGuid: TGUID read GetAsGuid write SetAsGuid;
end;
{ TAggregateField }
TAggregateField = class(TField)
private
FActive: Boolean;
FCurrency: Boolean;
FDisplayName: string;
FDisplayFormat: string;
FExpression: string;
FGroupingLevel: Integer;
FIndexName: string;
FHandle: Pointer;
FPrecision: Integer;
FResultType: TFieldType;
procedure SetHandle(Value: Pointer); virtual;
procedure SetActive(Value: Boolean);
function GetHandle: Pointer; virtual;
procedure SetGroupingLevel(Value: Integer);
procedure SetIndexName(Value: String);
procedure SetExpression(Value: String);
procedure SetPrecision(Value: Integer);
procedure SetCurrency(Value: Boolean);
protected
function GetAsString: string; override;
function GetAsVariant: Variant; override;
procedure GetText(var Text: string; DisplayText: Boolean); override;
procedure Reset;
procedure SetDisplayFormat(const Value: string);
public
constructor Create(AOwner: TComponent); override;
property Handle: Pointer read GetHandle write SetHandle;
property ResultType: TFieldType read FResultType write FResultType;
published
property Active: Boolean read FActive write SetActive default False;
{ Lowercase to avoid name clash with C++ Currency type }
property currency: Boolean read FCurrency write SetCurrency default False;
property DisplayName: String read FDisplayName write FDisplayName;
property DisplayFormat: string read FDisplayFormat write SetDisplayFormat;
property Expression: String read FExpression write SetExpression;
property FieldKind default fkAggregate;
property GroupingLevel: Integer read FGroupingLevel write SetGroupingLevel default 0;
property IndexName: String read FIndexName write SetIndexName;
property Precision: Integer read FPrecision write SetPrecision default 15;
property Visible default False;
end;
{ TDataLink }
TDataLink = class(TPersistent)
private
FDataSource: TDataSource;
FNext: TDataLink;
FBufferCount: Integer;
FFirstRecord: Integer;
FReadOnly: Boolean;
FActive: Boolean;
FVisualControl: Boolean;
FEditing: Boolean;
FUpdating: Boolean;
FDataSourceFixed: Boolean;
function GetDataSet: TDataSet;
procedure SetActive(Value: Boolean);
procedure SetDataSource(ADataSource: TDataSource);
procedure SetEditing(Value: Boolean);
procedure SetReadOnly(Value: Boolean);
procedure UpdateRange;
procedure UpdateState;
protected
procedure ActiveChanged; virtual;
procedure CheckBrowseMode; virtual;
procedure DataEvent(Event: TDataEvent; Info: Longint); virtual;
procedure DataSetChanged; virtual;
procedure DataSetScrolled(Distance: Integer); virtual;
procedure EditingChanged; virtual;
procedure FocusControl(Field: TFieldRef); virtual;
function GetActiveRecord: Integer; virtual;
function GetBOF: Boolean; virtual;
function GetBufferCount: Integer; virtual;
function GetEOF: Boolean; virtual;
function GetRecordCount: Integer; virtual;
procedure LayoutChanged; virtual;
function MoveBy(Distance: Integer): Integer; virtual;
procedure RecordChanged(Field: TField); virtual;
procedure SetActiveRecord(Value: Integer); virtual;
procedure SetBufferCount(Value: Integer); virtual;
procedure UpdateData; virtual;
property VisualControl: Boolean read FVisualControl write FVisualControl;
public
constructor Create;
destructor Destroy; override;
function Edit: Boolean;
function ExecuteAction(Action: TBasicAction): Boolean; dynamic;
function UpdateAction(Action: TBasicAction): Boolean; dynamic;
procedure UpdateRecord;
property Active: Boolean read FActive;
property ActiveRecord: Integer read GetActiveRecord write SetActiveRecord;
property BOF: Boolean read GetBOF;
property BufferCount: Integer read FBufferCount write SetBufferCount;
property DataSet: TDataSet read GetDataSet;
property DataSource: TDataSource read FDataSource write SetDataSource;
property DataSourceFixed: Boolean read FDataSourceFixed write FDataSourceFixed;
property Editing: Boolean read FEditing;
property Eof: Boolean read GetEOF;
property ReadOnly: Boolean read FReadOnly write SetReadOnly;
property RecordCount: Integer read GetRecordCount;
end;
{ TDetailDataLink }
TDetailDataLink = class(TDataLink)
protected
function GetDetailDataSet: TDataSet; virtual;
public
property DetailDataSet: TDataSet read GetDetailDataSet;
end;
{ TMasterDataLink }
TMasterDataLink = class(TDetailDataLink)
private
FDataSet: TDataSet;
FFieldNames: string;
FFields: TList;
FOnMasterChange: TNotifyEvent;
FOnMasterDisable: TNotifyEvent;
procedure SetFieldNames(const Value: string);
protected
procedure ActiveChanged; override;
procedure CheckBrowseMode; override;
function GetDetailDataSet: TDataSet; override;
procedure LayoutChanged; override;
procedure RecordChanged(Field: TField); override;
public
constructor Create(DataSet: TDataSet);
destructor Destroy; override;
property FieldNames: string read FFieldNames write SetFieldNames;
property Fields: TList read FFields;
property OnMasterChange: TNotifyEvent read FOnMasterChange write FOnMasterChange;
property OnMasterDisable: TNotifyEvent read FOnMasterDisable write FOnMasterDisable;
end;
{ TDataSource }
TDataChangeEvent = procedure(Sender: TObject; Field: TField) of object;
TDataSource = class(TComponent)
private
FDataSet: TDataSet;
FDataLinks: TList;
FEnabled: Boolean;
FAutoEdit: Boolean;
FState: TDataSetState;
FOnStateChange: TNotifyEvent;
FOnDataChange: TDataChangeEvent;
FOnUpdateData: TNotifyEvent;
procedure AddDataLink(DataLink: TDataLink);
procedure DataEvent(Event: TDataEvent; Info: Longint);
procedure NotifyDataLinks(Event: TDataEvent; Info: Longint);
procedure NotifyLinkTypes(Event: TDataEvent; Info: Longint; LinkType: Boolean);
procedure RemoveDataLink(DataLink: TDataLink);
procedure SetDataSet(ADataSet: TDataSet);
procedure SetEnabled(Value: Boolean);
procedure SetState(Value: TDataSetState);
procedure UpdateState;
protected
property DataLinks: TList read FDataLinks;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Edit;
function IsLinkedTo(DataSet: TDataSet): Boolean;
property State: TDataSetState read FState;
published
property AutoEdit: Boolean read FAutoEdit write FAutoEdit default True;
property DataSet: TDataSet read FDataSet write SetDataSet;
property Enabled: Boolean read FEnabled write SetEnabled default True;
property OnStateChange: TNotifyEvent read FOnStateChange write FOnStateChange;
property OnDataChange: TDataChangeEvent read FOnDataChange write FOnDataChange;
property OnUpdateData: TNotifyEvent read FOnUpdateData write FOnUpdateData;
end;
{ TDataSetDesigner }
TDataSetDesigner = class(TObject)
private
FDataSet: TDataSet;
FSaveActive: Boolean;
public
constructor Create(DataSet: TDataSet);
destructor Destroy; override;
procedure BeginDesign;
procedure DataEvent(Event: TDataEvent; Info: Longint); virtual;
procedure EndDesign;
property DataSet: TDataSet read FDataSet;
end;
{ TCheckConstraint }
TCheckConstraint = class(TCollectionItem)
private
FImportedConstraint: string;
FCustomConstraint: string;
FErrorMessage: string;
FFromDictionary: Boolean;
procedure SetImportedConstraint(const Value: string);
procedure SetCustomConstraint(const Value: string);
procedure SetErrorMessage(const Value: string);
public
procedure Assign(Source: TPersistent); override;
function GetDisplayName: string; override;
published
property CustomConstraint: string read FCustomConstraint write SetCustomConstraint;
property ErrorMessage: string read FErrorMessage write SetErrorMessage;
property FromDictionary: Boolean read FFromDictionary write FFromDictionary;
property ImportedConstraint: string read FImportedConstraint write SetImportedConstraint;
end;
{ TCheckConstraints }
TCheckConstraints = class(TCollection)
private
FOwner: TPersistent;
function GetItem(Index: Integer): TCheckConstraint;
procedure SetItem(Index: Integer; Value: TCheckConstraint);
protected
function GetOwner: TPersistent; override;
public
constructor Create(Owner: TPersistent);
function Add: TCheckConstraint;
property Items[Index: Integer]: TCheckConstraint read GetItem write SetItem; default;
end;
{ TParam }
TBlobData = string;
TParamType = (ptUnknown, ptInput, ptOutput, ptInputOutput, ptResult);
TParamTypes = set of TParamType;
TParams = class;
TParam = class(TCollectionItem)
private
FParamRef: TParam;
FNativeStr: string;
FData: Variant;
FPrecision: Integer;
FNumericScale: Integer;
FNull: Boolean;
FName: string;
FDataType: TFieldType;
FBound: Boolean;
FParamType: TParamType;
FSize: Integer;
function ParamRef: TParam;
function GetDataSet: TDataSet;
function IsParamStored: Boolean;
function GetDataType: TFieldType;
function GetParamType: TParamType;
procedure SetParamType(Value: TParamType);
protected
procedure AssignParam(Param: TParam);
procedure AssignTo(Dest: TPersistent); override;
function GetAsFMTBCD: TBcd;
function GetAsBCD: Currency;
function GetAsBoolean: Boolean;
function GetAsDateTime: TDateTime;
function GetAsSQLTimeStamp: TSQLTimeStamp;
function GetAsCurrency: Currency;
function GetAsFloat: Double;
function GetAsInteger: Longint;
function GetAsMemo: string;
function GetAsString: string;
function GetAsVariant: Variant;
function GetIsNull: Boolean;
function IsEqual(Value: TParam): Boolean;
procedure SetAsBCD(const Value: Currency);
procedure SetAsFMTBCD(const Value: TBcd);
procedure SetAsBlob(const Value: TBlobData);
procedure SetAsBoolean(Value: Boolean);
procedure SetAsCurrency(const Value: Currency);
procedure SetAsDate(const Value: TDateTime);
procedure SetAsDateTime(const Value: TDateTime);
procedure SetAsSQLTimeStamp(const Value: TSQLTimeStamp);
procedure SetAsFloat(const Value: Double);
procedure SetAsInteger(Value: Longint);
procedure SetAsMemo(const Value: string);
procedure SetAsString(const Value: string);
procedure SetAsSmallInt(Value: LongInt);
procedure SetAsTime(const Value: TDateTime);
procedure SetAsVariant(const Value: Variant);
procedure SetAsWord(Value: LongInt);
procedure SetDataType(Value: TFieldType);
procedure SetText(const Value: string);
function GetDisplayName: string; override;
property DataSet: TDataSet read GetDataSet;
public
constructor Create(Collection: TCollection); overload; override;
constructor Create(AParams: TParams; AParamType: TParamType); reintroduce; overload;
procedure Assign(Source: TPersistent); override;
procedure AssignField(Field: TField);
procedure AssignFieldValue(Field: TField; const Value: Variant);
procedure Clear;
procedure GetData(Buffer: Pointer);
function GetDataSize: Integer;
procedure LoadFromFile(const FileName: string; BlobType: TBlobType);
procedure LoadFromStream(Stream: TStream; BlobType: TBlobType);
procedure SetBlobData(Buffer: Pointer; Size: Integer);
procedure SetData(Buffer: Pointer);
property AsBCD: Currency read GetAsBCD write SetAsBCD;
property AsFMTBCD: TBcd read GetAsFMTBCD write SetAsFMTBCD;
property AsBlob: TBlobData read GetAsString write SetAsBlob;
property AsBoolean: Boolean read GetAsBoolean write SetAsBoolean;
property AsCurrency: Currency read GetAsCurrency write SetAsCurrency;
property AsDate: TDateTime read GetAsDateTime write SetAsDate;
property AsDateTime: TDateTime read GetAsDateTime write SetAsDateTime;
property AsFloat: Double read GetAsFloat write SetAsFloat;
property AsInteger: LongInt read GetAsInteger write SetAsInteger;
property AsSmallInt: LongInt read GetAsInteger write SetAsSmallInt;
property AsSQLTimeStamp: TSQLTimeStamp read GetAsSQLTimeStamp write SetAsSQLTimeStamp;
property AsMemo: string read GetAsMemo write SetAsMemo;
property AsString: string read GetAsString write SetAsString;
property AsTime: TDateTime read GetAsDateTime write SetAsTime;
property AsWord: LongInt read GetAsInteger write SetAsWord;
property Bound: Boolean read FBound write FBound;
property IsNull: Boolean read GetIsNull;
property NativeStr: string read FNativeStr write FNativeStr;
property Text: string read GetAsString write SetText;
published
property DataType: TFieldType read GetDataType write SetDataType;
property Precision: Integer read FPreci
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -