TreeViewの表示方法


  2005-03-27 05:30:59  No: 13978

こんばんわ、ツリービューについて教えていただきたいことがあるのですが、
どなたか解決法をお願いします。
ツリービューに普通に要素を追加していくと下のようになりますよね?
  ◎アイテム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

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

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


  2005-03-27 09:10:21  No: 13980

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

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


だから  2005-03-28 01:04:14  No: 13981

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


Fusa  2005-03-28 01:49:41  No: 13982

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

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


  2005-03-28 10:09:51  No: 13983

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


メラトニン  2005-03-28 10:50:20  No: 13984

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


  2005-03-28 10:55:14  No: 13985

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


メラトニン  2005-03-28 10:59:52  No: 13986

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


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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