Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как прокручивать TGrid колесом мыши?


Vi0let ©   (2003-12-30 14:15:00) 

А то, при движении колеса, меняется активная строка только в видимом списке грида, а сам список не прокручивается...


Vi0let   (2004-01-03 11:13:00) [1]

благодарю, всё получилось


sniknik   (2004-01-01 18:58:00) [2]

....
А ивано-франковец ему отвечает: ну, так это, короче, не проблема.
Это вы неделю не покурите, и она сама по себе рассосется.
Тут все растаманы(наркоманы) как зашумели: та, шо ты гонишь! Прямо как психиатр, в натуре. Это же как можно, целую неделю не курить, это же вобще умом поехать можно. А ивано-франковец им говорит: тогда давайте другой способ, менеее напряжный.
.... ;о))
© сага и мыше и наркомане.

еще способ менее напряжный(?) сам только что сделал(вроде работает, с тем что в десигне), конечно наверняка ктото чемто подобным уже давно пользуется.
но вообще мне удобнее первым, т.к. не только прокрутку перекрываю обычно, еще и DrawCell, WMVScroll и и еше коечего цепляю (тут уж проше в рантайм создать и параметры прописать, меньше получается).

type
TMyDBGrid = class(TDBGrid);

TForm1 = class(TForm)
.....
procedure FormCreate(Sender: TObject);
private
procedure MyMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
TMyDBGrid(DBGrid1).OnMouseWheel:= MyMouseWheel;
end;

procedure TForm1.MyMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
if (Sender is TDBGrid) and TDBGrid(Sender).DataSource.DataSet.Active then
begin
if WheelDelta > 10 then TDBGrid(Sender).DataSource.DataSet.Prior;
if WheelDelta < -10 then TDBGrid(Sender).DataSource.DataSet.Next;
Handled:= true;
end;
end;


Vi0let   (2004-01-01 14:56:00) [3]

sniknik
> естественно дальше нужно TMyDBGrid вместо TDBGrid использовать
я так понимаю, в этом случаем у меня 2 варианта:
1) создавать объект TMyDBGrid в рантайме, и все значения свойств кодом задавать
2) создавать компонент наследующий грид с новым свойством
я правильно понял?
а нет ли менее хлопотного варианта?


dimm22   (2003-12-30 19:38:00) [4]

DBGridEh из библиотеки EhLib. Много чего полезного умеет делать.


Vi0let   (2003-12-30 19:21:00) [5]

интересно, попробую ...


sniknik   (2003-12-30 14:57:00) [6]

TMyDBGrid = class(TDBGrid)
procedure WMMouseWheel(var Msg: TWMMouseWheel); message WM_MOUSEWHEEL;
end;

procedure TMyDBGrid.WMMouseWheel(var Msg: TWMMouseWheel);
begin
if DataSource.DataSet.Active then begin
if Msg.WheelDelta > 10 then DataSource.DataSet.Prior;
if Msg.WheelDelta < -10 then DataSource.DataSet.Next;
end;
end;

естественно дальше нужно TMyDBGrid вместо TDBGrid использовать.


asp   (2003-12-30 14:29:00) [7]

Переопределяй от TWinControl"а в protected
function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
MousePos: TPoint): Boolean; dynamic;
function DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; dynamic;
function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; dynamic;


Vemer   (2003-12-30 14:23:00) [8]

Либо написать общий обработчик колеса, который нажатия клавиш вверх/вниз имитирует, образец вроде на сайте АП есть.
У меня работает.


Vi0let   (2003-12-30 14:22:00) [9]

как реализовать обработку MouseWheel ?


asp   (2003-12-30 14:20:00) [10]

Либо воспользоваться RxDBGrid, либо наследовать от стандартного свой, с обработкой MouseWheel.


Vi0let   (2003-12-30 14:19:00) [11]

... TDBGrid


Наверх

Титульная страница Поиск, карта сайта Написать письмо