Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как получить ширину ScrollBar

Delphi , Компоненты и Классы , Компоненты

Как получить ширину ScrollBar


// 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 scrollbar

   if ScrollBarVisible(StringGrid1.Handle, WS_VSCROLL) then
      ScrollBarWidth := GetSystemMetrics(SM_CXVSCROLL)
   else
      ScrollBarWidth := 0;

// For a vertical scrollbar

   if 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 проверяет, присутствует ли конкретный стиль для указанного обрабатываемого окна, что определяет, должен ли быть виден или нет полоса прокрутки.

Вот шаг за шагом, как работает код:

  1. Если вертикальная полоса прокрутки (WS_ VSCROLL) видима для указанного окна (StringGrid1.Handle), то код получает ширину вертикальной полосы прокрутки с помощью функции GetSystemMetrics с параметром SM_CXVSCROLL.
  2. Если вертикальная полоса прокрутки не видима, код устанавливает ScrollBarWidth в 0.
  3. То же самое происходит для горизонтальной полосы прокрутки (WS_ HSCROLL) и хранится ее ширина в ScrollBarWidth.

Если ни одна из полос прокрутки не присутствует, функция возвращает значение 0.

Функция GetWindowLong получает длинное значение окна, связанное с указанным обрабатываемым окном (Handle) и стилем (GWL_ STYLE). Результат проверяется на соответствие указанному стилю. Если он соответствует, то соответствующая полоса прокрутки видима, и функция возвращает True.

Вот пример использования этого кода в вашем приложении:

var
  ScrollBarWidth: Integer;

if ScrollBarVisible(StringGrid1.Handle, WS_ VSCROLL) then
  ScrollBarWidth := GetSystemMetrics(SM_CXVSCROLL)
else
  ScrollBarWidth := 0;

В этом коде-наборе мы проверяем, видима ли вертикальная полоса прокрутки для компонента StringGrid1. Если она видима, мы получаем ее ширину с помощью GetSystemMetrics. В противном случае мы устанавливаем ScrollBarWidth в 0.

Обратите внимание, что этот код будет работать только для приложений Windows, так как он использует функции и константы, специфические для Windows.

В статье описывается способ получения ширины скроллбара в Delphi, используя функцию GetSystemMetrics и проверку видимости скроллбара с помощью функции ScrollBarVisible.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Компоненты ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-07-02 05:09:27/0.0084888935089111/1