更改树视图项文本(Delphi XE)

Kha*_*war 0 delphi treeview delphi-xe

我正在使用delphi xe

我想在运行时更改树视图节点的文本,该节点已在屏幕截图中圈出. 在此输入图像描述

我正在使用下面的代码来更改它

TreeView1.Items[2].Item[6].Text:='Some Text';
Run Code Online (Sandbox Code Playgroud)

但是得到下面的错误

列表索引超出范围(6)

但是,如果我更改第一项的任何子项的文本,例如相同的代码

TreeView1.Items[0].Item[1].Text:='Some Text';
Run Code Online (Sandbox Code Playgroud)

屏幕截图

Ari*_*The 6

分而治之. 您应确定错误发生的确切位置,执行步骤导致错误.

引入一些适当类型的临时变量,并将长问题行分成一系列简单的行.

而不是TreeView1.Items[2].Item[6].Text:='Some Text';做那样的事情:

var tmp_is: TTreeNodes;
var tmp_iN, tmp_iNN: TTreeNode;

tmp_is := TreeView1.Items;

ShowMessage(IntToStr(tmp_is.Count));
tmp_iN := tmp_is[2];

ShowMessage(tmp_iN.Text + ' : ' + IntToStr(tmp_iN.Count));
tmp_iNN := tmp_iN[6];

ShowMessage(tmp_iNN.Text);
tmp_iNN.Text := 'Some Text';
Run Code Online (Sandbox Code Playgroud)

然后跟踪它,看看哪一行给出了一个错误,以及该节点实际拥有多少元素以及您实际将要运行的元素.

  • +1用于解释如何解决问题 (3认同)
  • @PeterVonča给了他一个通用的方法,如何匹配他的想法应该发生什么和正在发生的实际过程.如果可以的话,你可以用更好的方式指导他,我尽我所能. (3认同)
  • @PeterVonča显然,提问者不知道如何调试.Arioch正在提出将问题分解成小块以确定故障位置的合理建议. (2认同)