[DELPHI]TreeView精确定位到每一个ITEM

procedure TForm1.TreeView1Click(Sender: TObject);
var
  aPoint: TPoint;
  aNode: TTreeNode;
  aHitTest: THitTests;
begin
  if GetCursorPos(aPoint) then
  begin
    aPoint := TreeView1.ScreenToClient(aPoint);
    aHitTest := TreeView1.GetHitTestInfoAt(aPoint.X, aPoint.Y);

    //htOnItem, htOnButton, htOnIcon, htOnIndent, htOnLabel
    if not ((htOnItem in aHitTest)or (htOnLabel in aHitTest)) then  Exit;

    aNode := TreeView1.GetNodeAt(aPoint.X, aPoint.Y);
    if not Assigned(aNode) then  Exit;

    //test: Caption := aNode.Text;
    //do your code
  end;
end;

procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  aNode: TTreeNode;
begin
  aNode := TreeView1.GetNodeAt(X, Y);
  if not Assigned(aNode) then  Exit;

  //do your code
end;

posted @ 2009-12-22 11:37  翼想天开的男孩  阅读(1023)  评论(0编辑  收藏  举报