[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;