anchor.diff:      keyRight:
         begin
           Consumed := True;
  -        Selection.Collapsed := false;
  +        Selection.Expand;
           DoExpand(Selection);
           ResetScrollbar;
           RePaint;
  
positive.code:         n := n.parent;
        end;
      end;
      
      if GetAbsoluteNodeTop(Selection) + GetNodeHeight - FVScrollbar.Position > VisibleHeight then
      begin
        FVScrollbar.Position := GetAbsoluteNodeTop(Selection) + GetNodeHeight - VisibleHeight;
        FYOffset := FVScrollbar.Position;
        UpdateScrollBars;
      end;
      
      if GetAbsoluteNodeTop(Selection) - FVScrollbar.Position < 0 then
      begin
        FVScrollbar.Position := GetAbsoluteNodeTop(Selection);
        FYOffset := FVScrollbar.Position;
        UpdateScrollbars;
      end;
  
negative.code: procedure TfpgTreeview.SetSelection(const AValue: TfpgTreeNode);
  var
    n: TfpgTreeNode;
    dy: integer;    // y delta - absolute top node
    nh: integer;    // node height
    vh: integer;    // visible height
  begin
    if AValue <> FSelection then
    begin
      FSelection := AValue;
      if AValue <> nil then
      begin
        n := AValue.Parent;
        while n <> nil do
        begin
          n.Expand;
  