![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
При отрисовке скроллбаров они *иногда* пропадают [D5, D6, D7, WinXP]
AlexeyT © (2006-07-21 10:34:00)Hello All,
Устанавливаю позицию скроллбаров (гориз-го и верт-го) через SetScrollInfo. В зависимости от позиции в файле скроллбары меняют позицию и PageSize. При проходе по файлу от начала до конца видно, что на некоторых позициях файла скроллбары внезапно пропадают (горизонтальный у меня иногда прячется, если строки короткие, но вертикальный пропадать не должен вообще никогда!). Причем, вместе с рамкой окна (как будто окно стало иметь BorderStyle=bsNone). Потом так же внезапно появляются.
Явно глюк где-то в API, проверил код, верт. скроллбар у меня всегда виден. Кто-нибудь с этим сталкивался?
AlexeyT (2006-07-21 20:37:00) [1]
> BorderWidth:= 0;
> BevelKind:= bkNone;
> BorderStyle - можно bsSingle
Поставил в конструкторе - не помогло. Все равно пропадает.
Перетаскивание другого окна поверх - никак не влияет, от этого глюк ни пропадает, ни становится стабильнее...
Да, VCL по-моему не при чем, т.к. я скроллю стрелками. При этом VCL практически не работает (ничего не рисует), а вызывается моя перерисовка и установка скроллбаров.
han_malign (2006-07-21 16:40:00) [2]Вдогонку, чтобы получить *стабильный* результат - достаточно любое другое окно поверх протащить...
han_malign (2006-07-21 16:37:00) [3]BorderWidth:= 0;
BevelKind:= bkNone;
BorderStyle - можно bsSingle
глюк не только в API, но и в VCL.
VCL при перерисовке Border/Bevel - закрашивает скроллбары. API перерисовывает скроллбары только по их изменению... И это еще не все, даже если поправить прорисовку в VCL, чтобы он не закрашивал скроллбары, в API для них неправильно вычислиются Clipping регионы, в аккурат на ширину/высоту Border + Bevel - и там остается мусор.
Таким образом - только вариант описанный в самом начале, а если так уж Bevel-ы нужны - клади на панель...
AlexeyT (2006-07-21 10:40:00) [4]Да, забыл добавить, что скроллбары - это не компоненты TScrollbar, а выставленные стили окна WS_VSCROLL, WS_HSCROLL.