Browse Source

* Patch from Paul Ishenin to implement TField.AsBCD

git-svn-id: trunk@11163 -
joost 17 years ago
parent
commit
9fb37eb246
2 changed files with 16 additions and 2 deletions
  1. 5 2
      packages/fcl-db/src/base/db.pas
  2. 11 0
      packages/fcl-db/src/base/fields.inc

+ 5 - 2
packages/fcl-db/src/base/db.pas

@@ -22,7 +22,7 @@ unit db;
 
 interface
 
-uses Classes,Sysutils,Variants;
+uses Classes,Sysutils,Variants,FmtBCD;
 
 const
 
@@ -319,6 +319,7 @@ type
     procedure Change; virtual;
     procedure DataChanged;
     procedure FreeBuffers; virtual;
+    function GetAsBCD: TBCD; virtual;
     function GetAsBoolean: Boolean; virtual;
     function GetAsCurrency: Currency; virtual;
     function GetAsLargeInt: LargeInt; virtual;
@@ -344,6 +345,7 @@ type
     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
     procedure PropertyChanged(LayoutAffected: Boolean);
     procedure ReadState(Reader: TReader); override;
+    procedure SetAsBCD(const AValue: TBCD); virtual;
     procedure SetAsBoolean(AValue: Boolean); virtual;
     procedure SetAsCurrency(AValue: Currency); virtual;
     procedure SetAsDateTime(AValue: TDateTime); virtual;
@@ -377,6 +379,7 @@ type
     procedure SetData(Buffer: Pointer; NativeFormat : Boolean); overload;
     procedure SetFieldType(AValue: TFieldType); virtual;
     procedure Validate(Buffer: Pointer);
+    property AsBCD: TBCD read GetAsBCD write SetAsBCD;
     property AsBoolean: Boolean read GetAsBoolean write SetAsBoolean;
     property AsCurrency: Currency read GetAsCurrency write SetAsCurrency;
     property AsDateTime: TDateTime read GetAsDateTime write SetAsDateTime;
@@ -1937,7 +1940,7 @@ function SkipComments(var p: PChar; EscapeSlash, EscapeRepeat : Boolean) : boole
 
 implementation
 
-uses dbconst,typinfo, fmtbcd;
+uses dbconst,typinfo;
 
 { ---------------------------------------------------------------------
     Auxiliary functions

+ 11 - 0
packages/fcl-db/src/base/fields.inc

@@ -278,6 +278,7 @@ end;
   ---------------------------------------------------------------------}
 
 Const
+  SBCD = 'BCD';
   SBoolean = 'Boolean';
   SDateTime = 'TDateTime';
   SFloat = 'Float';
@@ -608,6 +609,11 @@ begin
     Result:=-1;
 end;
 
+function TField.GetAsBCD: TBCD;
+begin
+  raise AccessError(SBCD);
+end;
+
 function TField.GetLookup: Boolean;
 begin
   Result := FieldKind = fkLookup;
@@ -632,6 +638,11 @@ begin
     end;
 end;
 
+procedure TField.SetAsBCD(const AValue: TBCD);
+begin
+  Raise AccessError(SBCD);
+end;
+
 procedure TField.SetIndex(const AValue: Integer);
 begin
   if FFields <> nil then FFields.SetFieldIndex(Self, AValue)