tree view에서 클릭했을때...선택된 대상으로 넘어가게 했는데요...
+기호를 선택하면 트리만 밑으로 보여주어야 하는데.. 스크롤이생기면서
그 밑에 있는 포인트값을 구해서 대상이 선택되어버립니다...
아래는 소스
if GetCursorPos(ptMousePos) = True then begin
    //ClickedNode := TTreeNode.Create(TreeMenu.Items);
    ptMousePos := ScreenToClient(ptMousePos);
    ClickedNode := TreeMenu.GetNodeAt(ptMousePos.X, ptMousePos.Y - PnlNode.Height);
    TreeMenu.Selected := ClickedNode;
  end;
 if GetCursorPos(ptMousePos) = True then begin
    ptMousePos := ScreenToClient(ptMousePos);
    MmcNode := TreeMenu.GetNodeAt(ptMousePos.X, ptMousePos.Y - PnlNode.Height);
 if (MmcNode <> nil) and (TreeMenu.Selected <> nil) then
      if (not MmcNode.HasChildren) and (MmcNode = TreeMenu.Selected) then
      begin
          ShowMmcForm(PTreeMenu(MmcNode.Data), MmcNode.Text);
      end;
  end;
			 
	
	
    
    
	
	
    
    
    
너무 어렵게 구현하신듯 하네요.
간단하게, 클릭한 위치의 노드를 구해서 처리하는 것이라면,
OnMouseDown에서 처리하면 간단하게 됩니다.
procedure TMainForm.TreeView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if TreeView1.GetNodeAt(X, Y)<>nil then
// ...
end;
이렇게 하면, 스크롤된 위치에 따라서 자동으로 클릭한 위치의 노드를 찾아서 원하는 처리를 할 수 있습니다.