掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TListViewに棒グラフの線をリアルタイムに表示するには? (ID:5504)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
毎度お世話になっております。かなものと申します。 長めの文章で申し訳無いです。 環境 WindowsXP Pro SP1 / Delphi 6 Personal またListViewの件で質問なのですが、内容的にはズバリ・・・ http://support.jgaa.com/index.php?cmd=ShowProduct&ID=3 このWarFTPDというソフトのメイン画面にある「ListViewへのグラフ表示」になります。 画面のサンプルはこちらです http://kanamono2.hp.infoseek.co.jp/warftpd.gif WarFTPDはFTPサーバーソフトで、サンプル画面は監視画面です。 ダウンロードもしくはアップロードが開始されると、 ログインしているユーザー表の「info」の部分に、 ファイル名とUP/DLの状況がパーセントグラフとして表示されます。 該当するカラムの幅を100%(ここではinfo部分)とし、 たとえば数値が最大200で100という数字が入っていたら50%つまり半分を塗り潰す…というものです。 私がやっている事は、TCP/IPで数値情報を受け取って、 その数値をListViewに表示するというものです。(ViewStyleはvsReportです) この数値の情報を、上記WarFTPのように簡単な棒グラフみたいな表示したいと考えております。 まず純粋に描画方法を知る事からはじめました。 ですが、上手く動作させる方法がわかりませんでした。 今までやった流れとしては… ---- まず、下記の例のような文をAdvancedCustomDrawSubItemに書いてみました。 (XY座標の指定など・・・) ・ ・ Canvas.Pen.Color := $000000FF; Canvas.Rectangle(rect); 上記内容で赤い線が描画される事は確認出来ました。 まず、文字の上に描画されるようで、数値が見えなくなりました。 これは、数字にかぶらないように縦2ピクセルの横線のように表示させて誤魔化してみました。 とりあえず、文字は見えるようになりました。 ですが、カラムの幅を変える(描画の位置をずらす)と、一度表示した部分がそのまま残ってしまい、 LISTの再描画(ソートなど)を行わない限り、線が正しく表示されない状況になりました。 http://kanamono2.hp.infoseek.co.jp/listview.gif こんな感じになってしまいます。 しかも、横幅をListView1.Column[0].Width + … 等で図っていた為なのでしょうか、 ListViewをWindow幅を超える長さに設定して、ListView全体の位置を左右にずらした状態で再描画すると 描画される位置がずれます。(位置が固定のまま) そこでCanvas.Brushに目を付けました。これならカラムの表示位置を変えても 正しく表示出来るかもしれないと思ったからです。 しかし、項目自体を塗りつぶす事は出来たのですが、 これでは該当する項目が「ただ塗り潰されているだけ」になってしまいました。 何かヒントでも見つかれば…と思い、 WarFTPDを下記アドレスのTOOLで、状況を見てみました。 http://www.vector.co.jp/soft/win95/prog/se214785.html すると、ListViewの所に「SysListView32」という表示になっていました。 (私が作ったLISTプログラムは「TListView」となっていました) しかし、この「SysListView32」を調べてみると、他のアプリからのハンドルの取り方とかばかりで、 Delphiとの組み合わせの情報を、見つける事が出来ませんでした。 HELPでも、手持ちの参考書でも、全く検索されず、行き詰ってしまいました。 棒グラフが書きこめた時点で、カラムを動かしても表示がズレない方法が分からないのです。 あとは、長さの%計算をするだけでOKなはずなのですが・・・ --- と、ここまでです。 何か打開策などがあれば、是非お知恵をお借りしたいです。 宜しくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.