[delphi-users:3002] DelphiXE3 カスタムスタイルでTListViewの水平スクロールバーを非表示にできない。

210 views
Skip to first unread message

shuta

unread,
Feb 6, 2013, 11:25:52 PM2/6/13
to delphi...@freeml.com
DelphiXE3 VCLにてカスタムスタイルを導入していると下記命令で水平スクロールバーを非表示にできません。
カスタムスタイルを使用していない場合は、非表示になります。

ShowScrollBar(ListView.Handle, SB_HORZ, false);

オリジナルのカスタムスタイルを作成する以外の方法で、
何か解決方法があれば教えてください。



MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
アイテムたくさん☆freemlのプロフィール画像をアバターに♪
http://ad.freeml.com/cgi-bin/sa.cgi?id=j27Kc
------------------------------------------------------[freeml byGMO]--

hosokawa

unread,
Feb 7, 2013, 12:47:16 AM2/7/13
to delphi...@freeml.com
shuta さん

こんにちは。
細川です。

ComControl 系のコンポーネントは VCL Style がいまいち完全ではありません(QC に
報告済みです。まだステータスは Open のままですが)。
カスタムスタイルを作成しても、それは同じです。
どうしても必要であれば、スタイルフック(TListViewStyleHook)を作り自前で描画す
る必要があります(ただし、ComControls の描画は非常に難しい)。

僕が TRichEdit で、ほぼ同様の問題が発生したときの対処法を下記のブログに纏めて
います。

■ TRichEdit と VCL スタイル
http://delphimaniacs.blogspot.jp/2012/11/trichedit-vcl.html

なお、このブログでは、TRichEdit のスクロールバーを消さない事で、対処しました。
shuta さんが望んでいるモノでは無いので、参考にはならないかも知れません。
Regards,
HOSOKAWA Jun
[S/G] SERIALGAMES Inc.
TEL: 03-5812-0980
FAX: 03-5812-0970
twitter: http://twitter.com/serialgames
twitter: http://twitter.com/flaver_sg
mailto: j...@serialgames.co.jp
fla:ver http://flaver.jp/
WebCapS http://www.serialgames.co.jp/fun.html#WebCapSeria


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
使い方はいろいろ♪一部のメンバーだけにMLメールを送ろう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=j28Jr
------------------------------------------------------[freeml byGMO]--

shuta

unread,
Feb 7, 2013, 2:11:45 AM2/7/13
to delphi...@freeml.com
細川さん
ご回答ありがとうございます。
HPを拝見させていただきました。

「ComControl 系のコンポーネントは VCL Style がいまいち完全ではありません」
なのですね・・・。
どおりで、スタイルを使用すると水平スクロールバーとlistViewの間に微妙な隙
間があるんですね。

ご指摘通り、TListViewStyleHookを調べてみますが・・・。
MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
メンバーで使える掲示板を活用しよう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=j29Mr
------------------------------------------------------[freeml byGMO]--

hosokawa

unread,
Feb 7, 2013, 2:39:18 AM2/7/13
to delphi...@freeml.com
shuta さん

細川です。


TListViewStyleHook を作るのは難儀を極めると思います。
実は、TRichEditStyleHook を作っていたのですが、VCL 側のコードの変更が必要で非
常に大変になるため、放棄した経験があります。

StyleHook については


■DocWiki - TStyleHook
http://docwiki.embarcadero.com/Libraries/XE3/ja/Vcl.Themes.TStyleHook

■デベロッパーキャンプ資料「見た目で楽しい Delphi プログラミング」
http://edn.embarcadero.com/jp/article/images/42501/B2.pdf


■HotKeyStyleHook
http://delphimaniacs.blogspot.jp/2012/09/hotkeystylehook.html

■Style を外部ファイルから読み込む
http://delphimaniacs.blogspot.jp/2012/10/style.html

■TFindDialog とスタイル
http://delphimaniacs.blogspot.jp/2012/11/tfinddialog.html

■TCommnDialog と Style
http://delphimaniacs.blogspot.jp/2012/11/tcommndialog-style.html


などを参照していただくと、概要が掴めると思います。
拙作ブログでは、GitHub でコードも公開しているので、参考にしてみてください。
メールだけでみんなを招待できる便利機能♪
http://ad.freeml.com/cgi-bin/sa.cgi?id=j2AjX
------------------------------------------------------[freeml byGMO]--

shuta

unread,
Feb 7, 2013, 4:49:26 AM2/7/13
to delphi...@freeml.com
細川さん。
shutaです。

結論から言うとTScrollingStyleHookをフックできるのですが、スクロールバー
のhandleなどが
全てprivateなのでVCLソースを書き換えなければ無理そうだと判断しました。
(せめてFHorzScrollWndをprotectedにしてほしい・・・。)

但しStyleHookの方法については大変勉強になりました。
普段はD2007を使っているので初めての概念で大変助かりました。



----- Original Message -----
> shuta さん
>
MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
練習や試合の予定調整は「とっとと決め太郎」におまかせ!
http://ad.freeml.com/cgi-bin/sa.cgi?id=j2Ch7
------------------------------------------------------[freeml byGMO]--

Reply all
Reply to author
Forward
0 new messages