☆DBGridのスクロールバーを非表示にする。
カスタムコンポーネントでの処理です。
縦スクロールバーは、簡単に非表示にできましたが、横スクロールバーは、なかなか思うよう
にできなかったです。
TDBGridからの派生コンポーネントで、UpdateScrollBarをoverrideしておきます。
縦スクロールバーを非表示にする処理です。(inheritedはしない)
横スクロールバーを消す処理です。
(SetScrollInfoをSB_HORZとしても非表示にはできませんでした。)
上記の両方を設定すると、無事、両方のスクロールバーが非表示になりました。
(ScrollBars := ssNoneにしてもなぜか縦スクロールが表示されました。)
以上のように、なんかScrollBarsやSetScrollInfo APIだけで簡単に設定できそうなのに、なかなか手強かったです。まだ、実際に使っていない処理なので、不具合があるかも知れないです。
[追記]
Delphi Q & A 掲示板のMr.XRAYさんの方法が、簡単でいいですね。
(property ScrollBars;を追記するだけ)
Delphi Q & A 掲示板
■ DBGridの横スクロールバーの非表示について
TDBGridからの派生コンポーネントで、UpdateScrollBarをoverrideしておきます。
THRCustomDBGrid = class(TDBGrid) protected procedure UpdateScrollBar; override;
縦スクロールバーを非表示にする処理です。(inheritedはしない)
procedure THRCustomDBGrid.UpdateScrollBar; var SI: TScrollInfo; begin SI.cbSize := sizeof(SI); SI.fMask := SIF_RANGE; SI.nMin := 0; SI.nMax := 0; SetScrollInfo(Handle, SB_VERT, SI, False); end;
横スクロールバーを消す処理です。
(SetScrollInfoをSB_HORZとしても非表示にはできませんでした。)
constructor THRCustomDBGrid.Create(AOwner: TComponent); begin inherited Create(AOwner); ScrollBars := ssVertical; // この処理 (略) end;
上記の両方を設定すると、無事、両方のスクロールバーが非表示になりました。
(ScrollBars := ssNoneにしてもなぜか縦スクロールが表示されました。)
以上のように、なんかScrollBarsやSetScrollInfo APIだけで簡単に設定できそうなのに、なかなか手強かったです。まだ、実際に使っていない処理なので、不具合があるかも知れないです。
[追記]
Delphi Q & A 掲示板のMr.XRAYさんの方法が、簡単でいいですね。
(property ScrollBars;を追記するだけ)
Delphi Q & A 掲示板
■ DBGridの横スクロールバーの非表示について
| 固定リンク