EnableScrollBar関数を使用して
TScrollBoxのHorzScrollBarを無効にしているのですが
Windows7で動作した所、無効になりませんでした。(XP、Vistaでは問題なし)
Windows7では使用できない等、何かご存知の方いらっしゃいますでしょうか?
開発環境
WindowsXP
Delphi6 Pro
戻り値やGetLastErrorの値はどうなっていましたか?
エラー情報から探るのが一番の近道だと思われます。
戻り値は正常でした。
正常でしたのでGetLastErrorは見ていません。
(環境が手元にないもので)
Delphi20101+Windows7では、無効になりますね。
EnableScrollBar(ScrollBox1.Handle, SB_HORZ, ESB_DISABLE_BOTH)
Delphi6だからでしょうか。
>Delphi20101+Windows7では、無効になりますね。
その環境では無効になりますか。
貴重な情報ありがとうございます。
やはりDelphi6だからでしょうか。
何か証拠というか調査方法はないでしょうか?
> Delphi20101+Windows7では、無効になりますね
1文字多かったです。Delphi2010+Windows7です。
確認ですが、
無効=ボタンが押せない状態
ですよね。
もし、スクロールバーが非表示ということであれば、ちょっと話が違ってくるので。
こちらの環境では、TScrollBoxを置いて、その中にいくつかコントロールを置きました。
# スクロールバーが出るように。
スクロールバーが出ている状態で、ボタン押下時に
EnableScrollBar(ScrollBox1.Handle, SB_HORZ, ESB_DISABLE_BOTH)
を実行しました。
ほかに特にコードは書いていません。
これでスクロールバーが押せない(触れない)状態になります。
ただし、無効なスクロールバーとして表示されています。
非表示ではありません。
> 無効=ボタンが押せない状態
> ですよね。
はい。
スクロールバーは表示した状態です。
無効なスクロールバーを表示させたいので。
コードは2行です。
-----
// スクロールバーを表示するためRangeを設定
ScrollBox1.HorzScrollBar.Range := ScrollBox1.ClientWidth * 2;
// 無効にする
EnableScrollBar( ScrollBox1.Handle, SB_HORZ, ESB_DISABLE_BOTH );
-----
XP、Vistaでは無効なスクロールバーが表示されますが
Windows7では有効なスクロールが表示されてしまいます。
TScrollingWinControlはFlatScrollBar対応になっていたと思うので
FlatSB_EnableScrollBarを使ったらどうなるでしょうか?
また、SetScrollInfo(またはFlatSB_SetScrollInfo)で
・fMaskにSIF_DISABLENOSCROLLを指定
・スクロールバーが出ない範囲にnMin, nMaxを設定
とした場合はどうでしょう?
ちなみに
> 戻り値は正常でした。
というのは、0以外の値が返ってきたということでいいんですよね?
ツイート | ![]() |