TreeViewのINDXについて

解決


まめま  2006-09-12 18:21:41  No: 133209

ご指導お願い致します。(VB6.0環境)

ツリーにノードを移動させるためにINDEXを指定してADDしようとしているのですが、INDEXの指定をしているのにもかかわらず、挿入(ADD)したノードのINDEXが指定した通りに設定されません。見かけ上は上手く移動したように見えるのですが、2度目のADDでINDEXが違うため上手く移動できないのです。どうしたら指定とおりのINDXになるのでしょうか。

Dim m As ComctlLib.Node
ns As Nodes
TgtNd As ComctlLib.Node

Set m = ns.Add(TgtNd.index, tvwPrevious, Format(s_id, "00000000000000000000"), s_name, IMAGE_FOLDER)  

TgtND.index(たとえば4)だとするとm.indexが100(一番最後かと思われる)になってしまいます。指定した4の前(3)に入れたいのですができません。

よろしくお願い致します。


我龍院忠太  2006-09-12 20:06:59  No: 133210

自分の前に挿入という事は、一つ前の後ろということで、
Set m = ns.Add(TgtNd.Previous, tvwNext, Format(s_id, "00000000000000000000"), s_name, IMAGE_FOLDER)  
でどうですか。


まめま  2006-09-12 21:29:50  No: 133211

題名のINDEXが間違っていました。お恥ずかしい・・・
早速の返答ありがとうございます。
ご指摘通りにやってみましたが、問題が出ました。一番初めのTgtNdの場合、前がないのでエラーになりました。
それ以外の場所でAdd したのですが、移動は出来るのですがINDEXの数値は変わらずです。ちなみにTgtNd.indexは狙い通りのindexであるのは間違いありませんでした。何故Addするとindexが変わるのか。。。。分かりません。


魔界の仮面弁士  2006-09-12 22:05:44  No: 133212

> Dim m As ComctlLib.Node
VB6 なのですよね。
なぜ、TreeView v6 ではなく、TreeView v5 を使っておられるのでしょう?

それと Index プロパティは、ノード数の増減に応じて変動する可能性が
ありますので、管理情報として使うにはあまり適していないと思います。
変動しない情報(Key プロパティ、あるいは Node 自体への参照)を
管理情報に用いた方が良いのでは無いでしょうか。

Nodes.Add の第一引数には、Indexだけでなく、「Key」や
「Nodeそのもの」を指定することもできるわけですし。


まめま  2006-09-13 02:31:00  No: 133213

他人のPGのだったもので気づきませんでしたが、VB5のソースが混じっていたようです。ご指摘ありがとうございます。

INDEXが変なのはどうも、ターゲットノード.FirstSiblingの前にAddをしているのが原因みたいです。Indexを指定しないで尚且つ一番初めのノードの前にAdd しない方法を考えたいと思います。
どうもありがとうございました。


我龍院忠太  2006-09-13 05:57:00  No: 133214

indexの呪縛からなかなか抜けられないようですね。
MSDNで「Index プロパティ (ActiveX コントロール)」を一度
見て下さい、あなたの考えているものと別物かも。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加