Форум: "Базы";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "Базы";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.046 c