- Код: Выделить всё
procedure TForm1.StringGrid1MouseWheelDown(Sender: TObject;
Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
StringGrid1.Perform(WM_VSCROLL, SB_PAGEDOWN, 0);
Handled := True;
end;
procedure TForm1.StringGrid1MouseWheelUp(Sender: TObject;
Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
StringGrid1.Perform(WM_VSCROLL, SB_PAGEUP, 0);
Handled := True;
end;
Вышеприведённый код, постранично скролит StringGrid1.
Если скролить колёсиком мышки := всё чудесно работает.
ПРОБЛЕМА:
если потянуть за скролеер (а не крутить колёсиком мышки), то постраничное перелистывание сбивается.
Может сбиться на строчку, а может на пол строчки.
Как постранично скролить, перемещая grid за скроллер?
Добавлено спустя 88 минут 88 секунд:
- Код: Выделить всё
TScrollCode = (
// !!! Beware. The position of these enums must correspond to the SB_xxx
// values in LCLType (Delphi compatibility, not our decision)
// MWE: Don't know it this still is a requirement
// afaik have I remeved all casts from the LCL
scLineUp, // = SB_LINEUP
scLineDown, // = SB_LINEDOWN
scPageUp, // = SB_PAGEUP
scPageDown, // = SB_PAGEDOWN
scPosition, // = SB_THUMBPOSITION
scTrack, // = SB_THUMBTRACK
scTop, // = SB_TOP
scBottom, // = SB_BOTTOM
scEndScroll // = SB_ENDSCROLL
);
Выше код из исходников лазаруса ( StdCtrls ). Возможность постраничного перелистывания туда заложена.
Но не могу понять: где мне задать ему TScrollCode := scPageUp and scPageDown, для пролистывания за скроллер ?
Заранее всем спасибо!