Форум: "Основная";
Текущий архив: 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