diff options
Diffstat (limited to 'extras')
-rw-r--r-- | extras/tiopf/demos/Common/Model.pas | 26 | ||||
-rw-r--r-- | extras/tiopf/gui/tiMediators.pas | 75 |
2 files changed, 71 insertions, 30 deletions
diff --git a/extras/tiopf/demos/Common/Model.pas b/extras/tiopf/demos/Common/Model.pas index 57be1783..9d5dea39 100644 --- a/extras/tiopf/demos/Common/Model.pas +++ b/extras/tiopf/demos/Common/Model.pas @@ -44,7 +44,7 @@ type procedure SetMemento(const AValue: TPersonMemento); protected function GetCaption: string; override; - procedure DoGetFieldBounds(const AFieldName: String; var MinValue, MaxValue: Integer; var HasBounds: Boolean); overload; + procedure DoGetFieldBounds(const AFieldName: String; var MinValue, MaxValue: Integer; var HasBounds: Boolean); override; public constructor Create; override; function IsValid(const pErrors: TtiObjectErrors): Boolean; override; @@ -168,11 +168,25 @@ end; procedure TPerson.DoGetFieldBounds(const AFieldName: String; var MinValue, MaxValue: Integer; var HasBounds: Boolean); begin - inherited; // until I can figure this out -{ - HasBounds := True; -} - // How do I check or set the Name property to max 25 character? + if AFieldName = 'Name' then + begin + writeln(' Name - DoGetFieldBounds'); + HasBounds := True; + MinValue := 1; + MaxValue := 25; + end + else if AFieldName = 'Age' then + begin + writeln(' Age - DoGetFieldBounds'); + HasBounds := True; + MinValue := 1; + MaxValue := 95; + end + else + begin + writeln(' unknown property <', AFieldName, '> - DoGetFieldBounds'); + inherited DoGetFieldBounds(AFieldName, MinValue, MaxValue, HasBounds); + end; end; constructor TPerson.Create; diff --git a/extras/tiopf/gui/tiMediators.pas b/extras/tiopf/gui/tiMediators.pas index dd5d47e3..5c7ccb3a 100644 --- a/extras/tiopf/gui/tiMediators.pas +++ b/extras/tiopf/gui/tiMediators.pas @@ -103,6 +103,9 @@ type FEditControl: TfpgTrackBar; function GetGUIControl: TComponent; override; procedure SetGUIControl(const AValue: TComponent);override; + procedure DoTrackBarChanged(Sender: TObject; APosition: integer); + protected + procedure SetupGUIandObject; override; public Constructor Create; override; property EditControl: TfpgTrackBar read FEditControl write FEditControl; @@ -118,10 +121,10 @@ type procedure SetGUIControl(const AValue: TComponent);override; protected procedure UpdateGuiValidStatus(pErrors: TtiObjectErrors); override; + procedure DoObjectToGui; override; public Constructor Create; override; property EditControl: TfpgComboBox read FEditControl write FEditControl; - procedure DoObjectToGui; override; class function ComponentClass: TClass; override; end; @@ -227,26 +230,25 @@ end; procedure TMediatorEditView.SetupGUIandObject; var - Mi,Ma : Integer; + Mi, Ma: Integer; begin inherited; if Subject.GetFieldBounds(FieldName,Mi,Ma) and (Ma>0) then - FEditControl.MaxLength:=Ma; - if ObjectUpdateMoment in [ouOnchange,ouCustom] then - FeditControl.OnChange:=@DoOnChange + FEditControl.MaxLength := Ma; + if ObjectUpdateMoment in [ouOnChange,ouCustom] then + FeditControl.OnChange := @DoOnChange else - FeditControl.OnExit:=@DoOnChange + FeditControl.OnExit := @DoOnChange; end; -procedure TMediatorEditView.SetObjectUpdateMoment( - const AValue: TObjectUpdateMoment); +procedure TMediatorEditView.SetObjectUpdateMoment(const AValue: TObjectUpdateMoment); begin inherited SetObjectUpdateMoment(AValue); - If Assigned(FEditControl) then + if Assigned(FEditControl) then If ObjectUpdateMoment in [ouOnchange,ouCustom] then - FeditControl.OnChange:=@DoOnChange + FeditControl.OnChange := @DoOnChange else - FeditControl.OnExit:=@DoOnChange + FeditControl.OnExit := @DoOnChange; end; constructor TMediatorEditView.Create; @@ -354,10 +356,35 @@ begin Inherited; end; +procedure TMediatorTrackBarView.DoTrackBarChanged(Sender: TObject; APosition: integer); +begin +// writeln(' executing - DoTrackBarChanged'); + GUIChanged; +end; + +procedure TMediatorTrackBarView.SetupGUIandObject; +var + Mi, Ma: Integer; +begin + inherited; + if Subject.GetFieldBounds(FieldName,Mi,Ma) and (Ma>0) then + begin + FEditControl.Min := Mi; + FEditControl.Max := Ma; + end; + if ObjectUpdateMoment in [ouOnChange,ouCustom] then + begin +// writeln(' Trackbar: setting OnChange event handler'); + FEditControl.OnChange := @DoTrackBarChanged; + end; +// else +// FeditControl.OnExit := @DoOnChange; +end; + constructor TMediatorTrackBarView.Create; begin - Inherited; - GuiFieldName:='Position'; + inherited; + GuiFieldName := 'Position'; end; class function TMediatorTrackBarView.ComponentClass: TClass; @@ -375,13 +402,13 @@ end; function TMediatorComboBoxView.GetGUIControl: TComponent; begin - Result:=FeditControl; + Result := FEditControl; end; procedure TMediatorComboBoxView.SetGUIControl(const AValue: TComponent); begin - FEditControl:=AValue as TfpgComboBox; - Inherited; + FEditControl := AValue as TfpgComboBox; + inherited; end; procedure TMediatorComboBoxView.UpdateGuiValidStatus(pErrors: TtiObjectErrors); @@ -629,18 +656,18 @@ end; constructor TMediatorStaticTextView.Create; begin inherited Create; - GuiFieldName:='Text'; + GuiFieldName := 'Text'; end; function TMediatorStaticTextView.GetGUIControl: TComponent; begin - Result:=FEditControl; + Result := FEditControl; end; procedure TMediatorStaticTextView.SetGUIControl(const AValue: TComponent); begin - FEditControl:=AValue as TfpgLabel; - Inherited; + FEditControl := AValue as TfpgLabel; + inherited; end; class function TMediatorStaticTextView.ComponentClass: TClass; @@ -653,19 +680,19 @@ end; function TMediatorCalendarComboView.GetGUIControl: TComponent; begin - Result:=FEditControl; + Result := FEditControl; end; procedure TMediatorCalendarComboView.SetGUIControl(const AValue: TComponent); begin - FEditControl:= AValue as TfpgCalendarCombo; - Inherited; + FEditControl := AValue as TfpgCalendarCombo; + inherited; end; constructor TMediatorCalendarComboView.Create; begin inherited Create; - GUIFieldName:='DateValue'; + GUIFieldName := 'DateValue'; end; class function TMediatorCalendarComboView.ComponentClass: TClass; |