|
From: <car...@us...> - 2018-09-01 10:02:05
|
Revision: 985
http://sourceforge.net/p/instantobjects/code/985
Author: carlobar
Date: 2018-09-01 10:02:02 +0000 (Sat, 01 Sep 2018)
Log Message:
-----------
fixed exposer for date value 1974-09-30
Added AfterCreateObject Event
Modified Paths:
--------------
trunk/Source/Core/InstantPresentation.pas
trunk/Tests/TestIO_DXE3.mdr
trunk/Tests/TestInstantExposer.pas
Modified: trunk/Source/Core/InstantPresentation.pas
===================================================================
--- trunk/Source/Core/InstantPresentation.pas 2018-09-01 09:54:36 UTC (rev 984)
+++ trunk/Source/Core/InstantPresentation.pas 2018-09-01 10:02:02 UTC (rev 985)
@@ -195,6 +195,7 @@
TInstantFieldEvent = procedure(Sender: TObject; Field: TField) of object;
TInstantCreateObjectEvent = procedure(Sender: TObject; var AObject: TObject) of object;
+ TInstantAfterCreateObjectEvent = procedure(Sender: TObject; const AObject: TObject) of object;
TInstantFieldErrorEvent = procedure(Sender: TObject; E: Exception; Field: TField; Value: Variant; Write: Boolean; var Handled: Boolean) of object;
TInstantIncludeFieldEvent = procedure(Sender: TObject; const FieldName: string; var Include: Boolean) of object;
TInstantFieldDefEvent = procedure(Sender: TObject; FieldDef: TFieldDef) of object;
@@ -320,6 +321,7 @@
FBeforePostField: TInstantFieldEvent;
FOnCompare: TInstantCompareObjectsEvent;
FOnCreateObject: TInstantCreateObjectEvent;
+ FAfterCreateObject: TInstantAfterCreateObjectEvent;
FOnFieldError: TInstantFieldErrorEvent;
FOnIncludeField: TInstantIncludeFieldEvent;
FOnInitField: TInstantFieldEvent;
@@ -498,7 +500,7 @@
procedure SetFieldData(Field: TField; Buffer: TValueBuffer); overload; override;
{$ENDIF}
{$IFNDEF NEXTGEN}
- procedure SetFieldData(Field: TField; Buffer: Pointer); overload; override; {$IFDEF D12+}deprecated 'Use overloaded method instead';{$ENDIF}
+ procedure SetFieldData(Field: TField; Buffer: Pointer); overload; override;
{$ENDIF}
procedure SetFiltered(Value: Boolean); override;
procedure SetRecNo(Value: Integer); override;
@@ -598,6 +600,7 @@
property OnCalcFields;
property OnCompare: TInstantCompareObjectsEvent read GetOnCompare write SetOnCompare;
property OnCreateObject: TInstantCreateObjectEvent read FOnCreateObject write FOnCreateObject;
+ property AfterCreateObject: TInstantAfterCreateObjectEvent read FAfterCreateObject write FAfterCreateObject;
property OnFieldError: TInstantFieldErrorEvent read FOnFieldError write FOnFieldError;
property OnFilterRecord;
property OnIncludeField: TInstantIncludeFieldEvent read FOnIncludeField write FOnIncludeField;
@@ -2637,6 +2640,8 @@
FOnCreateObject(Self, Result);
if not Assigned(Result) then
Result := Accessor.CreateObject;
+ if Assigned(FAfterCreateObject) then
+ FAfterCreateObject(Self, Result);
end;
procedure TInstantCustomExposer.DataEvent(Event: TDataEvent;
@@ -2807,7 +2812,7 @@
function TInstantCustomExposer.FieldDataSize(Field : TField): integer;
begin
-{$IFDEF D14}
+{$IFDEF VER210}
// Workaround for DataSize bugs in D2010 RTM (QC 78620 and 78620)
if (not Assigned(Field)) or (Field is TBlobField) then
Result := 0
@@ -2924,7 +2929,8 @@
if (Field is TDateTimeField) and Assigned(Buffer) then
begin
Move(Buffer[0], D, SizeOf(TDateTimeRec));
- Result := (D.Date <> 0) and (D.Time <> 0);
+ //Result := (D.Date <> 0) and (D.Time <> 0); WRONG TEST, FAIL WITH DATE 30/09/1974!
+ Result := (D.DateTime <> 0);
end else
Result := (State in [dsEdit, dsInsert]) or (RecordCount > 0);
end;
@@ -4256,7 +4262,8 @@
ftDateTime:
begin
Move(Buffer^, D, FieldDataSize(Field));
- if (D.Date = 0) and (D.Time = 0) then
+ //if (D.Date = 0) and (D.Time = 0) then WRONG TEST, FAIL WITH DATE 30/09/1974!
+ if (D.DateTime = 0) then
Value := 0
else begin
T := MSecsToTimeStamp(D.DateTime);
Modified: trunk/Tests/TestIO_DXE3.mdr
===================================================================
(Binary files differ)
Modified: trunk/Tests/TestInstantExposer.pas
===================================================================
--- trunk/Tests/TestInstantExposer.pas 2018-09-01 09:54:36 UTC (rev 984)
+++ trunk/Tests/TestInstantExposer.pas 2018-09-01 10:02:02 UTC (rev 985)
@@ -290,18 +290,11 @@
FExp.Edit;
//Test Name (Unicode)
AssignNameField(FExp);
+ //Test particular Date
LBirthDate := EncodeDate(1974, 09, 30);
- //Test BirthDate from 01/01/1900 to Today
- //LBirthDate := EncodeDate(1900, 01, 01);
- //while True do
- begin
- Field := FExp.FieldByName('BirthDate');
- Field.Value := LBirthDate;
- AssertEqualsDateTime(LBirthDate, p.BirthDate);
- LBirthDate := LBirthDate + 1;
- //if LBirthDate >= Date then
- //Break;
- end;
+ Field := FExp.FieldByName('BirthDate');
+ Field.Value := LBirthDate;
+ AssertEqualsDateTime(LBirthDate, p.BirthDate);
FExp.Post;
old_id := p.id;
finally
|