Вниз
Скачать: CL | DM;

прокручивание таблицы 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.013 c
15-1181196883
@!!ex_
2007-06-07 10:14
2007.07.15
Обратная матрица. Метод Гаусса.


3-1176746454
так себе
2007-04-16 22:00
2007.07.15
Узнать название полей


1-1178985928
mr1Andersen
2007-05-12 20:05
2007.07.15
Здравствуйте Мастера. Каким образом Delphi кодирует(запоминает) в


15-1181997704
Val
2007-06-16 16:41
2007.07.15
Вопрос по C#


15-1181832424
Александр Фролов
2007-06-14 18:47
2007.07.15
Подскажите как просмотреть веб страницу с charset=shift_jis




   Наверх