Selection and Grouping issues


I have a StringGrid with RowSelect option (goRowSelect=true) and no editing option (goEditing=false)
I group this grid on the second column (the first is empty for the nodes)
In my example, I have 3 nodes, the first with 1 row, the second with 5 rows and the last with 1

0/ Here is a picture of it where the last row is selected :

1/ Now if I collapse the second node, my selection diseappars, why not...but surprising for user, this is for me a first bug :

2/ Now if I select again the last row (the 5th visible row, it is important for what follow) :

3/ and expand the second node, this is the global row index that is retains for the selection and my selection move to the 5th row

For me this is the second bug.

Now go back to the step 2  and try to use my checkbox on the fixed row 0.
My checkbox on the fixed row selects only the visible and selected rows (or all visible if not selection), so not those in collapsed nodes.
Here is the code for doing that :

procedure TMessagDlg.GridHMessCheckBoxChange(Sender: TObject; ACol,
  ARow: Integer; State: Boolean);
var Idx:integer;
  if (ACol=GridHMess.ColCount-1) then begin
      for Idx:=0 to GridHMess.AllRowCount-1 do begin
        if ((GridHMess.RowSelectCount=0) or (GridHMess.RowSelect[Idx])) and (not GridHMess.IsHiddenRow(Idx)) then

The problem is that now the selected row is not the last one as shown, but the 5th of the global list of rows (AllRowCount) and is hidden because in the collapsed node !! 
So no way to checked the last row the user has selected.
And this is the third bug.

What is wrong ?? Are these bugs or bad options I had checked ?

(StringGrid version is