よくダウンロード支援支援ソフトによくある、ファイル一覧表の中にプログレスバーが可変個でDL状況を報告してあったりしてます。
Delphiであのようなことができるのでしょうか?
プログレスバーを動的に生成(コードでCreateする)すればできるでしょうね。
いちあわせとか、いろいろ面倒そうですけど。
> Delphiであのようなことができるのでしょうか?
よそのソフトがやってるんだから、できるんです。
同じパソコン上の事象なんですから。
と、わたしは思ってます(^^ゞ
考えつけるんだから、できないことはないと思います。
まあ、Delphiでできない(でもC言語ならできる)ことがないとは言いませんけど…。
TListViewのOnAdvancedCustomDrawItem,OnAdvancedCustomDrawSubItemイベントで、それらしく描画すればできます。
他のソフトでできている処理のほとんどは、Delphiでプログラミングできます。
場合によってはアセンブラで記述しないと処理が遅いものもありますが。
レスありがとうございます。
TListViewをいじって
>>TListViewのOnAdvancedCustomDrawItem,OnAdvancedCustomDrawSubItemイベント
内でCanvasを利用して描画するかと思ったのですがうまくいきませんでした^^;
やってみたいので、もうすこし奥のやり方を教えてください。
そういえば、それ(ダウンロード支援ソフト)ってIriaのことでは?
あれ、Delphi製ですよ、たしか。
それはいいとして、本題に入ります。
わたしはあいにく、オーナードローって、TListBoxとTMenuでしかやったことがないんですけど、
基本は同じと思うので、そう思って説明します。
基本は、イベントにて渡されたRectの範囲内に、
同じく渡された項目への参照を、
コンポーネントのCanvasに描画します。
たとえば、Canvas.FillRect(Rect)という風に。
この場合は、普通にそうやってオーナードローしていき、
背景にプログレスバーみたいな表示をさせたいセルでは、
背景を塗りつぶした後、セルの内容の文章を書く前に、
プログレスバーを書きます。
TListViewにはざっと見ただけでかなりのオーナードロー用イベントがあるようですけど、
OwnerDrawプロパティをTrueにして、
OnDrawItemを使うのが一番簡単なのではないでしょうか?
よくわからないので、このあたりはヘルプとにらめっこしてください^^;
ところで、TMenuのオーナードローですけど、
うちの"おんぷむらのうら>おんぷ村倉庫>Delphiコンポーネント"に、
TDrawMainMenu,TDrawPopupMenuというものがあります。
参考になれば、見てみてください。
あとは、TValueListBoxというコンポーネントは、
TListBoxのオーナードローサンプルにもなるかもと思いますけど。
ツイート | ![]() |