anchor.diff:      function    GetGUIControl: TComponent; override;
       procedure   SetGUIControl(const AValue: TComponent); override;
       procedure   UpdateGuiValidStatus(pErrors: TtiObjectErrors); override;
  -    procedure   SetupGUIandObject; override;
  -    procedure   SetObjectUpdateMoment (Const AValue : TObjectUpdateMoment); override;
  +    procedure   SetObjectUpdateMoment (const AValue: TObjectUpdateMoment); override;
     public
       constructor Create; override;
       destructor  Destroy; override;
  
positive.code: var
    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
    else
      FEditControl.OnExit := @DoOnChange;
  end;
  
  procedure TMediatorEditView.SetObjectUpdateMoment(const AValue: TObjectUpdateMoment);
  begin
    inherited SetObjectUpdateMoment(AValue);
    if Assigned(FEditControl) then
      If ObjectUpdateMoment in [ouOnchange,ouCustom] then
        FeditControl.OnChange := @DoOnChange
      else
        FeditControl.OnExit := @DoOnChange;
  end;
  
  constructor TMediatorEditView.Create;
  begin
    inherited Create;
    GuiFieldName := 'Text';
  end;
  
  destructor TMediatorEditView.Destroy;
  begin
    if Assigned(EditControl) and Assigned(EditControl.OnChange) then
      EditControl.OnChange := nil;
    inherited Destroy;
  end;
  
  class function TMediatorEditView.ComponentClass: TClass;
  begin
    Result := TfpgEdit;
  end;
  
  
  { TMediatorSpinEditView}
  
  class function TMediatorSpinEditView.ComponentClass: TClass;
  begin
    Result := TfpgSpinEdit;
  end;
  
  function TMediatorSpinEditView.GetGUIControl: TComponent;
  begin
    Result := FEditControl;
  end;
  
  procedure TMediatorSpinEditView.SetGUIControl(const AValue: TComponent);
  begin
    FEditControl := AValue as TfpgSpinEdit;
    inherited SetGUIControl(AValue);
  end;
  
  procedure TMediatorSpinEditView.UpdateGuiValidStatus(pErrors: TtiObjectErrors);
  var
    oError: TtiObjectError;
  begin
    inherited UpdateGuiValidStatus(pErrors);
  
    oError := pErrors.FindByErrorProperty(FieldName);
    if oError <> nil then
    begin
      EditControl.BackgroundColor  := clError;
      EditControl.Hint   := oError.ErrorMessage;
    end
    else
    begin
      EditControl.BackgroundColor  := clWindowBackground;
      EditControl.Hint   := '';
    end;
  end;
  
  procedure TMediatorSpinEditView.SetupGUIandObject;
  var
    Mi, Ma: Integer;
  begin
    inherited SetupGUIandObject;
    if Subject.GetFieldBounds(FieldName, Mi, Ma) then
    begin
      FEditControl.MinValue := Mi;
      FEditControl.MaxValue := Ma;
    end;
    if ObjectUpdateMoment in [ouOnChange,ouCustom] then
      FEditControl.OnChange := @DoOnChange
    else
      FEditControl.OnExit := @DoOnChange;
  end;
  
  constructor TMediatorSpinEditView.Create;
  begin
    inherited Create;
    GuiFieldName := 'Value';
  end;
  
  
  { TMediatorTrackBarView}
  
  function TMediatorTrackBarView.GetGUIControl: TComponent;
  begin
    Result := FEditControl;
  end;
  
  procedure TMediatorTrackBarView.SetGUIControl(const AValue: TComponent);
  begin
    FEditControl := AValue as TfpgTrackBar;
    inherited;
  end;
  
  procedure TMediatorTrackBarView.DoTrackBarChanged(Sender: TObject; APosition: integer);
  begin
    GUIChanged;
  end;
  
  procedure TMediatorTrackBarView.SetupGUIandObject;
  var
    Mi, Ma: Integer;
  begin
    inherited;
    if Subject.GetFieldBounds(FieldName, Mi, Ma) then
    begin
      FEditControl.Min := Mi;
      FEditControl.Max := Ma;
    end;
    if ObjectUpdateMoment in [ouOnChange,ouCustom] then
      FEditControl.OnChange := @DoTrackBarChanged
    else
      FeditControl.OnExit := @DoOnChange;
  end;
  
  constructor TMediatorTrackBarView.Create;
  begin
    inherited;
    GuiFieldName := 'Position';
  end;
  
  class function TMediatorTrackBarView.ComponentClass: TClass;
  begin
    Result := TfpgTrackBar;
  end;
  
  
  { TMediatorComboBoxView }
  
  class function TMediatorComboBoxView.ComponentClass: TClass;
  begin
    Result := TfpgComboBox;
  end;
  
  function TMediatorComboBoxView.GetGUIControl: TComponent;
  begin
    Result := FEditControl;
  end;
  
  procedure TMediatorComboBoxView.SetGUIControl(const AValue: TComponent);
  begin
    FEditControl := AValue as TfpgComboBox;
    inherited SetGUIControl(AValue);
  end;
  
  procedure TMediatorComboBoxView.SetupGUIandObject;
  begin
    inherited SetupGUIandObject;
    if ObjectUpdateMoment in [ouOnChange,ouCustom] then
      FEditControl.OnChange := @DoOnChange
    else
      FEditControl.OnExit := @DoOnChange;
  end;
  
  procedure TMediatorComboBoxView.UpdateGuiValidStatus(pErrors: TtiObjectErrors);
  var
    oError: TtiObjectError;
  begin
    inherited UpdateGuiValidStatus(pErrors);
  
    oError := pErrors.FindByErrorProperty(FieldName);
    if oError <> nil then
    begin
      EditControl.BackgroundColor  := clError;
      EditControl.Hint   := oError.ErrorMessage;
    end
    else
    begin
      EditControl.BackgroundColor  := clBoxColor;
      EditControl.Hint   := '';
    end;
  end;
  
  constructor TMediatorComboBoxView.Create;
  begin
    inherited Create;
    GuiFieldName := 'Text'; //'FocusItem';
  end;
  
  procedure TMediatorComboBoxView.DoObjectToGui;
  begin
    EditControl.FocusItem :=
        EditControl.Items.IndexOf(Subject.PropValue[FieldName]);
  end;
  
  
  { TMediatorMemoView }
  
  class function TMediatorMemoView.ComponentClass: TClass;
  begin
    Result := TfpgMemo;
  end;
  
  procedure TMediatorMemoView.DoGuiToObject;
  begin
    Subject.PropValue[FieldName] := EditControl.Lines.Text;
  end;
  
  procedure TMediatorMemoView.DoObjectToGui;
  begin
    EditControl.Lines.Text := Subject.PropValue[FieldName];
  
negative.code:     function    GetGUIControl: TComponent; override;
      procedure   SetGUIControl(const AValue: TComponent);override;
      procedure   UpdateGuiValidStatus(pErrors: TtiObjectErrors); override;
      procedure   SetObjectUpdateMoment(const AValue: TObjectUpdateMoment); override;
    public
      constructor Create; override;
      property    EditControl: TfpgCheckBox read FEditControl write FEditControl;
  