2011-07-26 103 views
2

ツリービュー、MultiSelect:=trueがあります。Delphi:ツリービューで選択項目の選択を解除します

すべての項目を選択すると、選択を解除したり、もう一度選択することはできません。私はTForm1.TreeView1ClickTreeView1.Selected.Selected:=false;をする必要があると思う。しかし、クリックがコントロールにないかどうかを知るには:アイテム、ボタン?

ビデオ:http://liga-installer.realservers.info/select.mp4

は通常以下のコードですか?

procedure TForm1.TreeView1Click(Sender: TObject); 
var 
Item: TTreeNode; 
begin 

    Item :=TTreeView(Sender).GetNodeAt(TTreeView(Sender).ScreenToClient(Mouse.CursorPos).X, 
    TTreeView(Sender).ScreenToClient(Mouse.CursorPos).y); 

    if (not Assigned(Item)) and (TTreeView(Sender).SelectionCount>0) then TTreeView(Sender).Select(nil, []); 
end; 

ありがとうございます!

+1

私はそれを得ることはありません。 –

+0

私はビデオを見ることができます。私は新しいプロジェクトを作成し、すべてのアイテムを選択してから、選択を解除できません。 – maxfax

+0

私には起こりません... –

答えて

1

Shiftキーを押しながら最初に選択した項目をクリックすると仮定します。 Ctrlキーを押しながらクリックすると、一度に1つの項目の選択を解除することもできます。

しかし、私はそれが直感的ではないことに同意します。私はしたい

procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton; 
    Shift: TShiftState; X, Y: Integer); 
var 
    i: Integer; 
begin 
    if not Assigned(TreeView1.GetNodeAt(X, Y)) then 
    for i := 0 to TreeView1.Items.Count - 1 do 
     TreeView1.Items[i].Selected := false; 
end; 
+0

クリックすることですべてを一度に選択解除する方法?もう一度キーを押してクリックするのは不便です。 – maxfax

+0

これはコントロールの仕組みです。 (リストビューとは異なります) –

+0

"TForm1.TreeView1ClickではTreeView1.Selected.Selected:= false;を実行する必要があると思いますが、クリックがコントロールでないかどうかを知るにはアイテム、ボタンはありますか? – maxfax

関連する問題