Тест удара TTreview значок плюс / минус (свернуть / развернуть) - Delphi - PullRequest
3 голосов
/ 09 марта 2012

Я использую компонент TTreeview в Delphi и настроил функции перетаскивания. Я начинаю перетаскивание мыши вниз (поскольку это пользовательское поведение), но не хочу запускать событие перетаскивания, когда пользователь нажимает на значки +/- или разворачивает и сворачивает.

Есть ли способ узнать, нажал ли пользователь на заголовок узла или на значок развернуть / свернуть?

Спасибо!

1 Ответ

5 голосов
/ 09 марта 2012

Для этой цели компонент TTreeView включает метод GetHitTestInfoAt.

procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  HitTests: THitTests;
begin
  HitTests := TreeView1.GetHitTestInfoAt(X, Y);
  if htOnButton in HitTests then
    //do something
  else if htOnLabel in HitTests then
    //do something else
  else if ......

Полный список возможных членов из набора THitTests:

  • htAbove
  • htBelow
  • HTNOWHERE
  • htOnItem
  • htOnButton
  • htOnIcon
  • htOnIndent
  • htOnLabel
  • htOnRight
  • htOnStateIcon
  • htToLeft
  • htToRight
...