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

Вниз

прокручивание таблицы StringGrid колесиком   Найти похожие ветки 

 
Dmitry_177   (2007-05-14 20:10) [0]

Как можно сделать так чтобы при крокрутке колесика мышки прокручивалась сама таблица StringGrid-а, т.е. сам Scroll прокручивался, а не строка выделялась следующая или предшедствующая выделенной? Это когда выделяется полностью вся строка, т.е. goRowSelect = true;


 
Loginov Dmitry ©   (2007-05-14 20:46) [1]

> Это когда выделяется полностью вся строка, т.е. goRowSelect
> = true;


goRowSelect тут непричем. Видимо когда делали Delphi7, ее разработчики не подозревали, что бывают мыши с колесиками. Ну а решить проблему не сложно. Один из вариантов - в обработчике Application.OnMessage обработать сообщения о скролле мышки (насколько помню - WM_MOUSEWHEEL). В последних версиях Дельфи эту ошибку исправили.


 
Dmitry_177   (2007-05-14 21:36) [2]


procedure TForm1.StringGrid1MouseWheelDown(Sender: TObject; Shift: TShiftState;
 MousePos: TPoint; var Handled: Boolean);
begin
 StringGrid1.Perform(WM_VSCROLL, SB_PAGEDOWN, 0);
end;


Есть такой cпособ, но только есть один небольшой глюк.. если крутить например вниз, то та строка которая была выделена(например самая нижняя) сразу оказывается в самом верху и то что ниже ее потом нормально прокручивается.. так же и если прокручивать вверх.. что-то как-то мне это не очень нравится..


 
{RASkov} ©   (2007-05-14 22:32) [3]

Попробуй так:
на OnMouseWheelDown:
StringGrid.Perform(WM_VSCROLL, SB_LINEDOWN, 0);
на OnMouseWheelUp:
StringGrid.Perform(WM_VSCROLL, SB_LINEUP, 0);


 
Loginov Dmitry ©   (2007-05-14 22:50) [4]

> Попробуй так:
> на OnMouseWheelDown:
> StringGrid.Perform(WM_VSCROLL, SB_LINEDOWN, 0);
> на OnMouseWheelUp:
> StringGrid.Perform(WM_VSCROLL, SB_LINEUP, 0);


Дак требуется ж прокрутка, а не нажатие :)


 
{RASkov} ©   (2007-05-14 23:01) [5]

> [4] Loginov Dmitry ©   (14.05.07 22:50)
> Дак требуется ж прокрутка, а не нажатие :)

> Как можно сделать так чтобы при крокрутке колесика мышки
> прокручивалась сама таблица StringGrid-а, т.е. сам Scroll
> прокручивался, а не строка выделялась следующая или предшедствующая
> выделенной

Я что-то не пойму....

> [2] Dmitry_177   (14.05.07 21:36)

На всяк еще вот вариант, помоему как раз то что надо:
procedure TForm1.StringGrid1MouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
StringGrid1.Perform(WM_VSCROLL, SB_LINEDOWN, 0);
Handled:=True; // Это же и на OnMouseWheelUp
end;


 
Dmitry_177   (2007-05-14 23:25) [6]

Работает =)))) Спасибо =)))
Только я не пойму зачем нужен

Handled:=True;

и без него вроде нормально работает...


 
{RASkov} ©   (2007-05-14 23:30) [7]

> Только я не пойму зачем нужен
>
> Handled:=True;

А ты попробуй с ним и без него.... разницу увидешь, точно. ;)
Handled is whether or the control handled the event. (Set handled to false to have the object’s parent handle the event.)
Т.е. если False то сообщение пойдет дальше и StringGrid переместит/сменит Row позицию.... вообщем объяснил криво пробуй и сам все поймешь.


 
Loginov Dmitry ©   (2007-05-14 23:41) [8]

Я че-то как всегда про DBGrid подумал. Сорри.


 
Dmitry_177   (2007-05-15 00:37) [9]

спасибо большое =) С Handled:=True; даже прикольней =)



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

Форум: "Основная";
Текущий архив: 2007.07.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.082 c
2-1182221457
DartVader
2007-06-19 06:50
2007.07.15
Выгрузка в Excel!!!Помогите плиз!


15-1181392158
Игорь Шевченко
2007-06-09 16:29
2007.07.15
Компания Codegear Borland проводит семинары


2-1182318159
Алексей_73
2007-06-20 09:42
2007.07.15
Группировка в таблице с текстовыми полями


2-1182514300
TStas
2007-06-22 16:11
2007.07.15
Как дождаться завершения процесса?


2-1182437480
Delon
2007-06-21 18:51
2007.07.15
Добрый вечер уважаемые мастера! Прошу помочь разобраться.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский