Вниз
Скачать: CL | DM;

DbGrid   Найти похожие ветки 

← →
Konrads   (2004-08-24 08:10) [0]

Есть у меня старенькая программа, в которой около 20 форм и на каждой по нескольку DbGrid. Писал её давно, когда колёса на мышах ещё небыли приняты за стандарт. Сейчас возникла проблема связанная с неадекватным поведением стандартного DbGrid на скроллинг при помощи колеса мыши. Как можно просто, одним чёхом поменять все DbGrid на к примеру JvDbGrid, у которого колесо работает нормально?


← →
Алхимик ©   (2004-08-24 08:53) [1]

Описание в dfm каким нить WinCommanderom


← →
roottim ©   (2004-08-24 09:02) [2]

тебе наверно будет проще дописать стандартный TDbGrid
2-я методами
function DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; override;
function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; override;


в одном TDataSet.Next в другом Prev (может еще пару проверок добавить)
и переписывать ничего ненадо!


← →
Skyle ©   (2004-08-24 09:05) [3]


> 2] roottim ©   (24.08.04 09:02)

Не думаю, что в случае

>  около 20 форм и на каждой по нескольку DbGrid

это будет правильно.
Вернее будет

> [1] Алхимик ©   (24.08.04 08:53)


← →
Алхимик ©   (2004-08-24 09:09) [4]


> [3] Skyle ©   (24.08.04 09:05)

А может и [2] вернее. В "общем" случае завязываться на сторонние компоненты без нужды не стоит. Особенно если они платные и без исходников.


← →
Fynjy1984 ©   (2004-08-24 09:12) [5]

У меня сработало так:
На любую форму кладешь ApplicationEvents и пишешь следующий обработчик:

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
 var Handled: Boolean);
var
  i: SmallInt;
begin
  if Msg.message = WM_MOUSEWHEEL then
  begin
   Msg.message := WM_KEYDOWN;
   Msg.lParam := 0;
   i := HiWord(Msg.wParam) ;
   if i > 0 then
      Msg.wParam := VK_UP
   else
      Msg.wParam := VK_DOWN;

   Handled := False;
  end;
end;


← →
Skyle ©   (2004-08-24 09:15) [6]


>  [4] Алхимик ©   (24.08.04 09:09)

А что если сделать компонент, в котором просто перекрыта реакция на колесо и потом [2]? В случае, когда от грида больше ничего не надо, это поведение мне кажется вполне естественным. + можно будет использовать этот грид в других программах. Ну или перейти на другую версию дельфей, там вроде грид уже нормально с колесом работает.


← →
roottim ©   (2004-08-24 09:19) [7]


> Skyle ©   (24.08.04 09:05) [3]
>
> > 2] roottim ©   (24.08.04 09:02)
>
> Не думаю, что в случае
>
> >  около 20 форм и на каждой по нескольку DbGrid
>
> это будет правильно.


а что тут такого, я же не предлагал написать свой компонент, я говорю дописать в коде TDbGrida эти методы и перекомпилировать проект.. вот и все!


← →
Алхимик ©   (2004-08-24 09:21) [8]


> [6] Skyle ©   (24.08.04 09:15)

И я про то. А с переходом на D7 с левыми компонентами проблемсы могут возникать.


← →
Konrads   (2004-08-24 11:19) [9]

to roottim
Большое спасибо
Добавил в класс TCustomDBGrid
function DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; override;
function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; override;

И далее описал
   function TCustomDBGrid.DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean;
   begin
      DataSource.DataSet.Next;
   end;
   function TCustomDBGrid.DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean;
   begin
      DataSource.DataSet.Prior;
   end;
Ничего больше не добавлял, и начало и конец списка обрабатывает как надо


← →
Skyle ©   (2004-08-24 11:43) [10]


> [7] roottim ©   (24.08.04 09:19)


> [8] Алхимик ©   (24.08.04 09:21)

Звери.... ;-)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.021 c
14-1093807996
Феликс
2004-08-29 23:33
2004.09.19
Респект нашим спортсменам.


14-1091091921
Красная Майка
2004-07-29 13:05
2004.09.19
Очередной MMP


11-1080588102
GuAV
2004-03-29 23:21
2004.09.19
KOL + MCK + Frame = ?


3-1093327698
first_may
2004-08-24 10:08
2004.09.19
Ошибки IB...


6-1089616621
ikivio
2004-07-12 11:17
2004.09.19
Socket Error в компонентах Indy




   Наверх