Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.15;
Скачать: CL | DM;

Вниз

DBGrid and ScrollBar   Найти похожие ветки 

 
pinV ©   (2002-07-03 17:08) [0]

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


 
Skier ©   (2002-07-03 17:10) [1]

никак


 
pinV ©   (2002-07-03 17:21) [2]

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


 
Nebuchadnezzar ©   (2002-07-03 17:24) [3]

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


 
Skier ©   (2002-07-03 17:24) [4]

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


 
pinV ©   (2002-07-03 17:32) [5]

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


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

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


 
Skier ©   (2002-07-03 17:41) [7]

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


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

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


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

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


 
pinV ©   (2002-07-03 17:51) [10]

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


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

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

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

С уважением,


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

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

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


 
Fiend ©   (2002-07-03 17:57) [13]

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


 
pinV ©   (2002-07-03 17:59) [14]

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


 
pinV ©   (2002-07-03 18:05) [15]

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



Страницы: 1 вся ветка

Текущий архив: 2002.07.15;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
1-47579
alxx
2002-06-28 10:16
2002.07.15
Составляющие шрифта


14-47765
Bocman
2002-06-14 11:48
2002.07.15
Народ, подскажите...


3-47117
Kudatsky
2002-06-17 14:04
2002.07.15
TQuery+TUpdateSQL


3-47128
GAlexis
2002-06-18 16:03
2002.07.15
---|Ветка была без названия|---


1-47459
MPro
2002-07-03 15:08
2002.07.15
Макрос Excel.