Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];
Внизпрокрутка DBGrid колесом мыши Найти похожие ветки
← →
aleko (2006-09-27 00:27) [0]Доброго времени суток, уважаемые мастера, подскажите как прокрутить сетку DBGrid при помощи колеса мыши?
Пробовал написать процедуру перехвата сообщения WM_MOUSEWHEEL и в зависимости от направления вращения колеса осуществлять переход в наборе данных Тable на соотвественно предыдущую или следующую строку - это работает, но только до тех пор пока я не щелкну по какой нибудь ячейке сетки - потом перемещается только выделение, а переход по записям не происходит, почему? Можно конечно сделать DBGrid неактивной или что-то в этом роде, тогда все нормально, но ведь это не выход.
← →
Германн © (2006-09-27 00:34) [1]Переходи на BDS2006. Там сей баг исправлен. Или посмотри реализацию в TRxDbGrid методов DoOnMouseWheelDown и DoOnMouseWheelUp и сделай у себя так же.
← →
aleko (2006-09-27 03:51) [2]Спасибо. Нашел в Королевстве ответ - работает, привожу, может кому пригодится.
Подскажите что именно происходит при FormCreate, никак не могу врубиться? Сорри за идиотский вопрос, но хочется разобраться :)
type
TForm1 = class(TForm)
...
private
{ Private declarations }
procedure NewGridWinProc(var Msg: TMessage);
...
end;
implementation
var
OldGridWinProc: TWndMethod;
procedure TForm1.FormCreate(Sender: TObject);
begin
...
OldGridWinProc := DBGrid1.WindowProc;
DBGrid1.WindowProc := NewGridWinProc;
...
end;
procedure TForm1.NewGridWinProc(var Msg: TMessage);
begin
if Msg.Msg = WM_MOUSEWHEEL then begin
if SmallInt(HiWord(Msg.wParam)) > 0
then DBGrid1.DataSource.DataSet.Prior
else DBGrid1.DataSource.DataSet.Next;
Msg.Result := 1;
end else OldGridWinProc(Msg);
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.039 c