Skip to main content

TcxCustomTreeView.GetHitTestInfoAt(Integer,Integer) Method

Determines the elements of the control located under a specified point.

Declaration

function GetHitTestInfoAt(X: Integer; Y: Integer): THitTests;

Parameters

Name Type
X Integer
Y Integer

Returns

Type
THitTests

Remarks

Use the GetHitTestInfoAt method to determine the element of the control located under a specified point. The point is specified by its horizontal and vertical coordinates using X and Y method parameters. Note that coordinates must be set in the control’s client coordinates. Thus, if you have screen coordinates of the point, use the control’s ScreenToClient method to obtain client coordinates.

Generally, the GetHitTestInfoAt method is used to determine the element located under the mouse pointer. For instance, you may need to display information about the element located under the pointer within the status bar. Another example can be invoking the context menu when end-users click node captions. Note that the GetHitTestInfoAt method is most commonly used in conjunction with the GetNodeAt method. The latter returns the node located under the specified point.

The sample code below handles the OnClick event of the tree view control. If the clicked element is a node image, then an overlay image is painted. The overlay image represents a red X. It is applied by setting the OverlayIndex property of the node to a value different from -1. The code uses the GetHitTestInfoAt method to determine whether the mouse pointer is over a node image. The node is obtained using the GetNodeAt method call.

procedure TForm1.cxTreeView1Click(Sender: TObject);
var
  MousePos: TPoint;
  Node: TTreeNode;
begin
  MousePos := Mouse.CursorPos;
  MousePos := cxTreeView1.ScreenToClient(MousePos);
  Node := cxTreeView1.GetNodeAt(MousePos.X, MousePos.Y);
  if Node <> nil then
    if htOnIcon in cxTreeView1.GetHitTestInfoAt(MousePos.X, MousePos.Y) then
    begin
      if Node.OverlayIndex = -1 then
        Node.OverlayIndex := 0
      else
        Node.OverlayIndex := -1;
    end;
end;

If this handler for the OnClick event is used, end-users can click node images to show and hide the red X. The result is as follows:

See the ToolTips topic for another example of using the GetHitTestInfoAt method.

See Also