掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TreeView内でノードの検索をするには? (ID:45127)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
質問者さんは、そもそも重複を考えずに普通にデータをツリーに追加する場合どうしているのでしょうか。 例えば A-B-C というデータがあったら、これを分解して 1. ルートの下に A というノードを新しく作って追加する。 2. 1で作った A の下に、B というノードを新しく作って追加する。 3. 2で作った B の下に、C というノードを新しく作って追加する。 おそらくこうですよね。 重複をチェックするには、この手順を少しアレンジします。 例えばデータが A-B-D だったら、これを分解して 1. ルートの下に A というノードがあるか調べる。 あればそれを採用し、なければ新しく A を作って追加する。 2. 1で見つけたか作った A の下に、B というノードがあるか調べる。 あればそれを採用し、なければ新しく B を作って追加する。 3. 2で見つけたか作った B の下に、D というノードがあるか調べる。 あればそれを採用し、なければ新しく D を作って追加する。 こうなります。 で、タイトルと考え合わせると、この手順のうち「○○の下に××があるか調べる」ところで悩んでいるのでしょうか? だとしたら、TTreeNodeのItem[index]プロパティで子ノードを順番に調べることができます。 // 現在のノード(current_node)の下から 'B' を探す例 next_node := nil; for i := 0 to current_node.Count - 1 do begin if current_node.Item[i].Text = 'B' then begin next_node := current_node.Item[i]; // 見つかったのでこれを採用 break; // 残りは調べる必要なし end; end; // 見つからなかったら新しく作る if next_node = nil then next_node := TreeView1.AddChild(current_node, 'B');
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.