anchor.diff:      procedure SetSelectionStart(aValue: Integer);
       procedure SetSelectionEnd(aValue: Integer);
       procedure DeleteSelectedText;
  -
  -    procedure FocusSelectableEdit(aFocused: Boolean);
  -    procedure ControlMouseDown(Sender: TObject; Shift: TShiftState);
     protected
       fText: UnicodeString;
  +    procedure ControlMouseDown(Sender: TObject; Shift: TShiftState); override;
  +    procedure FocusChanged(aFocused: Boolean); override;
       function GetMaxLength: Word; virtual; abstract;
       function IsCharValid(aChar: WideChar): Boolean; virtual; abstract;
       procedure ValidateText; virtual; abstract;
  
positive.code:     //e.g. scrollbar on a listbox
      procedure SetHeight(aValue: Integer); override;
      procedure SetWidth(aValue: Integer); override;
      procedure ControlMouseDown(Sender: TObject; Shift: TShiftState);
      procedure ControlMouseUp(Sender: TObject; Shift: TShiftState);
      procedure UpdateVisibility; override;
    public
      FocusedControlIndex: Integer; //Index of currently focused control on this Panel
  
negative.code: 
  procedure TKMSelectableEdit.ControlMouseDown(Sender: TObject; Shift: TShiftState);
  begin
    inherited;
    if (Sender <> Self) then
      ResetSelection;
  end;
  
  
  procedure TKMSelectableEdit.FocusChanged(aFocused: Boolean);
  begin
    inherited;
    if not aFocused then
      ResetSelection;
  end;
  