Главная страница
    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.47 MB
Время: 0.041 c
15-1181924295
reonid
2007-06-15 20:18
2007.07.15
D1


10-1134467859
Gusev
2005-12-13 12:57
2007.07.15
Как сохранить документ Excel в определенном формате


2-1182004561
Ral'f
2007-06-16 18:36
2007.07.15
Как с помощью TDBComboBox-ов фильтровать содержимое DBGrid?


2-1182599910
Ламер 2.Х
2007-06-23 15:58
2007.07.15
Дата


15-1181677638
Petr V.Abramov
2007-06-12 23:47
2007.07.15
не существует ОПЕРАТИВНОЙ системы Windows 2003





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