TreeViewの表示方法


 2005-03-27 05:30:59  No: 13978  IP: [192.*.*.*]

こんばんわ、ツリービューについて教えていただきたいことがあるのですが、
どなたか解決法をお願いします。
ツリービューに普通に要素を追加していくと下のようになりますよね?
  ◎アイテム1
  ◎アイテム2
−◎親1
   ☆子1
   ☆子2
   ☆子3
   ☆子4
   ☆子5
−◎親2
   ☆子1
   ☆子2
   ☆子3
   ☆子4
   ☆子5

これを

◎アイテム1
◎アイテム2
−◎親1
   ☆子1
   ☆子2
   ☆子3
   ☆子4
   ☆子5
−◎親2
   ☆子1
   ☆子2
   ☆子3
   ☆子4
   ☆子5

のようにしたい(子のない要素は左に寄せる)のですが、こんなことできますか?まったくやり方がわからないのですが。。
◎、☆はイメージ(アイコン)です。

よろしくおねがいします。

編集    削除
ぱお  2005-03-27 05:54:42  No: 13979  IP: [192.*.*.*]

親ノードと同じ位置に表示したい?
それではツリーの意味がない気がしますが。。。
−◎親1、2を◎アイテム2の子にするよう考えるのが自然では。

望みどおりの表示になるかはわかりませんが、AdvancedCustomDrawItemで自力描画すればある程度はできそうに思います。

編集    削除
 2005-03-27 09:10:21  No: 13980  IP: [192.*.*.*]

>−◎親1、2を◎アイテム2の子にするよう考えるのが自然では。
いや、親1,2は絶対表示させたいのです。親1,2の子は隠せたほうがいいのですが。
上から2行(アイテム1,2)だけ左に寄せたくて、それ以降は子があろうが無かろうが普通どうりに表示したいのです。
子があると「+」が表示されてちょうどいいのですが、子がないと左側にスペースが余って都合が悪いのです。
アイテム1,2に子の要素が追加されることはありません。

どなたか、お願いいたします。

編集    削除
だから  2005-03-28 01:04:14  No: 13981  IP: [192.*.*.*]

>AdvancedCustomDrawItemで自力描画すれば
ということで。

編集    削除
Fusa  2005-03-28 01:49:41  No: 13982  IP: [192.*.*.*]

object ListBox1: TListBox
  BevelEdges = [beLeft, beTop, beRight]
  BevelInner = bvLowered
  BevelKind = bkTile
  BorderStyle = bsNone
end

これをTreeViewの手前に配置したらどう?

編集    削除
 2005-03-28 10:09:51  No: 13983  IP: [192.*.*.*]

Fusaさん、ありがとうございます。
確かにうまくいったのですが、文字列の左側にはアイコンを配置したいのです。
あと一歩なのに。。
AdvancedCustomDrawItemはちょっとわからないので・・
どうか、うまい方法がありましたらお願いします。

編集    削除
メラトニン  2005-03-28 10:50:20  No: 13984  IP: [192.*.*.*]

◎アイテム1
◎アイテム2
−◎親1
同じレベルのノードでテキストの開始位置を変えることは、編集用のEditやヒントの開始位置まで変更しなくてはいけないのでTTreeViewでは結構しんどいかと思います。簡単なアイディアは思いつきません。

編集    削除
 2005-03-28 10:55:14  No: 13985  IP: [192.*.*.*]

そうですか。。
listboxにアイコンを表示させることもできないのでしょうか?

編集    削除
メラトニン  2005-03-28 10:59:52  No: 13986  IP: [192.*.*.*]

凄く簡単にできます。
詳しくはオーナードローを調べてみてください。

編集    削除