IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Определение наличия вертикального скроллбара у DrawGrid
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Привет всем.

Такая проблема. Есть форма, на ней - компонент TDrawGrid. В этом DrawGrid'е в процессе работы программы отображается произвольное кол-во строк. У DrawGrid'а свойство ScrollBars установлено в ssVertical.
Возможно ли в run-time как-то узнать, имеется ли в данный конкретный момент у DrawGrid'а вертикальный скроллбар или нет ? Свойство DrawGrid.ClientWidth постоянно возвращает величину, скорректированную
на значение ширины скроллбара, независимо от того, есть он или нет.

Заранее благодарю.

ps. Delphi версии 7

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Помнится мне, что делали вот такой WinAPI-шный трюк:

function has_vscrollbar(h: HWND): boolean;
var
sInfo: SCROLLINFO;
b: LongBool;
begin
sInfo.cbSize := SizeOf(sInfo);
sInfo.fMask := SIF_ALL;
b := GetScrollInfo(h, SB_VERT, sInfo);
result := b and (sInfo.nMax <> 100);
end;

, дело все в том, что если у окна нет скроллбара, то то GetScrollInfo либо возвращает False (что, кстати, логично - ведь его нет), либо все-таки True (обычно при первом вызове), но максимальное значение установлено в 100. Если же СкроллБар есть, то nMax установлен в 127...

Вызывать - с DrawGrid1.Handle ... Попробуй.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Спасибо, работает. Собственно, мне надо только получить фактическую ширину клиентской области
DrawGrid'а c учетом присутствия в тот или иной момент вертикального скроллбара. Пока что сделал
так: сначала определяю, имеется ли вертикальный скроллбар или нет, а затем, если его нет, увеличиваю
DrawGrid.ClietnWidth на ширину скроллбара, полученного WinAPI-шной функцией
GetSystemMetrics(SM_CXVSCROLL).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 31.10.2020 16:13
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name