我有一个用Delphi XE8 FMX开发的iOS / android应用程序。
在应用程序中,我有树视图的树视图。当我在展开相同的父节点时向节点添加树项时,我需要a)从应用程序本身折叠和展开父节点,或者b)以编程方式(见下文)执行该操作以获取树项目马上表演。我试着叫'重画',但那没用。有更好的解决方法吗?有时在调用collapseall时,像我在下面那样展开,然后一些树节点变得无响应(不可选),直到我第一次选择最顶层的树节点之后。
procedure TnewForm.AddTreeItemClick(Sender: TObject);
var
t:TTreeViewItem;
begin
t:=TTreeViewItem.Create(nil);
t.Text:=NewTreeItemEdit.Text;
if TreeView.Selected<>nil then
begin
t.Parent:=TreeView.Selected
end else
t.Parent:=TreeView;
//Treeview.Repaint;
treeview.CollapseAll;
treeview.ExpandAll;
NewTreeItemEdit.Text:='';
end;
如何在不折叠/展开树视图的情况下立即显示动态添加的树项目?
答案 0 :(得分:1)
你可以试试这个。
procedure TnewForm.AddTreeItemClick(Sender: TObject);
var
t:TTreeViewItem;
begin
t:=TTreeViewItem.Create(nil);
t.Text:=NewTreeItemEdit.Text;
if TreeView.Selected<>nil then
begin
t.Parent:=TreeView.Selected
end else
t.Parent:=TreeView;
//Treeview.Repaint;
treeview.Selected := t;
NewTreeItemEdit.Text:='';
end;
答案 1 :(得分:1)
Dsm's solution有效,但更改了TreeView的选择。如果您希望选择保持不变,而只是添加的项目立即可见,那么展开其父项:
procedure TForm1.AddTreeItemClick(Sender: TObject);
var
T :TTreeViewItem;
begin
T := TTreeViewItem.Create(nil);
T.Text := NewTreeItemEdit.Text;
if TreeView.Selected <> nil then
begin
T.Parent := TreeView.Selected;
TreeView.Selected.IsExpanded := True;
end else
T.Parent := TreeView;
NewTreeItemEdit.Text := '';
end;
答案 2 :(得分:1)
与Windows / XE8类似的问题。 为我做的解决方法:
if Assigned(TV.Selected) then
begin
N := TTreeviewItem.Create(Self);
N.Text := 'Another child';
N.Parent := TV.Selected;
N.IsExpanded := TRUE; // This seems to do the trick
end;
希望在下一版本中引起关注。