anchor.diff:  
   procedure TKMRadioGroup.Add(aText: UnicodeString; aEnabled: Boolean);
   begin
  +  Add(aText, '', aEnabled);
  +end;
  +
  +
  +procedure TKMRadioGroup.Add(aText, aHint: UnicodeString; aEnabled: Boolean = True);
  +begin
     if fCount >= Length(fItems) then
       SetLength(fItems, fCount + 8);
   
     fItems[fCount].Text := aText;
  +  fItems[fCount].Hint := aHint;
     fItems[fCount].Enabled := aEnabled;
   
     Inc(fCount);
  
positive.code:   end;
  
  
    { TKMRadioGroup }
    TKMRadioGroup = class(TKMControl)
    private
      fItemIndex: Integer;
      fCount: Integer;
      fItems: array of record
        Text: UnicodeString;
        Enabled: Boolean;
      end;
      fFont: TKMFont;
      fOnChange: TNotifyEvent;
    public
      DrawChkboxOutline: Boolean;
      LineColor: TColor4; //color of outline
      LineWidth: Byte;
      constructor Create(aParent: TKMPanel; aLeft, aTop, aWidth, aHeight: Integer; aFont: TKMFont);
  
      procedure Add(aText: UnicodeString; aEnabled: Boolean = True);
      procedure Clear;
      property Count: Integer read fCount;
      property ItemIndex: Integer read fItemIndex write fItemIndex;
      property OnChange: TNotifyEvent read fOnChange write fOnChange;
      procedure MouseUp(X,Y: Integer; Shift: TShiftState; Button: TMouseButton); override;
      procedure Paint; override;
    end;
  
  
negative.code:   end;
  
    inherited; //There are OnMouseUp and OnClick events there
  end;
  
  
  procedure TKMRadioGroup.MouseMove(X,Y: Integer; Shift: TShiftState);
  begin
    inherited;
    UpdateMouseOverPositions(X,Y);
  end;
  
  
  procedure TKMRadioGroup.UpdateMouseOverPositions(X,Y: Integer);
  var
    LineHeight, MouseOverRow: Integer;
  begin
    fMouseOverItem := -1;
    LineHeight := Round(fHeight / Count);
    if InRange(Y, AbsTop, AbsTop + Height) then
    begin
      MouseOverRow := (Y - AbsTop) div LineHeight;
      if InRange(X, AbsLeft, AbsLeft + LineHeight + gRes.Fonts[fFont].GetTextSize(fItems[MouseOverRow].Text).X) then
        fMouseOverItem := EnsureRange(MouseOverRow, 0, fCount - 1);
    end;
  end;
  
  
  function TKMRadioGroup.GetItem(aIndex: Integer): TKMRadioGroupItem;
  begin
    Assert(aIndex < fCount, 'Can''t get radio group item for index ' + IntToStr(aIndex));
    Result := fItems[aIndex];
  end;
  
  
  function TKMRadioGroup.GetHint: UnicodeString;
  begin
    Result := inherited GetHint;
    if Result = '' then
    begin
      if fMouseOverItem <> -1 then
        Result := fItems[fMouseOverItem].Hint;
    end;
  end;
  
  
  