Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.013 c
7-47825
Hel
2002-04-22 15:23
2002.07.15
Как скрыть окно, появляющеееся после печати?


3-47070
maxon
2002-06-20 16:41
2002.07.15
подсчёт значений


3-47154
oleg_d
2002-06-17 17:15
2002.07.15
Многострочный insert


1-47597
sector
2002-06-28 19:29
2002.07.15
Обработка ошибок(исключительных ситуаций)


3-47072
sveta2001
2002-06-17 09:31
2002.07.15
Delphi Построение запроса к результатам двух других запросовю





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский