The overlay scrollbar is a design choice — Firefox does the same (scrollbar floats over content), while Chrome shifts the content area. It keeps the layout width consistent regardless of whether content overflows.
That said, I've just added three scrollbar visibility modes via `Scrollbar.Visibility`:
- `svShow` — always visible when content overflows
- `svHide` — never shown (wheel/keyboard scrolling still works)
- `svAuto` — appears on scroll or hover near the right edge, fades out after 500ms (this is now the default)
If you need a completely different scrollbar (e.g. a native LCL one like TATScrollbar), set `Scrollbar.Visibility := svHide` to suppress the built-in one, then use the `ScrollY`, `ContentHeight`, and `OnScrollChanged` properties to wire up your own. For example:
PixieHtmlView.Scrollbar.Visibility := svHide;
// In your external scrollbar's OnChange:
PixieHtmlView.ScrollY := MyScrollbar.Position;
// In PixieHtmlView.OnScrollChanged:
MyScrollbar.Position := Round(PixieHtmlView.ScrollY);
MyScrollbar.Max := Round(PixieHtmlView.ContentHeight);