這是我做過的使滾動時使樣式化網格的行爲與非樣式網格類似。
unit xStyleFixes;
interface
uses forms, Vcl.Buttons, Vcl.StdCtrls, Windows, Messages, SysUtils, Classes, Graphics, Controls, themes, Wwdbgrid, typinfo, DBGrids;
type
TFixScrollingStyleHook = class (TScrollingStyleHook)
var ScrollBarthumbBtnWasPressed : Boolean;
procedure WMVScroll(var Msg: TMessage); message WM_VSCROLL;
end;
implementation
procedure TFixScrollingStyleHook.WMVScroll(var Msg: TMessage);
var sTest : String;
begin
if VertSliderState = tsThumbBtnVertPressed then begin
ScrollBarthumbBtnWasPressed := true;
Handled := True;
end else begin
if ScrollBarthumbBtnWasPressed then begin
if Self.VertTrackRect.TopLeft = self.VertSliderRect.TopLeft then
TWMVScroll(Msg).ScrollCode := SB_TOP;
if Self.VertTrackRect.BottomRight = self.VertSliderRect.BottomRight then
TWMVScroll(Msg).ScrollCode := SB_BOTTOM;
ScrollBarthumbBtnWasPressed := False;
end;
CallDefaultProc(TMessage(Msg));
PaintScroll;
end;
end;
initialization
TCustomStyleEngine.RegisterStyleHook(TWWDbGrid, TFixScrollingStyleHook);
TCustomStyleEngine.RegisterStyleHook(TDbGrid, TFixScrollingStyleHook);
end.
這是我第一次與風格鉤打,所以如果你能看到一個更好的方式來做到這一點,請讓我知道