diff --git a/fcl/db/dataset.inc b/fcl/db/dataset.inc index c0f951d881..58470c3e46 100644 --- a/fcl/db/dataset.inc +++ b/fcl/db/dataset.inc @@ -991,10 +991,17 @@ begin //!! To be implemented end; +Procedure TDataset.CheckBiDirectional; + +begin + if FIsUniDirectional then DataBaseError(SUniDirectional); +end; + Procedure TDataset.SetFilterOptions(Value: TFilterOptions); begin - //!! To be implemented + CheckBiDirectional; + FFilterOptions := Value; end; Procedure TDataset.SetFilterText(const Value: string); @@ -1012,7 +1019,7 @@ end; Procedure TDataset.SetFound(const Value: Boolean); begin - //!! To be implemented + FFound := Value; end; Procedure TDataset.SetModified(Value: Boolean); @@ -1054,7 +1061,8 @@ end; Procedure TDataset.SetOnFilterRecord(const Value: TFilterRecordEvent); begin - //!! To be implemented + CheckBiDirectional; + FOnFilterRecord := Value; end; Procedure TDataset.SetRecNo(Value: Longint); @@ -1637,7 +1645,7 @@ Var Function ScrollBackward : Integer; begin - if FIsUniDirectional then DatabaseError(SUniDirectional); + CheckBiDirectional; Result:=0; {$ifdef dsdebug} Writeln('Scrolling backward:',Abs(Distance)); @@ -1989,8 +1997,7 @@ end; Function TDataset.Locate(const keyfields: string; const keyvalues: Variant; options: TLocateOptions) : boolean; begin - if fIsUnidirectional then - DataBaseError(SUniDirectional); + CheckBiDirectional; Result := False; end; diff --git a/fcl/db/db.pp b/fcl/db/db.pp index 2bb5b8be7d..09272bc87a 100644 --- a/fcl/db/db.pp +++ b/fcl/db/db.pp @@ -218,7 +218,6 @@ type FAlignMent : TAlignment; FAttributeSet : String; FCalculated : Boolean; - FCanModify : Boolean; FConstraintErrorMessage : String; FCustomConstraint : String; FDataSet : TDataSet; @@ -227,7 +226,6 @@ type FDefaultExpression : String; FDisplayLabel : String; FDisplayWidth : Longint; - FEditText : String; FFieldKind : TFieldKind; FFieldName : String; FFieldNo : Longint; @@ -260,6 +258,8 @@ type procedure SetIndex(AValue: Integer); Procedure SetDataset(AValue : TDataset); function GetDisplayText: String; + function GetEditText: String; + procedure SetEditText(const AValue: string); procedure SetDisplayLabel(const AValue: string); procedure SetDisplayWidth(const AValue: Longint); function GetDisplayWidth: integer; @@ -337,7 +337,7 @@ type property AsVariant: variant read GetAsVariant write SetAsVariant; property AttributeSet: string read FAttributeSet write FAttributeSet; property Calculated: Boolean read FCalculated write FCalculated; - property CanModify: Boolean read FCanModify; + property CanModify: Boolean read GetCanModify; property CurValue: Variant read GetCurValue; property DataSet: TDataSet read FDataSet write SetDataSet; property DataSize: Word read GetDataSize; @@ -350,7 +350,7 @@ type property NewValue: Variant read GetNewValue write SetNewValue; property Offset: word read FOffset; property Size: Word read FSize write FSize; - property Text: string read FEditText write FEditText; + property Text: string read GetEditText write SetEditText; property ValidChars : TFieldChars Read FValidChars; property Value: variant read GetAsVariant write SetAsVariant; property OldValue: variant read GetOldValue; @@ -985,6 +985,7 @@ type procedure CalculateFields(Buffer: PChar); virtual; procedure CheckActive; virtual; procedure CheckInactive; virtual; + procedure CheckBiDirectional; procedure Loaded; override; procedure ClearBuffers; virtual; procedure ClearCalcFields(Buffer: PChar); virtual; @@ -1166,7 +1167,7 @@ type property FieldValues[fieldname : string] : Variant read GetFieldValues write SetFieldValues; default; property Filter: string read FFilterText write SetFilterText; property Filtered: Boolean read FFiltered write SetFiltered default False; - property FilterOptions: TFilterOptions read FFilterOptions write FFilterOptions; + property FilterOptions: TFilterOptions read FFilterOptions write SetFilterOptions; property Active: Boolean read GetActive write SetActive default False; property AutoCalcFields: Boolean read FAutoCalcFields write FAutoCalcFields; property BeforeOpen: TDataSetNotifyEvent read FBeforeOpen write FBeforeOpen; diff --git a/fcl/db/fields.inc b/fcl/db/fields.inc index c13a3b96ab..a6904b2d6a 100644 --- a/fcl/db/fields.inc +++ b/fcl/db/fields.inc @@ -13,7 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. **********************************************************************} -Procedure DumpMem (P : Pointer;Size : Longint); +{Procedure DumpMem (P : Pointer;Size : Longint); Var i : longint; @@ -22,7 +22,7 @@ begin For I:=0 to Size-1 do Write (Pbyte(P)[i],' '); Writeln; -end; +end;} { --------------------------------------------------------------------- TFieldDef @@ -879,6 +879,23 @@ end; // TField private methods +procedure TField.SetEditText(const AValue: string); +begin + if Assigned(OnSetText) then + OnSetText(Self, AValue) + else + SetText(AValue); +end; + +function TField.GetEditText: String; +begin + SetLength(Result, 0); + if Assigned(OnGetText) then + OnGetText(Self, Result, False) + else + GetText(Result, False); +end; + function TField.GetDisplayText: String; begin SetLength(Result, 0);