![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
tvolf |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
Привет всем.
Такая проблема. Есть форма, на ней - компонент TDrawGrid. В этом DrawGrid'е в процессе работы программы отображается произвольное кол-во строк. У DrawGrid'а свойство ScrollBars установлено в ssVertical. Возможно ли в run-time как-то узнать, имеется ли в данный конкретный момент у DrawGrid'а вертикальный скроллбар или нет ? Свойство DrawGrid.ClientWidth постоянно возвращает величину, скорректированную на значение ширины скроллбара, независимо от того, есть он или нет. Заранее благодарю. ps. Delphi версии 7 |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Помнится мне, что делали вот такой WinAPI-шный трюк:
function has_vscrollbar(h: HWND): boolean; , дело все в том, что если у окна нет скроллбара, то то GetScrollInfo либо возвращает False (что, кстати, логично - ведь его нет), либо все-таки True (обычно при первом вызове), но максимальное значение установлено в 100. Если же СкроллБар есть, то nMax установлен в 127... Вызывать - с DrawGrid1.Handle ... Попробуй. |
tvolf |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо, работает. Собственно, мне надо только получить фактическую ширину клиентской области
DrawGrid'а c учетом присутствия в тот или иной момент вертикального скроллбара. Пока что сделал так: сначала определяю, имеется ли вертикальный скроллбар или нет, а затем, если его нет, увеличиваю DrawGrid.ClietnWidth на ширину скроллбара, полученного WinAPI-шной функцией GetSystemMetrics(SM_CXVSCROLL). |
![]() ![]() |
![]() |
Текстовая версия | 10.07.2025 0:14 |