|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Прокрутка мышью в DBСtrlGrid
Подскажите как задействовать прокрутку мышью в DBСtrlGrid. Нужно чтобы один шаг ровнялся прокрутке на одну запись. Поискал по всему интернету но готового решения не нашел. Часто упоминается про OnMouseWheel но у этого компонента нет своего такого события. Может кто то уже успешно занимался этим вопросом?
|
#2
|
||||
|
||||
Нужно переопределить DoMouseWheel(). Либо в наследнике, либо через хак.
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
Цитата:
А примера нет случайно? Я мышей не ловил раньше при помощи delphi)). Буду благодарен если научите |
#4
|
||||
|
||||
Цитата:
Пишу программы за еду. __________________ |
#5
|
|||
|
|||
Цитата:
Я покопаюсь еще в дебрях форума. Если не затруднит, напишите при возможности пример. |
#6
|
||||
|
||||
Не совсем то, что требуется, переход не точно по записям, но вот пример прокрутки с подкладкой глобальной процедуры колёсика
Код:
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin if WindowFromPoint(MousePos) = DBCtrlGrid1.Handle then if WheelDelta > 0 then DBCtrlGrid1.Perform(WM_VScroll, SB_LINEUP, 0) else DBCtrlGrid1.Perform(WM_VScroll, SB_LINEDOWN, 0); end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#7
|
||||
|
||||
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, DBCtrls, dbcgrids, DB, DBTables; type TDBCtrlGrid = class(DBCGrids.TDBCtrlGrid) protected function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; override; end; TForm1 = class(TForm) DBCtrlGrid1: TDBCtrlGrid; DBEdit1: TDBEdit; DBEdit2: TDBEdit; Table1: TTable; DataSource1: TDataSource; private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} { TDBCtrlGrid } function TDBCtrlGrid.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; begin if WheelDelta>0 then DataSource.DataSet.Prior else DataSource.DataSet.Next; Result:=True; end; end. Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
delphi-explorer (14.12.2016)
|
#8
|
|||
|
|||
Спасибо!! Я понял как это должно работать. Только почему то выдается ошибка: [DCC Error] Form1.pas(157): E2065 Unsatisfied forward or external declaration: 'TForm1.DoMouseWheel' на строке:
Код:
function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; override; В виду своей неопытности в объявлении классов не могу разобраться что лишнее убрать из деклараций в форме. Последний раз редактировалось delphi-explorer, 14.12.2016 в 21:12. |
#9
|
||||
|
||||
Да нет, пример NumLock`а работает без ошибок, вот проверка под ADO
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
delphi-explorer (14.12.2016)
|
#10
|
|||
|
|||
Цитата:
|
#11
|
||||
|
||||
Цитата:
Пишу программы за еду. __________________ |
#12
|
|||
|
|||
Цитата:
Да).Form1 туда случайно попало. Там E2065 Unsatisfied forward or external declaration: 'TDBCtrlGrid.DoMouseWheel' Последний раз редактировалось delphi-explorer, 14.12.2016 в 20:44. |
#13
|
|||
|
|||
Все, разобрался! Объявил функцию в классе как в примере NumLock, а реализацию не добавил и пытался компилировать. Большое спасибо NumLock и Alegun за помощь!
Вот думаю почему сразу разработчик не добавил DbCtrlGrid такую полезную возможность как скрол? |
#14
|
||||
|
||||
Если есть желание, можешь глянуть в сторону EhLib.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#15
|
||||
|
||||
Сейчас на работе с EhGrid на cxGrid проекты переписываем, чтобы забыть EhLib как страшный сон
Пишу программы за еду. __________________ |