anchor.diff:  begin
     Assert(aIndex < fCount, 'Can''t get radio group item for index ' + IntToStr(aIndex));
     Result := fItems[aIndex];
  +end;
  +
  +
  +function TKMRadioGroup.GetItemIndexByRow(aRowIndex: Integer): Integer;
  +var
  +  I, K: Integer;
  +begin
  +  Assert(aRowIndex < VisibleCount, 'GetItemByRow: aRowIndex >= VisibleCount');
  +  K := 0;
  +  Result := -1;
  +  for I := 0 to fCount - 1 do
  +  begin
  +    if not fItems[I].Visible then Continue;
  +    if aRowIndex = K then
  +    begin
  +      Result := I;
  +      Exit;
  +    end;
  +    Inc(K);
  +  end;
   end;
   
   
  
positive.code: 
  procedure TKMRadioGroup.UpdateMouseOverPositions(X,Y: Integer);
  var
    LineHeight, MouseOverRow: Integer;
  begin
    fMouseOverItem := -1;
    LineHeight := Round(fHeight / Count);
    if InRange(Y, AbsTop, AbsTop + Height) and (LineHeight > 0) then
    begin
      MouseOverRow := EnsureRange((Y - AbsTop) div LineHeight, 0, fCount - 1);
      if InRange(X, AbsLeft, AbsLeft + LineHeight + gRes.Fonts[fFont].GetTextSize(fItems[MouseOverRow].Text).X) then
        fMouseOverItem := MouseOverRow;
    end;
  end;
  
  
negative.code:     fOnChange: TNotifyEvent;
      procedure UpdateMouseOverPositions(X,Y: Integer);
      function GetItem(aIndex: Integer): TKMRadioGroupItem;
      function GetItemIndexByRow(aRowIndex: Integer): Integer;
      function GetVisibleCount: Integer;
      function GetLineHeight: Single;
    protected
  