Delphi6Personal→Turbo Delphi
manifestファイル使用
OS:WinXP
Delphi6からTurboDelphiに移行しXPスタイルにしてみました。
XPスタイル状態の仮想リストビューの上でマウスを動かすとちらつくのですが、ちらつかせない方法はないでしょうか。
自己レスです
仮想リストビューでちらついていると思ったのですが、
AdvancedCustomDrawItemで行毎に色を変えていたのが原因でした。
AdvancedCustomDrawItemをしつつ、ちらつかせない方法はあるでしょうか。
またListViewでサムネイル表示も行っているのですが、
CustomDrawItemを行うとちらつくようです。
仮想リストビューって標準コンポーネントじゃ無いですよね?
どこから入手した何か?
どんなコードを書いて起こる現象か?
それが示されなきゃ答える方は答えようが無いです。
申し訳ありません
仮想リストビューはこちらを参考に作成しました。
http://homepage3.nifty.com/m-and-i/tips/textlistview.htm
AdvancedCustomDrawItemで行毎に色を変えるという部分は
http://lupin.client.jp/delphi/index.html#9
manifestファイルを使用しない場合は正常です。
サムネイル表示部分については
http://www1.cncm.ne.jp/~ogawate/delphi/samples/thumbnail/menu.html
のHPを参考にさせていただいたものです。
こちらもmanifestファイルを使用しない場合は正常です。
本題ではないですけど、TListViewでもOwenerDataプロパティをtrueにすれば
仮想リストビューになりますよ。
またDoubleBufferedをtrueにしてもちらつきは変わらないでしょうか?
確かめて見ました。
使い方これで合ってるのかな。
FormCreate時に
Form1.DoubleBuffered:=True;
や
TListView1.DoubleBufferd:=True;
を試して見ましたが変わりませんでした。
また
private
procedure WMEraseBkgnd(var Msg:TMessage);message WM_ERASEBKGND;
procedure TForm1.WMEraseBkgnd(var Msg:TMessage);
begin
msg.Result:=0;
end;
を書いてみましたがこちらも変わらず。
TExtListViewは既に公開を停止しているようですね。
ちょっと私はお役に立てそうにないので、これで失礼させていただきます。
TExtListViewは最終的には使用せず、
TListViewのOwnerDataをTrueに仮想リストビューにしていました。
それからTListViewでOnCustomDrawItemイベントとOnDataイベントを使用するとちらつきが発生するようです。
(またAdvancedCustomDrawItemとOnDataを使用した場合もちらつく)
どちらかのイベントを1つしか使用しない場合はちらつきは発生しませんでした。
とりあえずはManifestファイルがある場合はどちらかのイベントしか発生しないようにしようと思います。
BDS2006でXP SP2のXPstyleで試してみました。(manifestはTXPManifest)
OnDataを使用して仮想リストビューにし、OnAdvancedCustomDrawItemで
奇数行の色を変えて試してみましたが、マウスを動かしても特にちらつきませんでした。
スクロール時に多少ちらつきますが、
ListView1.DoubleBufferd:=True;をするとちらつきが抑えられました。
かみづ様
試していただきありがとうございます。
レスを見てもう一度確認してみたところ、
OnAdvancedCustomDrawItem時 色を変えつつ
ListView1.Item.Caption および ListView1.Item.SubItems
を中央揃えになるよう書き直しを行っていました。
//中央揃え
DrawText(
Sender.Canvas.Handle,
PCHAR(Item.SubItems[i]),
-1,
Rect,
DT_SINGLELINE or DT_END_ELLIPSIS or DT_VCENTER or DT_NOPREFIX or DT_CENTER);
見た目だけなので、この処理をやめようと思います。
ツイート | ![]() |