home *** CD-ROM | disk | FTP | other *** search
-
- {*******************************************************}
- { }
- { Delphi Visual Component Library }
- { Core Database }
- { }
- { Copyright (c) 1995,97 Borland International }
- { }
- {*******************************************************}
-
- unit Db;
-
- {$R-}
-
- interface
-
- uses Windows, SysUtils, Classes, Graphics;
-
- const
-
- { TDataSet maximum number of record buffers }
-
- dsMaxBufferCount = MAXINT div 8;
-
- { Maximum string field size }
-
- dsMaxStringSize = 8192;
-
- type
-
- { Misc Dataset types }
-
- TDataSetState = (dsInactive, dsBrowse, dsEdit, dsInsert, dsSetKey,
- dsCalcFields, dsFilter, dsNewValue, dsOldValue, dsCurValue);
-
- TDataEvent = (deFieldChange, deRecordChange, deDataSetChange,
- deDataSetScroll, deLayoutChange, deUpdateRecord, deUpdateState,
- deCheckBrowseMode, dePropertyChange, deFieldListChange, deFocusControl);
-
- TUpdateStatus = (usUnmodified, usModified, usInserted, usDeleted);
-
- { Forward declarations }
-
- TFieldDef = class;
- TFieldDefs = class;
- TField = class;
- TDataLink = class;
- TDataSource = class;
- TDataSet = class;
-
- { Exception classes }
-
- EDatabaseError = class(Exception);
-
- { TFieldDef }
-
- TFieldClass = class of TField;
-
- TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord,
- ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime,
- ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic,
- ftFmtMemo, ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor);
-
- TFieldDef = class
- public
- constructor Create(Owner: TFieldDefs; const Name: string;
- DataType: TFieldType; Size: Word; Required: Boolean; FieldNo: Integer);
- destructor Destroy; override;
- function CreateField(Owner: TComponent): TField;
- property InternalCalcField: Boolean;
- property DataType: TFieldType;
- property FieldClass: TFieldClass;
- property FieldNo: Integer;
- property Name: string;
- property Precision: Integer;
- property Required: Boolean;
- property Size: Word;
- end;
-
- { TFieldDefs }
-
- TFieldDefs = class
- public
- constructor Create(DataSet: TDataSet);
- destructor Destroy; override;
- procedure Add(const Name: string; DataType: TFieldType; Size: Word;
- Required: Boolean);
- procedure Assign(FieldDefs: TFieldDefs);
- procedure Clear;
- function Find(const Name: string): TFieldDef;
- function IndexOf(const Name: string): Integer;
- procedure Update;
- property Count: Integer;
- property Items[Index: Integer]: TFieldDef; default;
- end;
-
- { TField }
-
- TFieldKind = (fkData, fkCalculated, fkLookup, fkInternalCalc);
-
- TFieldNotifyEvent = procedure(Sender: TField) of object;
- TFieldGetTextEvent = procedure(Sender: TField; var Text: string;
- DisplayText: Boolean) of object;
- TFieldSetTextEvent = procedure(Sender: TField; const Text: string) of object;
- TFieldRef = ^TField;
- TFieldChars = set of Char;
-
- PLookupListEntry = ^TLookupListEntry;
- TLookupListEntry = record
- Key: Variant;
- Value: Variant;
- end;
-
- TLookupList = class(TObject)
- public
- constructor Create;
- destructor Destroy; override;
- procedure Add(const AKey, AValue: Variant);
- procedure Clear;
- function ValueOfKey(const AKey: Variant): Variant;
- end;
-
- TField = class(TComponent)
- protected
- function AccessError(const TypeName: string): EDatabaseError; dynamic;
- procedure CheckInactive;
- class procedure CheckTypeSize(Value: Integer); virtual;
- procedure Change; virtual;
- procedure DataChanged;
- procedure DefineProperties(Filer: TFiler); override;
- procedure FreeBuffers; virtual;
- function GetAsBoolean: Boolean; virtual;
- function GetAsCurrency: Currency; virtual;
- function GetAsDateTime: TDateTime; virtual;
- function GetAsFloat: Double; virtual;
- function GetAsInteger: Longint; virtual;
- function GetAsString: string; virtual;
- function GetAsVariant: Variant; virtual;
- function GetCanModify: Boolean; virtual;
- function GetDataSize: Word; virtual;
- function GetDefaultWidth: Integer; virtual;
- function GetIsNull: Boolean; virtual;
- function GetParentComponent: TComponent; override;
- procedure GetText(var Text: string; DisplayText: Boolean); virtual;
- function HasParent: Boolean; override;
- procedure Notification(AComponent: TComponent;
- Operation: TOperation); override;
- procedure PropertyChanged(LayoutAffected: Boolean);
- procedure ReadState(Reader: TReader); override;
- procedure SetAsBoolean(Value: Boolean); virtual;
- procedure SetAsCurrency(Value: Currency); virtual;
- procedure SetAsDateTime(Value: TDateTime); virtual;
- procedure SetAsFloat(Value: Double); virtual;
- procedure SetAsInteger(Value: Longint); virtual;
- procedure SetAsString(const Value: string); virtual;
- procedure SetAsVariant(const Value: Variant); virtual;
- procedure SetDataType(Value: TFieldType);
- procedure SetSize(Value: Word); virtual;
- procedure SetParentComponent(AParent: TComponent); override;
- procedure SetText(const Value: string); virtual;
- procedure SetVarValue(const Value: Variant); virtual;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure Assign(Source: TPersistent); override;
- procedure AssignValue(const Value: TVarRec);
- procedure Clear; virtual;
- procedure FocusControl;
- function GetData(Buffer: Pointer): Boolean;
- class function IsBlob: Boolean; virtual;
- function IsValidChar(InputChar: Char): Boolean; virtual;
- procedure RefreshLookupList;
- procedure SetData(Buffer: Pointer);
- procedure SetFieldType(Value: TFieldType); virtual;
- procedure Validate(Buffer: Pointer);
- property AsBoolean: Boolean;
- property AsCurrency: Currency;
- property AsDateTime: TDateTime;
- property AsFloat: Double;
- property AsInteger: Longint;
- property AsString: string;
- property AsVariant: Variant;
- property AttributeSet: string;
- property Calculated: Boolean default False;
- property CanModify: Boolean;
- property CurValue: Variant;
- property DataSet: TDataSet;
- property DataSize: Word;
- property DataType: TFieldType;
- property DisplayName: string;
- property DisplayText: string;
- property EditMask: string;
- property EditMaskPtr: string;
- property FieldNo: Integer;
- property IsIndexField: Boolean;
- property IsNull: Boolean;
- property Lookup: Boolean;
- property LookupList: TLookupList;
- property NewValue: Variant;
- property Offset: word;
- property OldValue: Variant;
- property Size: Word;
- property Text: string;
- property ValidChars: TFieldChars;
- property Value: Variant;
- published
- property Alignment: TAlignment default taLeftJustify;
- property CustomConstraint: string;
- property ConstraintErrorMessage: string;
- property DefaultExpression: string;
- property DisplayLabel: string;
- property DisplayWidth: Integer;
- property FieldKind: TFieldKind;
- property FieldName: string;
- property HasConstraints: Boolean;
- property Index: Integer;
- property ImportedConstraint: string;
- property LookupDataSet: TDataSet;
- property LookupKeyFields: string;
- property LookupResultField: string;
- property KeyFields: string;
- property LookupCache: Boolean default False;
- property Origin: string;
- property ReadOnly: Boolean default False;
- property Required: Boolean default False;
- property Visible: Boolean default True;
- property OnChange: TFieldNotifyEvent;
- property OnGetText: TFieldGetTextEvent;
- property OnSetText: TFieldSetTextEvent;
- property OnValidate: TFieldNotifyEvent;
- end;
-
- { TStringField }
-
- TStringField = class(TField)
- protected
- class procedure CheckTypeSize(Value: Integer); override;
- function GetAsBoolean: Boolean; override;
- function GetAsDateTime: TDateTime; override;
- function GetAsFloat: Double; override;
- function GetAsInteger: Longint; override;
- function GetAsString: string; override;
- function GetAsVariant: Variant; override;
- function GetDataSize: Word; override;
- function GetDefaultWidth: Integer; override;
- procedure GetText(var Text: string; DisplayText: Boolean); override;
- function GetValue(var Value: string): Boolean;
- procedure SetAsBoolean(Value: Boolean); 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;
- property Value: string;
- published
- property EditMask;
- property Size default 20;
- property Transliterate: Boolean default True;
- end;
-
- { TNumericField }
-
- TNumericField = class(TField)
- protected
- procedure RangeError(Value, Min, Max: Extended);
- procedure SetDisplayFormat(const Value: string);
- procedure SetEditFormat(const Value: string);
- public
- constructor Create(AOwner: TComponent); override;
- published
- property Alignment default taRightJustify;
- property DisplayFormat: string;
- property EditFormat: string;
- end;
-
- { TIntegerField }
-
- TIntegerField = class(TNumericField)
- protected
- function GetAsFloat: Double; override;
- function GetAsInteger: Longint; override;
- function GetAsString: string; override;
- function GetAsVariant: Variant; override;
- function GetDataSize: Word; override;
- procedure GetText(var Text: string; DisplayText: Boolean); override;
- function GetValue(var Value: Longint): Boolean;
- 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: Longint;
- published
- property MaxValue: Longint default 0;
- property MinValue: Longint default 0;
- end;
-
- { TSmallintField }
-
- TSmallintField = class(TIntegerField)
- protected
- function GetDataSize: Word; override;
- public
- constructor Create(AOwner: TComponent); override;
- end;
-
- { TWordField }
-
- TWordField = class(TIntegerField)
- protected
- function GetDataSize: Word; override;
- public
- constructor Create(AOwner: TComponent); override;
- end;
-
- { TAutoIncField }
-
- TAutoIncField = class(TIntegerField)
- public
- constructor Create(AOwner: TComponent); override;
- end;
-
- { TFloatField }
-
- TFloatField = class(TNumericField)
- protected
- function GetAsFloat: Double; override;
- function GetAsInteger: Longint; override;
- function GetAsString: string; override;
- function GetAsVariant: Variant; override;
- function GetDataSize: Word; override;
- procedure GetText(var Text: string; DisplayText: Boolean); 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: Double;
- published
- property Currency: Boolean default False;
- property MaxValue: Double;
- property MinValue: Double;
- property Precision: Integer default 15;
- end;
-
- { TCurrencyField }
-
- TCurrencyField = class(TFloatField)
- public
- constructor Create(AOwner: TComponent); override;
- published
- property Currency default True;
- end;
-
- { TBooleanField }
-
- TBooleanField = class(TField)
- protected
- function GetAsBoolean: Boolean; override;
- function GetAsString: string; override;
- function GetAsVariant: Variant; override;
- function GetDataSize: Word; override;
- function GetDefaultWidth: Integer; override;
- procedure SetAsBoolean(Value: Boolean); override;
- procedure SetAsString(const Value: string); override;
- procedure SetVarValue(const Value: Variant); override;
- public
- constructor Create(AOwner: TComponent); override;
- property Value: Boolean;
- published
- property DisplayValues: string;
- end;
-
- { TDateTimeField }
-
- TDateTimeField = class(TField)
- protected
- function GetAsDateTime: TDateTime; override;
- function GetAsFloat: Double; override;
- function GetAsString: string; override;
- function GetAsVariant: Variant; override;
- function GetDataSize: Word; override;
- procedure GetText(var Text: string; DisplayText: Boolean); override;
- procedure SetAsDateTime(Value: TDateTime); override;
- procedure SetAsFloat(Value: Double); override;
- procedure SetAsString(const Value: string); override;
- procedure SetVarValue(const Value: Variant); override;
- public
- constructor Create(AOwner: TComponent); override;
- property Value: TDateTime;
- published
- property DisplayFormat: string;
- property EditMask;
- end;
-
- { TDateField }
-
- TDateField = class(TDateTimeField)
- protected
- function GetDataSize: Word; override;
- public
- constructor Create(AOwner: TComponent); override;
- end;
-
- { TTimeField }
-
- TTimeField = class(TDateTimeField)
- protected
- function GetDataSize: Word; override;
- public
- constructor Create(AOwner: TComponent); override;
- end;
-
- { TBinaryField }
-
- TBinaryField = class(TField)
- protected
- class procedure CheckTypeSize(Value: Integer); override;
- function GetAsString: string; override;
- procedure GetText(var Text: string; DisplayText: Boolean); override;
- function GetAsVariant: Variant; 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;
- published
- property Size default 16;
- end;
-
- { TBytesField }
-
- TBytesField = class(TBinaryField)
- protected
- function GetDataSize: Word; override;
- public
- constructor Create(AOwner: TComponent); override;
- end;
-
- { TVarBytesField }
-
- TVarBytesField = class(TBytesField)
- protected
- function GetDataSize: Word; override;
- public
- constructor Create(AOwner: TComponent); override;
- end;
-
- { TBCDField }
-
- TBCDField = class(TNumericField)
- protected
- class procedure CheckTypeSize(Value: Integer); override;
- function GetAsCurrency: Currency; override;
- function GetAsFloat: Double; override;
- function GetAsInteger: Longint; override;
- function GetAsString: string; override;
- function GetAsVariant: Variant; override;
- function GetDataSize: Word; override;
- function GetDefaultWidth: Integer; override;
- procedure GetText(var Text: string; DisplayText: Boolean); override;
- function GetValue(var Value: Currency): Boolean;
- 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;
- published
- property Currency: Boolean default False;
- property MaxValue: Currency;
- property MinValue: Currency;
- property Size default 4;
- end;
-
- { TBlobField }
-
- TBlobType = ftBlob..ftTypedBinary;
-
- TBlobField = class(TField)
- protected
- procedure AssignTo(Dest: TPersistent); override;
- procedure FreeBuffers; override;
- function GetAsString: string; override;
- function GetAsVariant: Variant; override;
- function GetBlobSize: Integer; virtual;
- 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;
- property Modified: Boolean;
- property Value: string;
- property Transliterate: Boolean;
- published
- property BlobType: TBlobType;
- 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;
-
- { TIndexDef }
-
- TIndexDefs = class;
-
- TIndexOptions = set of (ixPrimary, ixUnique, ixDescending,
- ixCaseInsensitive, ixExpression);
-
- TIndexDef = class
- public
- constructor Create(Owner: TIndexDefs; const Name, Fields: string;
- Options: TIndexOptions);
- destructor Destroy; override;
- property Expression: string;
- property Fields: string;
- property Name: string;
- property Options: TIndexOptions;
- property Source: string;
- end;
-
- { TIndexDefs }
-
- TIndexDefs = class
- public
- constructor Create(DataSet: TDataSet);
- destructor Destroy; override;
- procedure Add(const Name, Fields: string; Options: TIndexOptions);
- procedure Assign(IndexDefs: TIndexDefs);
- procedure Clear;
- function FindIndexForFields(const Fields: string): TIndexDef;
- function GetIndexForFields(const Fields: string;
- CaseInsensitive: Boolean): TIndexDef;
- function IndexOf(const Name: string): Integer;
- procedure Update;
- property Count: Integer;
- property Items[Index: Integer]: TIndexDef; default;
- property Updated: Boolean;
- end;
-
- { TDataLink }
-
- TDataLink = class(TPersistent)
- protected
- procedure ActiveChanged; virtual;
- procedure CheckBrowseMode; virtual;
- procedure DataSetChanged; virtual;
- procedure DataSetScrolled(Distance: Integer); virtual;
- procedure FocusControl(Field: TFieldRef); virtual;
- procedure EditingChanged; virtual;
- procedure LayoutChanged; virtual;
- procedure RecordChanged(Field: TField); virtual;
- procedure UpdateData; virtual;
- public
- constructor Create;
- destructor Destroy; override;
- function Edit: Boolean;
- procedure UpdateRecord;
- property Active: Boolean;
- property ActiveRecord: Integer;
- property BufferCount: Integer;
- property DataSet: TDataSet;
- property DataSource: TDataSource;
- property DataSourceFixed: Boolean;
- property Editing: Boolean;
- property ReadOnly: Boolean;
- property RecordCount: Integer;
- end;
-
- { TDataSource }
-
- TDataChangeEvent = procedure(Sender: TObject; Field: TField) of object;
-
- TDataSource = class(TComponent)
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure Edit;
- function IsLinkedTo(DataSet: TDataSet): Boolean;
- property State: TDataSetState;
- published
- property AutoEdit: Boolean default True;
- property DataSet: TDataSet;
- property Enabled: Boolean default True;
- property OnStateChange: TNotifyEvent;
- property OnDataChange: TDataChangeEvent;
- property OnUpdateData: TNotifyEvent;
- end;
-
- { TDataSetDesigner }
-
- TDataSetDesigner = class(TObject)
- public
- constructor Create(DataSet: TDataSet);
- destructor Destroy; override;
- procedure BeginDesign;
- procedure DataEvent(Event: TDataEvent; Info: Longint); virtual;
- procedure EndDesign;
- property DataSet: TDataSet;
- end;
-
- { TCheckConstraint }
-
- TCheckConstraint = class(TCollectionItem)
- public
- procedure Assign(Source: TPersistent); override;
- function GetDisplayName: string; override;
- published
- property CustomConstraint: string;
- property ErrorMessage: string;
- property FromDictionary: Boolean;
- property ImportedConstraint: string;
- end;
-
- { TCheckConstraints }
-
- TCheckConstraints = class(TCollection)
- protected
- function GetOwner: TPersistent; override;
- public
- constructor Create(Owner: TPersistent);
- function Add: TCheckConstraint;
- property Items[Index: Integer]: TCheckConstraint; default;
- end;
-
- { TDataSet }
-
- TBookmark = Pointer;
- TBookmarkStr = string;
-
- PBookmarkFlag = ^TBookmarkFlag;
- TBookmarkFlag = (bfCurrent, bfBOF, bfEOF, bfInserted);
-
- PBufferList = ^TBufferList;
- TBufferList = array[0..dsMaxBufferCount - 1] of PChar;
-
- TGetMode = (gmCurrent, gmNext, gmPrior);
-
- TGetResult = (grOK, grBOF, grEOF, grError);
-
- TResyncMode = set of (rmExact, rmCenter);
-
- TDataAction = (daFail, daAbort, daRetry);
-
- TUpdateKind = (ukModify, ukInsert, ukDelete);
-
- TBlobStreamMode = (bmRead, bmWrite, bmReadWrite);
-
- TLocateOption = (loCaseInsensitive, loPartialKey);
- TLocateOptions = set of TLocateOption;
-
- TDataOperation = procedure of object;
-
- TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;
- TDataSetErrorEvent = procedure(DataSet: TDataSet; E: EDatabaseError;
- var Action: TDataAction) of object;
-
- TFilterOption = (foCaseInsensitive, foNoPartialCompare);
- TFilterOptions = set of TFilterOption;
-
- TFilterRecordEvent = procedure(DataSet: TDataSet;
- var Accept: Boolean) of object;
-
- TDataSet = class(TComponent)
- procedure BeginInsertAppend;
- procedure CheckCanModify;
- procedure CheckFieldName(const FieldName: string);
- procedure CheckFieldNames(const FieldNames: string);
- procedure CheckOperation(Operation: TDataOperation;
- ErrorEvent: TDataSetErrorEvent);
- procedure CheckRequiredFields;
- procedure DoInternalOpen;
- procedure DoInternalClose;
- procedure EndInsertAppend;
- function GetActive: Boolean;
- function GetBuffer(Index: Integer): PChar;
- function GetField(Index: Integer): TField;
- function GetFieldCount: Integer;
- function GetFieldValue(const FieldName: string): Variant;
- function GetFound: Boolean;
- procedure MoveBuffer(CurIndex, NewIndex: Integer);
- procedure RemoveDataSource(DataSource: TDataSource);
- procedure RemoveField(Field: TField);
- procedure SetActive(Value: Boolean);
- procedure SetBufferCount(Value: Integer);
- procedure SetField(Index: Integer; Value: TField);
- procedure SetFieldDefs(Value: TFieldDefs);
- procedure SetFieldValue(const FieldName: string; const Value: Variant);
- procedure SetConstraints(const Value: TCheckConstraints);
- procedure UpdateBufferCount;
- procedure UpdateFieldDefs;
- protected
- procedure ActivateBuffers; virtual;
- procedure BindFields(Binding: Boolean);
- function BookmarkAvailable: Boolean;
- function BCDToCurr(BCD: Pointer; var Curr: Currency): Boolean; virtual;
- function CurrToBCD(const Curr: Currency; BCD: Pointer; Precision,
- Decimals: Integer): Boolean; virtual;
- procedure CalculateFields(Buffer: PChar); virtual;
- procedure CheckActive; virtual;
- procedure CheckInactive; virtual;
- procedure ClearBuffers; virtual;
- procedure ClearCalcFields(Buffer: PChar); virtual;
- procedure CloseBlob(Field: TField); virtual;
- procedure CloseCursor; virtual;
- procedure CreateFields;
- procedure DataEvent(Event: TDataEvent; Info: Longint); virtual;
- procedure DestroyFields; virtual;
- procedure DoAfterCancel; virtual;
- procedure DoAfterClose; virtual;
- procedure DoAfterDelete; virtual;
- procedure DoAfterEdit; virtual;
- procedure DoAfterInsert; virtual;
- procedure DoAfterOpen; virtual;
- procedure DoAfterPost; virtual;
- procedure DoAfterScroll; virtual;
- procedure DoBeforeCancel; virtual;
- procedure DoBeforeClose; virtual;
- procedure DoBeforeDelete; virtual;
- procedure DoBeforeEdit; virtual;
- procedure DoBeforeInsert; virtual;
- procedure DoBeforeOpen; virtual;
- procedure DoBeforePost; virtual;
- procedure DoBeforeScroll; virtual;
- procedure DoOnCalcFields; virtual;
- procedure DoOnNewRecord; virtual;
- function FieldByNumber(FieldNo: Integer): TField;
- function FindRecord(Restart, GoForward: Boolean): Boolean; virtual;
- procedure FreeFieldBuffers; virtual;
- function GetBookmarkStr: TBookmarkStr; virtual;
- procedure GetCalcFields(Buffer: PChar); virtual;
- function GetCanModify: Boolean; virtual;
- procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
- function GetDataSource: TDataSource; virtual;
- function GetFieldClass(FieldType: TFieldType): TFieldClass; virtual;
- function GetStateFieldValue(State: TDataSetState; Field: TField): Variant; virtual;
- function GetIsIndexField(Field: TField): Boolean; virtual;
- function GetNextRecords: Integer; virtual;
- function GetNextRecord: Boolean; virtual;
- function GetPriorRecords: Integer; virtual;
- function GetPriorRecord: Boolean; virtual;
- function GetRecordCount: Integer; virtual;
- function GetRecNo: Integer; virtual;
- procedure InitFieldDefs; virtual;
- procedure InitRecord(Buffer: PChar); virtual;
- procedure InternalCancel; virtual;
- procedure InternalEdit; virtual;
- procedure InternalRefresh; virtual;
- procedure Loaded; override;
- procedure OpenCursor(InfoQuery: Boolean); virtual;
- procedure RefreshInternalCalcFields(Buffer: PChar); virtual;
- procedure RestoreState(const Value: TDataSetState);
- procedure SetBookmarkStr(const Value: TBookmarkStr); virtual;
- procedure SetBufListSize(Value: Integer);
- procedure SetChildOrder(Component: TComponent; Order: Integer); override;
- procedure SetCurrentRecord(Index: Integer); virtual;
- procedure SetFiltered(Value: Boolean); virtual;
- procedure SetFilterOptions(Value: TFilterOptions); virtual;
- procedure SetFilterText(const Value: string); virtual;
- procedure SetFound(const Value: Boolean);
- procedure SetModified(Value: Boolean);
- procedure SetName(const Value: TComponentName); override;
- procedure SetStateFieldValue(State: TDataSetState; Field: TField; Value: Variant); virtual;
- procedure SetOnFilterRecord(const Value: TFilterRecordEvent); virtual;
- procedure SetRecNo(Value: Integer); virtual;
- procedure SetState(Value: TDataSetState);
- function SetTempState(const Value: TDataSetState): TDataSetState;
- function TempBuffer: PChar;
- procedure UpdateIndexDefs; virtual;
- property ActiveRecord: Integer;
- property CurrentRecord: Integer;
- property BlobFieldCount: Integer;
- property BookmarkSize: Integer;
- property Buffers[Index: Integer]: PChar;
- property BufferCount: Integer;
- property CalcBuffer: PChar;
- property CalcFieldsSize: Integer;
- property InternalCalcFields: Boolean;
- property Constraints: TCheckConstraints;
- protected { abstract methods }
- function AllocRecordBuffer: PChar; virtual; abstract;
- procedure FreeRecordBuffer(var Buffer: PChar); virtual; abstract;
- procedure GetBookmarkData(Buffer: PChar; Data: Pointer); virtual; abstract;
- function GetBookmarkFlag(Buffer: PChar): TBookmarkFlag; virtual; abstract;
- function GetFieldData(Field: TField; Buffer: Pointer): Boolean; virtual; abstract;
- function GetRecord(Buffer: PChar; GetMode: TGetMode; DoCheck: Boolean): TGetResult; virtual; abstract;
- function GetRecordSize: Word; virtual; abstract;
- procedure InternalAddRecord(Buffer: Pointer; Append: Boolean); virtual; abstract;
- procedure InternalClose; virtual; abstract;
- procedure InternalDelete; virtual; abstract;
- procedure InternalFirst; virtual; abstract;
- procedure InternalGotoBookmark(Bookmark: Pointer); virtual; abstract;
- procedure InternalHandleException; virtual; abstract;
- procedure InternalInitFieldDefs; virtual; abstract;
- procedure InternalInitRecord(Buffer: PChar); virtual; abstract;
- procedure InternalLast; virtual; abstract;
- procedure InternalOpen; virtual; abstract;
- procedure InternalPost; virtual; abstract;
- procedure InternalSetToRecord(Buffer: PChar); virtual; abstract;
- function IsCursorOpen: Boolean; virtual; abstract;
- procedure SetBookmarkFlag(Buffer: PChar; Value: TBookmarkFlag); virtual; abstract;
- procedure SetBookmarkData(Buffer: PChar; Data: Pointer); virtual; abstract;
- procedure SetFieldData(Field: TField; Buffer: Pointer); virtual; abstract;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- function ActiveBuffer: PChar;
- procedure Append;
- procedure AppendRecord(const Values: array of const);
- function BookmarkValid(Bookmark: TBookmark): Boolean; virtual;
- procedure Cancel; virtual;
- procedure CheckBrowseMode;
- procedure ClearFields;
- procedure Close;
- function ControlsDisabled: Boolean;
- function CompareBookmarks(Bookmark1, Bookmark2: TBookmark): Integer; virtual;
- function CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream; virtual;
- procedure CursorPosChanged;
- procedure Delete;
- procedure DisableControls;
- procedure Edit;
- procedure EnableControls;
- function FieldByName(const FieldName: string): TField;
- function FindField(const FieldName: string): TField;
- function FindFirst: Boolean;
- function FindLast: Boolean;
- function FindNext: Boolean;
- function FindPrior: Boolean;
- procedure First;
- procedure FreeBookmark(Bookmark: TBookmark); virtual;
- function GetBookmark: TBookmark; virtual;
- function GetCurrentRecord(Buffer: PChar): Boolean; virtual;
- procedure GetFieldList(List: TList; const FieldNames: string);
- procedure GetFieldNames(List: TStrings);
- procedure GotoBookmark(Bookmark: TBookmark);
- procedure Insert;
- procedure InsertRecord(const Values: array of const);
- function IsEmpty: Boolean;
- function IsLinkedTo(DataSource: TDataSource): Boolean;
- function IsSequenced: Boolean; virtual;
- procedure Last;
- function Locate(const KeyFields: string; const KeyValues: Variant;
- Options: TLocateOptions): Boolean; virtual;
- function Lookup(const KeyFields: string; const KeyValues: Variant;
- const ResultFields: string): Variant; virtual;
- function MoveBy(Distance: Integer): Integer;
- procedure Next;
- procedure Open;
- procedure Post; virtual;
- procedure Prior;
- procedure Refresh;
- procedure Resync(Mode: TResyncMode); virtual;
- procedure SetFields(const Values: array of const);
- procedure Translate(Src, Dest: PChar; ToOem: Boolean); virtual;
- procedure UpdateCursorPos;
- procedure UpdateRecord;
- property BOF: Boolean;
- property Bookmark: TBookmarkStr;
- property CanModify: Boolean;
- property DataSource: TDataSource;
- property DefaultFields: Boolean;
- property Designer: TDataSetDesigner;
- property EOF: Boolean;
- property FieldCount: Integer;
- property FieldDefs: TFieldDefs;
- property Fields[Index: Integer]: TField;
- property FieldValues[const FieldName: string]: Variant; default;
- property Found: Boolean;
- property Modified: Boolean;
- property RecordCount: Integer;
- property RecNo: Integer;
- property RecordSize: Word;
- property State: TDataSetState;
- property Filter: string;
- property Filtered: Boolean default False;
- property FilterOptions: TFilterOptions default [];
- property Active: Boolean default False;
- property AutoCalcFields: Boolean default True;
- property BeforeOpen: TDataSetNotifyEvent;
- property AfterOpen: TDataSetNotifyEvent;
- property BeforeClose: TDataSetNotifyEvent;
- property AfterClose: TDataSetNotifyEvent;
- property BeforeInsert: TDataSetNotifyEvent;
- property AfterInsert: TDataSetNotifyEvent;
- property BeforeEdit: TDataSetNotifyEvent;
- property AfterEdit: TDataSetNotifyEvent;
- property BeforePost: TDataSetNotifyEvent;
- property AfterPost: TDataSetNotifyEvent;
- property BeforeCancel: TDataSetNotifyEvent;
- property AfterCancel: TDataSetNotifyEvent;
- property BeforeDelete: TDataSetNotifyEvent;
- property AfterDelete: TDataSetNotifyEvent;
- property BeforeScroll: TDataSetNotifyEvent;
- property AfterScroll: TDataSetNotifyEvent;
- property OnCalcFields: TDataSetNotifyEvent;
- property OnDeleteError: TDataSetErrorEvent;
- property OnEditError: TDataSetErrorEvent;
- property OnFilterRecord: TFilterRecordEvent;
- property OnNewRecord: TDataSetNotifyEvent;
- property OnPostError: TDataSetErrorEvent;
- end;
-
- { TDateTimeRec }
-
- type
- TDateTimeRec = record
- case TFieldType of
- ftDate: (Date: Longint);
- ftTime: (Time: Longint);
- ftDateTime: (DateTime: TDateTime);
- end;
-
- const
- dsEditModes = [dsEdit, dsInsert, dsSetKey];
- dsWriteModes = [dsEdit, dsInsert, dsSetKey, dsCalcFields, dsFilter, dsNewValue];
-
- DefaultFieldClasses: array[ftUnknown..ftTypedBinary] of TFieldClass = (
- nil, { ftUnknown }
- TStringField, { ftString }
- TSmallintField, { ftSmallint }
- TIntegerField, { ftInteger }
- TWordField, { ftWord }
- TBooleanField, { ftBoolean }
- TFloatField, { ftFloat }
- TCurrencyField, { ftCurrency }
- TBCDField, { ftBCD }
- TDateField, { ftDate }
- TTimeField, { ftTime }
- TDateTimeField, { ftDateTime }
- TBytesField, { ftBytes }
- TVarBytesField, { ftVarBytes }
- TAutoIncField, { ftAutoInc }
- TBlobField, { ftBlob }
- TMemoField, { ftMemo }
- TGraphicField, { ftGraphic }
- TBlobField, { ftFmtMemo }
- TBlobField, { ftParadoxOle }
- TBlobField, { ftDBaseOle }
- TBlobField); { ftTypedBinary }
-
- function ExtractFieldName(const Fields: string; var Pos: Integer): string;
- procedure RegisterFields(const FieldClasses: array of TFieldClass);
-
- procedure DatabaseError(const Message: string);
- procedure DatabaseErrorFmt(const Message: string; const Args: array of const);
- procedure DBError(Ident: Word);
- procedure DBErrorFmt(Ident: Word; const Args: array of const);
-
- procedure DisposeMem(var Buffer; Size: Integer);
- function BuffersEqual(Buf1, Buf2: Pointer; Size: Integer): Boolean;
-
- function GetFieldProperty(DataSet: TDataSet; Control: TComponent;
- const FieldName: string): TField;
-
- const
- RegisterFieldsProc: procedure(const FieldClassess: array of TFieldClass) = nil;
-
- implementation
-