Это сложно. Нужно будет подменять WndProc, самому отрисовывать итемы и т.д. Вот, например, скроллбар появится, но ничего не делает:
| Код | var OldWndProc : pointer;
function LBWndProc (hwnd1 : HWND; uMsg : cardinal; wP : WPARAM; lP : LPARAM) : LRESULT; stdcall; begin if uMsg = WM_HSCROLL then begin // < скроллирование > Result := 0; end else Result := CallWindowProc(OldWndProc, hwnd1, uMsg, wP, lP); end;
procedure TForm1.Button2Click(Sender: TObject); begin with ListBox1 do begin SetScrollRange (Handle, SB_HORZ, 0, ClientWidth, False); EnableScrollBar (Handle, SB_BOTH, ESB_ENABLE_BOTH); ShowScrollBar (Handle, SB_BOTH, true); OldWndProc := pointer(SetWindowLong(Handle, GWL_WNDPROC, integer(@LBWndProc))); end; end; | |