В ScrollBox не обрабатывается нажатие на стрелки скроллбаров.
Чтобы исправить это, надо добавить в NewScrollBox эти две строчки:
Result.FScrollLineDist[ 0 ] := 16;
Result.FScrollLineDist[ 1 ] := 16;
Я сделал вот так:
function NewScrollBox( AParent: PControl; EdgeStyle: TEdgeStyle;
Bars: TScrollerBars ): PControl;
const Edgestyles: array[ TEdgeStyle ] of DWORD = ( WS_DLGFRAME, SS_SUNKEN, 0, 0, 0);
var SBFlag: Integer;
begin
SBFlag := EdgeStyles[ EdgeStyle ];
if sbHorizontal in Bars then
SBFlag := SBFlag or WS_HSCROLL;
if sbVertical in Bars then
SBFlag := SBFlag or WS_VSCROLL;
Result := _NewControl( AParent, 'ScrollBox', WS_VISIBLE or WS_CHILD or
SBFlag, EdgeStyle = esLowered, nil );
Result.FScrollLineDist[ 0 ] := 16;
Result.FScrollLineDist[ 1 ] := 16;
Result.AttachProc( WndProcForm );
Result.AttachProc( WndProcScrollBox );
Result.AttachProc( WndProcDoEraseBkgnd );
Result.fIsControl := TRUE;
end;
Из NewScrollBoxEx их теперь можно убрать.