2012-03-09 39 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

+0

@tdiopは適切なhtXXXを検出します。ユーザーはあなたに感謝しません。 –

+0

OK、htOnButtonとTreeView1.GetNodeAt(X、Y)がトリックを行いました。 (: – grinner

関連する問題