エクスプローラのようにファイル一覧を表示するプログラムを作っているのですが、
Listviewにアイテムを追加する際に、追加されたのがわかるように表示をしたいと考えていますが、
1)アイテムを1件追加するごとにDoevents,Refreshをするとちらつきが目立ちますし、(時間もかかる)
2)かといってアイテムがすべて追加された後、表示すると、件数がたくさんある場合に、表示までに、待ち時間が発生してしまいます。
何かいい方法はあるのでしょうか?
VB6.0
Win2000
追加されるアイテムはエクスプローラのファイルコピー中に出てくる
ようなダイアログに表示し、全て追加した時点でリストビューを表示
するといった方法はどうでしょうか。
Addメソッドで1行追加したら、
追加したItemをSelectedItemプロパティを使って
反転表示させてあげるのはどうでしょう?
気になるのは、「エクスプローラのように」って
ListViewでなくてTreeView?ってことです(^^;)
ボクの環境(CPU1.60GHz)でやってみたところ、特別な処理(Doevents,Refresh)
をしなくても、特に待ち時間というほどのものは発生しないです。
(…あくまでボクの感覚で…ですが。)
ListItem が1万件を越えるくらいの表示になると
.Visible = False
とかした方が僅かに速いですけど。それでも ListItem 追加に0.75秒
表示変更は0.15秒くらい…。Visible = False にして ListItem 追加に
0.65秒、表示変更は0.12秒くらい…。
(この場合の"表示変更"は全ての ListItem で Selected プロパティの反転です)
スペックの問題でしょうか?どういった環境で、どういったプログラム
(何項目表示?)で、現状では何秒くらいの時間が掛かってて、理想は
何秒くらいにしたいのでしょうか?プログラムのどの部分で時間を
使ってますか?…ListView だけの問題なのですか?
質問が大雑把なので答えられません。
>質問が大雑把なので答えられません。
申し訳ありません。
>どういった環境で
Win2000 Pentium4 1.9MHz メモリ512MB
VB6.0SP6です。
>どういったプログラム
エクスプローラのリストビュー(詳細表示)のように、
ファイル名、サイズ、種類、更新日付等を表示するようなプログラムです。
(いずれもAPIで取得しています。)
また、ファイルに関連するアイコンもAPIで取得して表示しています。
(画像(JPG,Bmp,GIFなど)については、その画像を縮小してアイコンとして表示)
>(何項目表示?)で、現状では何秒くらいの時間が掛かってて、理想は
>何秒くらいにしたいのでしょうか?プログラムのどの部分で時間を
>使ってますか?…ListView だけの問題なのですか?
特にスピードにこだわりは、ないのですが、
(早いのがいいのにこしたことは、ないのですが)
画像(JPG,Bmp,GIFなど)から、その画像を縮小してアイコンとして表示する処理に時間がかかるため、全て表示するのに、待ち時間がでるのだと思います。
よってListviewだけの問題では、ないと思います。
1件ずつアイテムが追加されているのを、何とかうまく表示できればと考えているのですが。うまく質問ができなくて申し訳ありません。
よってListviewだけの問題では、ないので、その他の処理を見直します。
ありがとうございました。