anchor.diff:  procedure TfpgTreeview.HandleDoubleClick(x, y: integer; button: word;
     shiftstate: TShiftState);
   begin
  +  // to setup cursor co-ordinates and handle selection
  +  HandleLMouseUp(x, y, shiftstate);
     inherited HandleDoubleClick(x, y, button, shiftstate);
  +  if Selection <> nil then
  +  begin
  +    if Selection.Collapsed then
  +    begin
  +      Selection.Expand;
  +      DoExpand(Selection);
  +    end
  +    else
  +      Selection.Collapse;
  +    RePaint;
  +  end;
   end;
   
   procedure TfpgTreeview.HandleShow;
  
positive.code:   n := ANode;
    if ANode.Prev <> nil then
    begin
      result := ANode.Prev;
      ANode := ANode.Prev;
      while (not ANode.Collapsed) and (ANode.Count > 0) do
      begin
        result := ANode.LastSubNode;
        aNode := ANode.LastSubNode;
      end;
    end
    else
  
negative.code: end;
  
  function TfpgTreeview.NextVisualNode(ANode: TfpgTreeNode): TfpgTreeNode;
    //----------------
    procedure _FindNextNode;
    begin
      if ANode.Next <> nil then
      begin
        result := ANode.Next;
      end
      else
      begin
        while ANode.Next = nil do
        begin
          ANode := ANode.Parent;
          if ANode = nil then
            exit;  //==>
        end;
        result := ANode.Next;
      end;
    end;
  
  begin
    result := nil;
    if ANode.Collapsed then
    begin
      _FindNextNode;
    end
    else
    begin
      if ANode.Count > 0 then
      begin
        result := ANode.FirstSubNode;
      end
      else
        _FindNextNode;
    end;
  end;
  
  