![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]никак