私は、ツリービューとリストビューと、ツリービューからリストビューに選択項目を移動するボタンを持っています。選択と転送は完璧に行われていますが、ツリービューからアイテムを削除することはできません。ツリービューの下で単一の項目を選択した場合にのみ機能します。 TreeView1.MultiSelect := True
を持っているときに問題があります。ここでループ内のTreeViewからユーザーが選択したアイテムを削除するときに、無効なインデックスエラーを回避するにはどうすればよいですか?
は、私が使用していますコードです:
For i := 0 to TreeView1.Items.Count-1 do Begin
If TreeView1.Items[i].Selected then
Begin
Itm := ListView1.Items.add;
.....
TreeView1.Items[i].Delete
上記のコードは、特定の選択後に無効なインデックスを提供します。完璧ではない場合があります。選択した2つのうち1つだけが追加されます。
が試み:
For i := TreeView1.Items.Count to 1 do Begin
- 移入リストビューは、最初にして代わりにそれをやってsimulatainouslyの、ツリービューから削除しようとしました。同じエラー。
- 親と子を配列に格納した後、名前を付けて削除しようとしました。問題はツリービューで選択されていない特定の項目です。
これは私が最後の要素を選択すると、親ノード内のすべての要素が
for Itr := TreeView1.Items.Count-1 downto 0 do Begin
if TreeView1.Items[Itr].Selected then
begin
Str := TreeView1.Items[Itr].Parent.Text + ' ,' + TreeView1.Items[Itr].Text;
TrimLeft(Str);
for k := 0 to SaveList.Count -1 do Begin
If ansipos(Str, SaveList[k]) > 0 Then Begin
Value := StringReplace(SaveList[k], Str, '',[rfReplaceAll, rfIgnoreCase]);
End;
End;
Itm := ListView1.Items.Add;
Itm.Caption := TreeView1.Items[Itr].Parent.Text;
Itm.SubItems.Add(TreeView1.Items[Itr].Text);
Itm.SubItems.Add(Value);
TreeView1.Items[Itr].Delete
end;
End;
ごめんなさい、そのDownto 0のみ、小さなタイプ –
@siddharthtaunk注 'TreeView1.Items.Count-1'! –
ツリー内の最後のアイテムを選択すると無効なインデックスエラーが発生します。そしてツリーの2つか3つ以上のアイテムと@Tom Noted –