TTreeViewで画像表示するには?

解決


みずき  2006-03-17 19:49:03  No: 20522

いつもお世話になっております。

今回、多くの要望から新たな画面作成依頼を受けました。
内容的には、既存の画面から必要な内容をパクってくれば出来そうなのですが、
要望の中に、ツリービューに画像を表示できないか。
というのがあります。

方法として、ImageListに登録してやれば。と思ったのですが、
ImegeListにはアイコンかBitmapじゃないとダメですよね。
要望ではスキャナで保存したJPGファイルも表示させたいそうです。

イメージ的にはこんな感じでしょうか↓

社内情報


・・・・・・+今月の新規採用者情報


・・・・・・−食堂
・     ・
・     ・
・     ・・・・・・−定食メニュー
・     ・     ・
・     ・     ・
・     ・     ・・・・・・3/18(土)鳥のテリヤキ 500Kcal
・     ・     ----------------------------------
・     ・     -                                -
・     ・     -   ここに画像                   -
・     ・     -                                -
・     ・     -                                -
・     ・     ----------------------------------
・     ・
・     ・・・・・・+本日のうどん

*****************************************************************
ずれていたらごめんなさい...
新規画面なので、自由に作ってよい。との事ですが、
参考にしている画面がTTreeViewを使っていて、
ImageListにアイコンを登録して、
それを呼び出すような仕組みになっているので、
質問タイトルにはTTreeViewと書きました。

どんな方法でも結構です。お知恵がありましたらお貸し下さい。

※JPGからBMPに変換してImageListに登録する。も考えましたが、
  JPGのファイル数が多いらしく、BMPに変換した時の容量が気になるので、
  出来れば変換しない方向で考えています。


みずき  2006-03-18 05:24:34  No: 20523

上記の件ですが、いろいろ試してみましたが、
JPGは厳しそうなので、
BMPに変換して、読み込もうと思いました。

が、ここでもまた問題が。
画像が大きすぎる為、分割しないとImageListに登録できない。
という事態がおきました。
これは、アイコンサイズでしかImageListに登録出来ない。
という事なのでしょうか?

また、ツリービューにリッチエディットを持たす事は出来ませんか?
(リッチエディットならBMPを簡単に貼り付けられるので...)

こちらでも引き続き調査していきます。
何か、ヒントになるような知識をお持ちでしたらご教授願います。


えーと  2006-03-18 06:07:43  No: 20524

よくわからないけど、できないと思いますよ。


は?  2006-03-19 20:35:33  No: 20525

> これは、アイコンサイズでしかImageListに登録出来ない。
> という事なのでしょうか?

TImageList.HeightとTImageList.Width
固定サイズには違いがないが。。。

> また、ツリービューにリッチエディットを持たす事は出来ませんか?
「持たす」の意がよくわからんが、視覚的にツリービューの上にリッチエディットを
表示させることは可能です。
例えば、TTreeView.OnEditing あたりで、対象ノード位置にRichEditを表示させればいいんですから。

ただし、当初の質問から判断するに、「画像を常に表示しておきたい」ということでは、
難しいでしょう。
TTreeViewを使いこなしたことはないので断言できませんが、各ノードの高さを、
個別に変更できないかもしれません。
TreeView関連のAPIを駆使したりすることで可能かもしれませんが。

あとは、ノードの高さを個別に変更できるようなコンポーネントを探すしかないでしょう。
試したことはありませんが、VirtualListView, http://www.lischke-online.de/ では、
ノードの高さを個別に変更できそうな感じです。
ソース付きでフリーっぽいのですが、ライセンス的には、MPLやらLGPLやらという記載があります。
(英語なので読みません(^^ゞ)


deldel  2006-03-20 19:41:29  No: 20526

なにやらかなり高度なソフトを目指しておられるようですが、
こういうことをやっている最中に技術力はどんどん上がっていきますので、
是非、頑張ってください。
ただ、ユーザーの要望をなんでもかんでも受け入れていくと、
いつか破綻しかねませんので、受け入れながらも、こちらの
技術力に相応した案を提案し、折衝していくのもプログラマの力と
思います(SEに近いですが・・・)。
でないと、何時まで経ってもソフトが出来上がらず、「あいつはダメ」
という評価が固定し兼ねません・・・。

例えば、ツリービューで画像を扱うのが困難であれば、グリッドを用いて、
見かけ上は同じように操作できるようにすることも出来ると思います。


は?  2006-03-20 20:29:02  No: 20527

> 例えば、ツリービューで画像を扱うのが困難であれば、グリッドを用いて、
> 見かけ上は同じように操作できるようにすることも出来ると思います。
確かにグリッドという案もありますが、ツリービューのように折りたためないんですよね。
以前、スレ主さんと同じような状況で、「普通のツリービューにしかなりません!」と、諦めさせませました(笑)


deldel  2006-03-20 20:57:43  No: 20528

そっかー・・・折りたたむ機能がありましたね・・・

ツリービューは文字だけ扱い、各項目と画像をIDなどを用いて
関連付けしておき、項目を選択した際に、そばにあるTImageに
画像を表示するとか、

画像を常に表示しておきたいのであれば、あるタイミングで全画像を
アイコン化しておき、ImageListに登録しツリービューに表示させて、
大きい画像はやはり上記のように選択した際だけ表示するとか、

どうでしょうか?


ママん  2006-03-21 19:15:14  No: 20529

一ノードずつの高さが変えられないTTreeViewからの派生は難しいでしょう。
以前私は似たようなのを作りましたがそとの時は
TCustomControlから作りました。


みずき  2006-03-23 03:25:08  No: 20530

いろいろ教えてくださってありがとうございます。

今回の件では、TTreeViewではやはり難しいのですね...
そのようにSEには伝えて、今後の対応を考える事にします。

それにしても皆さんの技術力の高さには本当に感服します...
これからもお世話になる事が多々あるとおもいますが、
よろしくお願いいたします。


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

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






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