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 |