📄 memtabledataeh.pas
字号:
{*******************************************************}
{ }
{ EhLib v4.2 }
{ TMemTableDataEh component }
{ Build 4.2.36 }
{ }
{ Copyright (c) 2003-06 by EhLib Team and }
{ Dmitry V. Bolshakov }
{ }
{*******************************************************}
unit MemTableDataEh;// {$IFDEF CIL} platform{$ENDIF};
{$I EhLib.Inc}
interface
uses SysUtils, Windows,
{$IFDEF CIL}
EhLibVCLNET,
{$ELSE}
EhLibVCL,
{$ENDIF}
{$IFDEF EH_LIB_6}
Variants, MaskUtils, SqlTimSt, FMTBcd,
{$ELSE}
ActiveX,
{$ENDIF}
Classes, Db, Contnrs, DBCommon, MemTreeEh;
type
TIntArray = array of Integer;
TMemTableDataEh = class;
TMTDataStructEh = class;
TRecordsViewEh = class;
TRecordsListNotificatorEh = class;
TMemoryRecordEh = class;
{ TAutoIncrementEh }
TAutoIncrementEh = class(TPersistent)
private
FStep: Integer;
FInitValue: Integer;
procedure SetInitValue(const Value: Integer);
protected
FCurValue: Longint;
public
constructor Create;
procedure Assign(Source: TPersistent); override;
property CurValue: Longint read FCurValue;
function Promote: Longint;
procedure Reset;
published
property InitValue: Integer read FInitValue write SetInitValue default -1;
property Step: Integer read FStep write FStep default -1;
end;
{ TUpdateErrorEh }
TUpdateErrorEh = class
private
FException: Exception;
public
constructor Create(AException: Exception);
destructor Destroy; override;
property ExceptionObject: Exception read FException;
end;
{ TDataSetExprParserEh }
TDataSetExprParserTypeEh = (dsptFilterEh, dsptAggregateEh);
TDataSetExprParserEh = class
private
FDataSet: TDataSet;
FExprData: TExprData;
FExprDataSize: Integer;
FExprParserType: TDataSetExprParserTypeEh;
public
constructor Create(ADataSet: TDataSet; ExprParserType: TDataSetExprParserTypeEh);
procedure ParseExpression(Expr: String);
function IsCurRecordInFilter(Rec: TMemoryRecordEh): Boolean;
function CalcAggregateValue(RecordsView: TRecordsViewEh): Variant;
function HasData: Boolean;
end;
{ TMTDataFieldEh }
TMTDataFieldEh = class(TComponent)
private
FAlignment: TAlignment;
FAutoIncrement: Boolean;
FDataStruct: TMTDataStructEh;
FDefaultExpression: String;
FDisplayLabel: String;
FDisplayWidth: Integer;
FEditMask: String;
FFieldId: Largeint;
FFieldName: String;
FReadOnly: Boolean;
FRequired: Boolean;
FSize: Integer;
FVisible: Boolean;
procedure SetDataStruct(const Value: TMTDataStructEh);
function GetIndex: Integer;
protected
function DefaultSize: Integer; virtual;
function DefaultAlignment: TAlignment; virtual;
function DefValueForDefaultExpression: String; virtual;
function DefaultDisplayLabel: String; virtual;
function DefaultDisplayWidth: Integer; virtual;
function DefaultEditMask: String; virtual;
function DefaultRequired: Boolean; virtual;
function DefaultVisible: Boolean; virtual;
function GetAlignment: TAlignment; virtual;
function GetAutoIncrement: Boolean; virtual;
function GetDataType: TFieldType; virtual;
function GetDefaultExpression: String; virtual;
function GetDisplayLabel: String; virtual;
function GetDisplayWidth: Integer; virtual;
function GetEditMask: String; virtual;
function GetFieldName: String; virtual;
function GetReadOnly: Boolean; virtual;
function GetRequired: Boolean; virtual;
function GetSize: Integer; virtual;
function GetVisible: Boolean; virtual;
function CreateUniqueName(const FieldName: string): string;
procedure SetAlignment(const Value: TAlignment); virtual;
procedure SetAutoIncrement(const Value: Boolean); virtual;
procedure SetDefaultExpression(const Value: String); virtual;
procedure SetDisplayLabel(const Value: String); virtual;
procedure SetDisplayWidth(const Value: Integer); virtual;
procedure SetEditMask(const Value: String); virtual;
procedure SetFieldName(const Value: String); virtual;
procedure SetReadOnly(const Value: Boolean); virtual;
procedure SetRequired(const Value: Boolean); virtual;
procedure SetSize(const Value: Integer); virtual;
procedure SetVisible(const Value: Boolean); virtual;
procedure CheckInactive;
{$IFNDEF CIL}
procedure SetParentComponent(AParent: TComponent); override;
{$ENDIF}
procedure ReadState(Reader: TReader); override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function GetParentComponent: TComponent; override;
function HasParent: Boolean; override;
function CanDinaSize: Boolean; virtual;
function GetVarDataType: TVarType; virtual;
procedure Assign(Source: TPersistent); override;
procedure AssignDataType(FieldType: TFieldType); virtual;
procedure AssignProps(Field: TField); virtual;
{$IFDEF CIL}
procedure SetParentComponent(AParent: TComponent); override;
{$ENDIF}
property DataStruct: TMTDataStructEh read FDataStruct write SetDataStruct;
property DataType: TFieldType read GetDataType;
property Size: Integer read GetSize write SetSize;
property AutoIncrement: Boolean read GetAutoIncrement write SetAutoIncrement;
property Alignment: TAlignment read GetAlignment write SetAlignment;
property DefaultExpression: String read GetDefaultExpression write SetDefaultExpression;
property DisplayLabel: String read GetDisplayLabel write SetDisplayLabel;
property DisplayWidth: Integer read GetDisplayWidth write SetDisplayWidth;
property EditMask: String read GetEditMask write SetEditMask;
property Required: Boolean read GetRequired write SetRequired;
property Visible: Boolean read GetVisible write SetVisible;
property Index: Integer read GetIndex;
published
property FieldName: String read GetFieldName write SetFieldName;
end;
TStringDataFieldTypesEh = (fdtStringEh, fdtFixedCharEh,
fdtWideStringEh, fdtGuidEh
{$IFDEF EH_LIB_10}
, fdtFixedWideCharEh, fdtOraIntervalEh
{$ENDIF}
);
TMTDataFieldClassEh = class of TMTDataFieldEh;
{ TMTStringDataFieldEh }
TMTStringDataFieldEh = class(TMTDataFieldEh)
private
FFixedChar: Boolean;
FTransliterate: Boolean;
FStringDataType: TStringDataFieldTypesEh;
protected
function DefaultSize: Integer; override;
function GetDataType: TFieldType; override;
public
function CanDinaSize: Boolean; override;
procedure AssignProps(Field: TField); override;
procedure AssignDataType(FieldType: TFieldType); override;
procedure Assign(Source: TPersistent); override;
published
property StringDataType: TStringDataFieldTypesEh read FStringDataType write FStringDataType;
property Alignment;
property DefaultExpression;
property DisplayLabel;
property DisplayWidth;
property EditMask;
property Required;
property Visible;
property FixedChar: Boolean read FFixedChar write FFixedChar default False;
property Size;// default 20;
property Transliterate: Boolean read FTransliterate write FTransliterate default True;
end;
TNumericDataFieldTypesEh = (fdtSmallintEh, fdtIntegerEh, fdtWordEh,
fdtFloatEh, fdtCurrencyEh, fdtBCDEh, fdtAutoIncEh, fdtLargeintEh
{$IFDEF EH_LIB_6}
,fdtFMTBcdEh
{$ENDIF}
);
{ TMTNumericDataFieldEh }
TMTNumericDataFieldEh = class(TMTDataFieldEh)
private
FDisplayFormat: string;
FEditFormat: string;
FCurrency: Boolean;
FMaxValue: Double;
FMinValue: Double;
FPrecision: Integer;
FNumericDataType: TNumericDataFieldTypesEh;
protected
function GetDataType: TFieldType; override;
public
procedure AssignProps(Field: TField); override;
procedure AssignDataType(FieldType: TFieldType); override;
procedure Assign(Source: TPersistent); override;
published
property NumericDataType: TNumericDataFieldTypesEh read FNumericDataType write FNumericDataType;
property Alignment;
property DefaultExpression;
property DisplayLabel;
property DisplayWidth;
property EditMask;
property Required;
property Visible;
property DisplayFormat: string read FDisplayFormat write FDisplayFormat;
property EditFormat: string read FEditFormat write FEditFormat;
property currency: Boolean read FCurrency write FCurrency;
property MaxValue: Double read FMaxValue write FMaxValue;
property MinValue: Double read FMinValue write FMinValue;
property Precision: Integer read FPrecision write FPrecision;
end;
TDateTimeDataFieldTypesEh = (fdtDateEh, fdtTimeEh, fdtDateTimeEh
//{$IFDEF EH_LIB_6}
// ,fdtTimeStampEh
//{$ENDIF}
);
{ TMTDateTimeDataFieldEh }
TMTDateTimeDataFieldEh = class(TMTDataFieldEh)
private
FDisplayFormat: string;
FDateTimeDataType: TDateTimeDataFieldTypesEh;
protected
function GetDataType: TFieldType; override;
public
procedure AssignProps(Field: TField); override;
procedure AssignDataType(FieldType: TFieldType); override;
procedure Assign(Source: TPersistent); override;
published
property DateTimeDataType: TDateTimeDataFieldTypesEh read FDateTimeDataType write FDateTimeDataType;
property Alignment;
property DefaultExpression;
property DisplayLabel;
property DisplayWidth;
property EditMask;
property Required;
property Visible;
property DisplayFormat: string read FDisplayFormat write FDisplayFormat;
end;
{ TMTBlobDataFieldEh }
TMTBlobDataFieldEh = class(TMTDataFieldEh)
private
FGraphicHeader: Boolean;
FTransliterate: Boolean;
FBlobType: TBlobType;
protected
function GetDataType: TFieldType; override;
public
procedure AssignProps(Field: TField); override;
procedure AssignDataType(FieldType: TFieldType); override;
procedure Assign(Source: TPersistent); override;
published
property Alignment;
property DefaultExpression;
property DisplayLabel;
property DisplayWidth;
property EditMask;
property Required;
property Visible;
property BlobType: TBlobType read FBlobType write FBlobType;
property GraphicHeader: Boolean read FGraphicHeader write FGraphicHeader;
property Transliterate: Boolean read FTransliterate write FTransliterate;
end;
{ TMTBooleanDataFieldEh }
TMTBooleanDataFieldEh = class(TMTDataFieldEh)
private
FDisplayValues: string;
procedure SetDisplayValues(const Value: string);
protected
function GetDataType: TFieldType; override;
public
procedure AssignProps(Field: TField); override;
procedure Assign(Source: TPersistent); override;
public
procedure AssignDataType(FieldType: TFieldType); override;
published
property Alignment;
property DefaultExpression;
property DisplayLabel;
property DisplayWidth;
property EditMask;
property Required;
property Visible;
property DisplayValues: string read FDisplayValues write SetDisplayValues;
end;
{ TMTInterfaceDataFieldEh }
TInterfaceDataFieldTypesEh = (fdtInterfaceEh, fdtIDispatchEh);
TMTInterfaceDataFieldEh = class(TMTDataFieldEh)
private
FInterfaceDataType: TInterfaceDataFieldTypesEh;
protected
function GetDataType: TFieldType; override;
public
procedure AssignDataType(FieldType: TFieldType); override;
published
property Alignment;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -