![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DBGrid и мышь со скролингом [D5, Win95/98, Win2k]
BJValentine © (2003-03-31 11:51:00)Есть мышь со скролингом. DBGrid не совсем качественно реагирует на событие скролинга мыши. Каким образом можно добиться корректной работы скролинга с DBGridom?
Fighter (2003-04-01 09:59:00) [1]Я сделал наследника TDBGrid и работаю только с ним, пока всё работает без проблем.
unitMydbGrid;
interface
usesMessages, Classes, dbgrids;
type
TDBGridScroll= class(TDBGrid)
private
procedureWMMouseWheel( var Message: TMessage); messageWM_MOUSEWHEEL;
end;
procedureRegister;
implementation
{ TDBGridScroll }
procedureTDBGridScroll.WMMouseWheel( var Message: TMessage);
begin
if Message.wParam>0 then
DataSource.DataSet.Prior
else
DataSource.DataSet.Next;
end;
procedure Register;
begin
RegisterComponents("Data Controls", [TDBGridScroll]);
end;
end.
Если хочешь картинку к компоненту могу выслать, или сделай сам...
Diamond Cat (2003-03-31 19:23:00) [2]обычно это WM_MOUSEWHEEL, но некоторые драйвера мыши действуют хитрее, к сожалению не все окна способны обработать это сообщение, поэтому иногда используется wm_hscroll или wm_vscroll
Alexandr (2003-03-31 14:11:00) [3]DBGridEh
Kuusiniemi (2003-03-31 13:36:00) [4]Или использовать RXDBGrid.
sniknik (2003-03-31 12:58:00) [5]опять забыл :о(
тоже понадобится (хотя конечно не обязательно, можно руками выделить)
TWMMouseWheel = packed record
Msg: Cardinal;
Keys: SmallInt;
WheelDelta: SmallInt;
case Integer of
0: (
XPos: Smallint;
YPos: Smallint);
1: (
Pos: TSmallPoint;
Result: Longint);
end;
BJValentine (2003-03-31 12:57:00) [6]Я так понимаю, что этот вопрос не совсем касается баз данных. Здесь скорее всего работа с сообщениями Win32. Не понимаю это действие модератора... Ну да ладно, ребята, подскажите хотя бы какое сообщение возникает при прокрутке скролинга мыши?
sniknik (2003-03-31 12:55:00) [7]добавить свой класс и использовать его заместо TDBGrid
TMyDBGrid = class(TDBGrid)
procedure WMMouseWheel(var Message: TWMMouseWheel); message WM_MOUSEWHEEL;
Private
......
procedure TMyDBGrid.WMMouseWheel(var Message: TWMMouseWheel);
begin
if DataSource.DataSet.Active then begin
if Message.WheelDelta > 10 then DataSource.DataSet.Prior;
if Message.WheelDelta < -10 then DataSource.DataSet.Next;
end;
end;