Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DBGrid and ScrollBar [D3, Win95/98, Win2k]


pinV ©   (2002-07-03 17:08:00) 

Уважаемый All, подскажите пожалуйста как поймать событие появления(исчезновения) ScrollBar в DBGrid.


pinV   (2002-07-03 18:05:00) [1]

всё спасибо, натолкнули на 2 продуктивные мысли, дальше сам :))


pinV   (2002-07-03 17:59:00) [2]

уф, это понятно, но момента не возникает
размер компоненты и размеры столбцов в моём примере (при удалени строчки) не меняються.


Кулюкин Олег   (2002-07-03 17:57:00) [3]

CalсSize - это функция которую надо написать Вам :)
Просто, когда я решал подобную задачу я ее назвал именно так.

А звать ее надо
1. После изменения размеров
2. после изменения в датасете


Fiend   (2002-07-03 17:57:00) [4]

То pinV
Никакого события не происходит когда они прячутся или появляются.
Просто когда в ГРИДе меняются кол=во строк, то он заново проставляет SetScrollInfo


Игорь Шевченко   (2002-07-03 17:55:00) [5]

А зачем определять событие исчезновения ?
Лучше в тот момент, когда надо посчитать, поинтересоваться, а есть ли scrollbar у окна?
var
Style : LongInt;

Style := GetWindowLong(YourGrid.Handle, GWL_STYLE);
if (Style AND WS_VSCROLL { WS_HSCROLL } ) <> 0 then
Делать то, что при наличествующем scrollbar
else
Делать то, что при отсутсвующем scrollbar

С уважением,


pinV   (2002-07-03 17:51:00) [6]

про CalсSize можно поподробнее, не много не понятно когда её звать.
да GetScrollInfo, GetSystemMetrics(SM_CXVSCROLL) конечно же использовались


Кулюкин Олег   (2002-07-03 17:47:00) [7]

Значит надо написать функцию CalcSize и звать ее когда сочтете нужным.
ИМХО, анимация без желания юзверя - это плохо (хотя сам так делал :)


pinV   (2002-07-03 17:44:00) [8]

:)))))) Не подходит
привожу пример, при удалении в гриде не остаёться ни одной строчки. До это скролл присутствовал, после этого пропал. Размер компоненты не менялся


Skier   (2002-07-03 17:41:00) [9]

>pinV
Кулюкин Олег прав.


Кулюкин Олег   (2002-07-03 17:38:00) [10]

Тогда надо не отлавливать момент появления скролбаров, а пересчитывать размеры колонок после изменения размеров конмонента.
Попробуйте функции GetScrollInfo, GetSystemMetrics(SM_CXVSCROLL) и GetSystemMetrics(SM_CYHSCROLL).


pinV   (2002-07-03 17:32:00) [11]

просто я делаю компонент, у которого при resize пропорционально изменяються размеры колонок, с целью заполнения свободного пространства. Соотв ScrollBar оказывает самое непосредственно влияние на расчёт размеров.
Возможно это делаеться как то не так и намного проще, возможно вообще не должно делаеться но ....


Nebuchadnezzar   (2002-07-03 17:24:00) [12]

Зная размер DBGrid и высоту каждой строки в принципе наверно несложно и подсчитать сколько надо строк что бы появился (исчезнул) ScrollBar...


Skier   (2002-07-03 17:24:00) [13]

>pinV
Есть метод TCustomDBGrid.UpdateScrollBar, но он
private :(
А вообще-то зачем тебе это всё ?
По-другому никак нельзя ??


pinV   (2002-07-03 17:21:00) [14]

я имею ввиду возможность ловли события в неком потомке DBGrid
совсем нельзя, никак?


Skier   (2002-07-03 17:10:00) [15]

никак


Наверх

Титульная страница Поиск, карта сайта Написать письмо