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을 사용합니다.