diff --git a/packages/fcl-db/src/base/fields.inc b/packages/fcl-db/src/base/fields.inc index 96bea1129d..d942787121 100644 --- a/packages/fcl-db/src/base/fields.inc +++ b/packages/fcl-db/src/base/fields.inc @@ -2669,11 +2669,13 @@ Procedure TBooleanField.SetDisplayValues(const AValue : String); var I : longint; begin + if aValue='' then + DatabaseErrorFmt(SFieldError+SInvalidDisplayValues,[DisplayName,AValue]); If FDisplayValues<>AValue then begin I:=Pos(';',AValue); - If (I<2) or (I=Length(AValue)) then - DatabaseErrorFmt(SFieldError+SInvalidDisplayValues,[DisplayName,AValue]); + If I=0 then + I:=Length(aValue)+1; FdisplayValues:=AValue; // Store display values and their uppercase equivalents; FDisplays[False,True]:=Copy(AValue,1,I-1); diff --git a/packages/fcl-db/tests/testdbbasics.pas b/packages/fcl-db/tests/testdbbasics.pas index 28762434a8..d25749323a 100644 --- a/packages/fcl-db/tests/testdbbasics.pas +++ b/packages/fcl-db/tests/testdbbasics.pas @@ -35,6 +35,7 @@ type procedure TestSupportWordFields; procedure TestSupportStringFields; procedure TestSupportBooleanFields; + procedure TestSupportBooleanFieldDisplayValue; procedure TestSupportFloatFields; procedure TestSupportLargeIntFields; procedure TestSupportDateFields; @@ -2716,6 +2717,22 @@ begin ds.Close; end; +procedure TTestDBBasics.TestSupportBooleanFieldDisplayValue; +var i : byte; + ds : TDataset; + Fld : TField; + BoolFld : TBooleanField absolute Fld; +begin + TestFieldDefinition(ftBoolean,2,ds,Fld); + CheckEquals(TBooleanField,Fld.ClassType,'Correct class'); + BoolFld.DisplayValues:='+'; + ds.Edit; + Fld.AsBoolean:=True; + CheckEquals('+',Fld.DisplayText,'Correct true'); + Fld.AsBoolean:=False; + CheckEquals('',Fld.DisplayText,'Correct false'); +end; + procedure TTestDBBasics.TestSupportFloatFields; var i : byte;