我有一个应用程序为iOS/安卓与德尔福XE8 FMX开发。
在应用程序中,我有一个带有树形项目的树形视图。当我在同一个父节点展开的情况下向节点添加树项目时,我需要a)从应用程序本身折叠和展开父节点,或者b)以编程方式(见下文)来立即显示树项目。我试着调用‘重新绘制’,但那不起作用。有没有更好的办法呢?有时,当像下面这样调用折叠所有、展开所有时,一些树节点会变得没有响应(不可选),直到我第一次选择最顶端的树节点。
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;如何在不折叠/展开treeview的情况下立即显示动态添加的树形项目?
发布于 2015-06-24 21:32:11
你可以试试这个。
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;发布于 2015-06-24 22:10:25
Dsm's solution可以工作,但会更改树视图的选择。如果您希望所选内容保持不变,而只是希望添加的项目立即可见,则展开其父项:
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;发布于 2015-10-20 03:48:27
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;希望这将在下一个版本中得到关注。
https://stackoverflow.com/questions/31006791
复制相似问题