2013-05-25 13 views
5

Ben, (daha fazla zaman), ben bir ağaç bir öğesini tıkladığınızda bkz eylemi yürütmeye çalışırken: kullanıcı tıklarBir ağaç düğümü tıklandığında yalnızca olayı Yürütme

procedure TForm1.TreeView1Click(Sender: TObject); 
begin 

    if treeview1.Selected.AbsoluteIndex=1 then 
    begin 
    showmessage('selecionado'); 
    end; 

end; 

Bu kod, bir ileti gösterilmesi treeview'in dizin 1'i, Sorun şu şekildedir: Kullanıcı dizini 1 seçerse, mesaj görüntülenir, ancak bundan sonra, öğe listenin seçili olduğu için kullanıcının listenin boş alanına tıklatılması mesajı görüntülenir. . Etkinliği yalnızca Kullanıcı ilgili öğeyi tıklarsa nasıl çalıştırabilirim?

cevap

7

TTreeView tıklandığında (yalnızca bir düğüm tıklatıldığında değil) oluşan OnClick'u kullanmayın.

procedure TForm3.TreeView1Change(Sender: TObject; Node: TTreeNode); 
begin 
    if Assigned(Node) then 
    if Node.AbsoluteIndex = 1 then 
     ShowMessage('selecionado'); 
end; 
+7

ek olarak, bir klavyenin düşünmek zorundadır: Bunun yerine, size düğüm geçer TTreeView.OnChange olayı kullanın. Bazı insanlar sadece klavyeyi kullanır ve fare kullanmazlar. –

+0

@AndreasRejbrand, "TTreeView.OnChange" etkinliğini kullanmak istedim. Ancak tıklama veya tuşa basma ile ateş etmez. Herhangi bir fikrin var mı, neden olayı ateşlemiyor? – Ugur

+0

Birinin Treeview'in OnClick olay işleyicisini OnChange yerine kullanmak istemesi durumunda herhangi bir çözüm var mı? – grinner

0
procedure TForm1.TreeView1Click(Sender: TObject); 
begin 
    if Assigned(TreeView1.Selected) then 
    begin 
     if SameText(TreeView1.Selected.Text, 'show form1') then 
      ShowMessage('selecionado') 
     else 
      if SameText(TreeView1.Selected.Text, 'show form2') then 
       ShowMessage('s22'); 
    end 
end; 
1
procedure TfClerks.tvHqClick(Sender: TObject); 
var 
    Node: TTreeNode; 
begin 
    with tvHq.ScreenToClient(Mouse.CursorPos) do 
    Node := tvHq.GetNodeAt(X, Y); 
    if Node = nil then 
    Exit; 
    // do something 
end; 
+0

Mükemmel bir cevap. Teşekkürler.. –