2014-04-27 1 views
0

Delphi (및 Firemonkey)를 처음 사용하고 이미 선택된 경우 TTreeViewItem을 다시 클릭하여 선택을 취소 할 수 있습니다. 유일한 문제는 개발자 윈도우에서 이미 생성 된 항목에 대한 이벤트를 만들고 나중에 사용자가 만들지 않는 방법을 알 수 있다는 것입니다.TTreeViewItem deselection

나는 조금 깔끔하게 정리할 수 있지만 여기 TTreeViewItems를 만드는 곳은 알고있다. 으로 TreeView1에서 ClearingEdit2에서 텍스트 노드 항목을 만들 클릭 어떠한 노드/아이가 선택되어 있지 않은 경우는 새로운 루트 노드를 만들 때 나는 그렇지 않으면 선택 부모의 자식으로 만들고, Button1을 가지고 노드 :

procedure TForm3.Button1Click(Sender: TObject); 
    var 
     Item1 : TTreeViewItem; 
    begin 
     if NodeSelected = 'DeSelected' then 
     begin 
      Item1 := TTreeViewItem.Create(Self); 
      Item1.Text := ClearingEdit2.Text; 
      Item1.Parent := TreeView1; 
     end 
     else 
     if NodeSelected = 'Selected' then 
      begin 
      Item1 := TTreeViewItem.Create(Self); 
      Item1.Text := ClearingEdit2.Text; 
      Item1.Parent := TreeView1.Selected; 
      TreeView1.Selected.Deselect; 
      TreeView1.Selected.Expand; 
      NodeSelected := 'DeSelected'; 
      ClearingEdit2.SetFocus; 
      ClearingEdit2.SelectAll; 
     end; 
     end; 

는 나중에 프로그램에서 나는 이벤트에 대한이 사용하고 있습니다

procedure TForm3.TreeViewItem1Click(Sender: TObject); 
     begin 
     if ((NodeSelected = 'Selected')= false) then 
      begin 
      NodeSelected := 'Selected'; 
      Label1.Text := 'Selected'; 
      end 
     else 
     if (NodeSelected = 'Selected') then 
      begin 
      TreeView1.Selected.Deselect; 
      NodeSelected := 'DeSelected'; 
      ClearingEdit2.SetFocus; 
      end 
     else 
     end; 

을 지금까지 방식이 구조화 있기 때문에, 내가 어떤 일반적으로 TreeViewItems를가 이미 만들어진 항목을 선택 해제 할 수 있지만 수 내가 필요한 것. 나는 이름에 관계없이 동적으로 작동하도록 표현하는 방법을 모르지만 TreeView1의 모든 TreeViewItem을 사용합니다.

답변

1

고맙습니다. 알아 냈습니다.

하기를 해결하려면 먼저 내가 사용 :

type 
    TForm3 = class(TForm) 
    procedure Button1Click(Sender: TObject); 
    procedure Item1Click(Sender: TObject); 

는 내가 사용 :

procedure TForm3.Button1Click(Sender: TObject); 
    var   
     Item1 : TTreeViewItem; 
    begin 
     if NodeSelected = 'DeSelected' then 
     begin 
      Item1 := TTreeViewItem.Create(Self); 
      Item1.Text := ClearingEdit2.Text; 
      Item1.Parent := TreeView1; 
      Item1.OnClick := Item1Click; 
     end 
     else 
     if NodeSelected = 'Selected' then 
     begin 
     Item1 := TTreeViewItem.Create(Self); 
     Item1.Text := ClearingEdit2.Text; 
     Item1.Parent := TreeView1.Selected; 
     Item1.OnClick := Item1Click; 
     TreeView1.Selected.Deselect; 
     TreeView1.Selected.Expand; 
     NodeSelected := 'DeSelected'; 
     ClearingEdit2.SetFocus; 
     ClearingEdit2.SelectAll; 
     end; 
    end; 

과 마지막을 내가 사용하는 클릭 이벤트 :

procedure TForm3.Item1Click(Sender: TObject); 
     begin 
     if ((NodeSelected = 'Selected')= false) then 
      begin 
      NodeSelected := 'Selected'; 
      end 
     else 
     if (NodeSelected = 'Selected') then 
     begin 
      TreeView1.Selected.Deselect; 
      NodeSelected := 'DeSelected'; 
      ClearingEdit2.SetFocus; 
     end 
     else 
    end;