// These snippets get the width of the scrollbars, as defined BY THE USER// on the Display Properties screen Appearance tab. The code below is// for a string grid, but any component that has scrollbars should work as// well.//// by Robert E. Baker (robertbaker@bigfoot.com)//// For a vertical scrollbarif ScrollBarVisible(StringGrid1.Handle, WS_VSCROLL) then
ScrollBarWidth := GetSystemMetrics(SM_CXVSCROLL)
else
ScrollBarWidth := 0;
// For a vertical scrollbarif ScrollBarVisible(StringGrid1.Handle, WS_HSCROLL) then
ScrollBarWidth := GetSystemMetrics(SM_CXHSCROLL)
else
ScrollBarWidth := 0;
// The code for the ScrollBarVisible function is below:function ScrollBarVisible(Handle : HWnd; Style : Longint) : Boolean;
begin
Result := (GetWindowLong(Handle, GWL_STYLE) and Style) <> 0;
end;
Код, предоставленный ниже, написан на языке Pascal (Delphi) и используется для получения ширины полосы прокрутки. Функция ScrollBarVisible проверяет, присутствует ли конкретный стиль для указанного обрабатываемого окна, что определяет, должен ли быть виден или нет полоса прокрутки.
Вот шаг за шагом, как работает код:
Если вертикальная полоса прокрутки (WS_ VSCROLL) видима для указанного окна (StringGrid1.Handle), то код получает ширину вертикальной полосы прокрутки с помощью функции GetSystemMetrics с параметром SM_CXVSCROLL.
Если вертикальная полоса прокрутки не видима, код устанавливает ScrollBarWidth в 0.
То же самое происходит для горизонтальной полосы прокрутки (WS_ HSCROLL) и хранится ее ширина в ScrollBarWidth.
Если ни одна из полос прокрутки не присутствует, функция возвращает значение 0.
Функция GetWindowLong получает длинное значение окна, связанное с указанным обрабатываемым окном (Handle) и стилем (GWL_ STYLE). Результат проверяется на соответствие указанному стилю. Если он соответствует, то соответствующая полоса прокрутки видима, и функция возвращает True.
Вот пример использования этого кода в вашем приложении:
В этом коде-наборе мы проверяем, видима ли вертикальная полоса прокрутки для компонента StringGrid1. Если она видима, мы получаем ее ширину с помощью GetSystemMetrics. В противном случае мы устанавливаем ScrollBarWidth в 0.
Обратите внимание, что этот код будет работать только для приложений Windows, так как он использует функции и константы, специфические для Windows.
В статье описывается способ получения ширины скроллбара в Delphi, используя функцию GetSystemMetrics и проверку видимости скроллбара с помощью функции ScrollBarVisible.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.