吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 761|回复: 7
收起左侧

[求助] 关于delphi的控件TreeView1中在当前之后,当前之前创建节点的问题

[复制链接]
冥界3大法王 发表于 2022-8-1 08:51
关于delphi的控件TreeView1中在当前之后,当前之前创建节点的问题
先看看人家实现的效果
image.png
再看看我实现的效果:


[Delphi] 纯文本查看 复制代码
//这是在当前选中项目添加新项目的代码
var
  Node1: TTreeNode;
begin
  sTreeView1.Items.AddChild(Node1, 'New Item');
end;



[Delphi] 纯文本查看 复制代码
 这个。。。。。是向前添加的。。。也有问题
procedure TMDIChild.N4Click(Sender: TObject);
var
  MyTreeNode1: TTreeNode;
begin
  with STreeView1.Items do
  begin
//MyTreeNode1 := Add(nil, 'RootTreeNode1');
    MyTreeNode1 := Add(nil, STreeView1.Selected.Text);
AddChild(MyTreeNode1, 'ChildNode1');
end;





明显跑国外去了。。。




另外还差一个在当前节点选中时,在其下一层创建子节点的 ,也不会弄。
以下是参考代码: 可惜我没整明白

procedure TMDIChild.N4Click(Sender: TObject);
var
  MyTreeNode1, MyTreeNode2: TTreeNode;
begin
  with STreeView1.Items do
  begin
   // Clear;              //删除任何现有节点
   {添加根节点
    将子节点添加到刚才添加的节点}
    //MyTreeNode1 := Add(nil, 'RootTreeNode1');
    MyTreeNode1 := Add(nil, STreeView1.Selected.Text);


   //AddChild(MyTreeNode1, 'ChildNode1');








    {
    //添加另一个根节点
    MyTreeNode2 := Add(MyTreeNode1, 'RootTreeNode2');
   //把MyTreeNode2给一个子节点
    AddChild(MyTreeNode2,'ChildNode2');


    将MyTreeNode2更改为ChildNode2
    向其中添加子节点}
    //MyTreeNode2 := STreeView1.Items[3];
   // AddChild(MyTreeNode2,'ChildNode2a');


   //将另一个子节点添加到ChildNode2,在ChildNode2a之后
   // AddChild(MyTreeNode2,'ChildNode2b');


   //添加另一个根节点
   // Add(MyTreeNode1, 'RootTreeNode3');
  end;
end;

免费评分

参与人数 1吾爱币 +1 收起 理由
huyafeng + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 冥界3大法王 发表于 2022-8-1 09:25
procedure TMDIChild.N1Click(Sender: TObject);
var
  MyNode: TTreeNode;
  i: integer;
begin
  with STreeView1.Items do
  begin
    MyNode := STreeView1.items[i];
    AddChild(MyNode, '1111111');
  end;
end;
又改了一下,还是有bug
 楼主| 冥界3大法王 发表于 2022-8-1 09:33
我又认真观察了下人家的程序
如果在  1个根节点上 、则生成的都是同级的根节点
。。。。。。。。。的子根点上,则生成的是同级的子节点。
sunsjw 发表于 2022-8-1 09:45
zxxiaopi 发表于 2022-8-1 10:40
大佬,去盒子上问下吧
homejun 发表于 2022-8-1 10:45
看帮助吧,应该很简单
Ashes 发表于 2022-8-1 13:16
AddChild 是在指定节点下增加一个子节点
Add 才是增加同级别的节点, 但会增加到同一级节点的最后面
Ashes 发表于 2022-8-1 14:37
Insert 是在指定节点前插入一个新节点, 我写了一个在指定节点后插入的InsertAfter;
试试是不是你要的效果

procedure InsertAfter(aTree:TTreeView; aText: String);
var
  nodeThat: TTreeNode;
begin
  nodeThat := aTree.Selected.GetNext;
  if nodeThat=nil then
    aTree.Items.Add(aTree.Selected, aText)
  else
    aTree.items.Insert(nodeThat, aText);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  InsertAfter(TreeView1, 'New Item ' + inttostr(aIndex));
  Inc(aIndex);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  TreeView1.Items.Insert(TreeView1.Selected, 'New Item ' + inttostr(aIndex));
  Inc(aIndex);
end;

免费评分

参与人数 1吾爱币 +4 收起 理由
冥界3大法王 + 4 谢谢@Thanks!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 10:04

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表