2012-03-09 69 views
3

我在Delphi中使用TTreeview組件,並且我已經自定義了拖放功能。 我開始向下拖動鼠標(因爲它是自定義行爲),但我不想在用戶單擊+/-或展開和摺疊圖標時開始拖動事件。命中測試TTreview加/減(摺疊/展開)圖標 - Delphi

有沒有辦法知道用戶是否點擊了節點的標題或展開/摺疊圖標?

謝謝!

回答

5

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組可能members的完整列表是:

  • htAbove
  • htBelow
  • htNowhere
  • htOnItem
  • htOnButton
  • htOnIcon
  • htOnIndent
  • htOnLabel
  • htOnRight
  • htOnStateIcon
  • htToLeft
  • htToRight
+0

如何選擇樹節點如果我點擊僅在展開/摺疊圖標?謝謝。 – grinner 2014-12-10 07:13:39

+0

@tdiop檢測合適的htXXX。用戶不會感謝你。 – 2014-12-10 07:18:09

+0

好吧,htOnButton和TreeView1.GetNodeAt(X,Y)做了訣竅。 (: – grinner 2014-12-10 07:47:00