Форум: "Базы";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];
ВнизПеремещение по DBGrid средней кнопкой мыши Найти похожие ветки
← →
W (2005-06-30 08:47) [0]Почему при перемещении по DBGrid средней кнопкой мыши изменяется только выделение, а не текущее положение указателя?
Как сделать, чтобы при нажатии на среднюю кнопку мыши инфа из базы в контролах обновлялась вместе с выделением?
← →
msguns © (2005-06-30 09:31) [1]
procedure TfrmListFond.FormCreate(Sender: TObject);
begin
TDrawGrid(grListFonds).OnMouseWheelDown := FormMouseWheelDown;
TDrawGrid(grListFonds).OnMouseWheelUp := FormMouseWheelUp;
TDrawGrid(grFondsNames).OnMouseWheelDown := FormMouseWheelDown;
TDrawGrid(grFondsNames).OnMouseWheelUp := FormMouseWheelUp;
end;
...
procedure TfrmListFond.FormMouseWheelDown(Sender: TObject;
Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
if (Screen.ActiveControl.ClassType<>TDBGrid) then exit;
with Screen.ActiveControl as TDBGrid do
if Visible and (DataSource.DataSet<>nil) and (DataSource.DataSet.RecordCount>0) then
DataSource.DataSet.Next;
end;
procedure TfrmListFond.FormMouseWheelUp(Sender: TObject;
Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
if (Screen.ActiveControl.ClassType<>TDBGrid) then exit;
with Screen.ActiveControl as TDBGrid do
if Visible and (DataSource.DataSet<>nil) and (DataSource.DataSet.RecordCount>0) then
DataSource.DataSet.Prior;
end;
← →
msguns © (2005-06-30 09:33) [2]Второй вопрос неясен
← →
W (2005-06-30 12:34) [3]У TDrawGrid есть событие OnMouseWheelUp, а у TDBGrid - нет.
По поводу второго вопроса... Надо как раз чтобы при движении колесика мыши в TDBGrid шло перемещение указателя по базе, т.е. изменялась текущая запись. На деле же происходит вот что: выделение ползет вместе с колесом, а указатель у Грида остается на том месте, где был. Чтоб его сместить, надо либо клавишу управления курсором нажать, либо мышью встать на нужную запись.
← →
КиТаЯц © (2005-06-30 12:40) [4]> W (30.06.05 12:34) [3]
Я тек понял "первая часть вопроса" = "вторая часть вопроса в другой формулировке"?
Дык ведь в [1] все есть...
← →
W (2005-06-30 12:44) [5]Вы поняли правильно. Но [1] не подходит по указанной в [3] причине (см. первое предложение).
← →
КиТаЯц © (2005-06-30 12:50) [6]> W (30.06.05 12:44) [5]
[1] как раз подходит т.к. причина указанная в первом предложении [3] отсутствует по причине 4-го и 6-го предложения в [1]
Поясняю:TDrawGrid(ИМЯ ВАШЕГО DB ГРИДА).OnMouseWheelDown := FormMouseWheelDown;
TDrawGrid(ИМЯ ВАШЕГО DB ГРИДА).OnMouseWheelUp := FormMouseWheelUp;
← →
W (2005-06-30 12:57) [7]Спасибо большое за ответ :).
← →
Германн © (2005-06-30 15:37) [8]Лучше уж один раз сделать своего наследника от TDBGrid, в котором перекрыть методы DoMouseWheelDown, DoMouseWheelUp. И потом пользоваться им всегда. Раз уж Борланд упрямо не хочет это сам сделать. :(
← →
Virgo_Style © (2005-06-30 15:43) [9]msguns © (30.06.05 9:31) [1]
Вроде бы надо Handled в true выставлять, или я ошибаюсь?
← →
ANB © (2005-06-30 15:54) [10]EhLib грид нормально все перемещает.
← →
msguns © (2005-06-30 16:33) [11]>ANB © (30.06.05 15:54) [10]
>EhLib грид нормально все перемещает.
Ну да, а в Греции апельсины на улицах растут ;)
← →
dolmat (2005-06-30 16:58) [12]>Германн © (30.06.05 15:37) [8]
> Раз уж Борланд упрямо не хочет это сам сделать. :(
Проверял в 2005 все работает, в 7 действительно не хочет
← →
Германн © (2005-06-30 17:23) [13]2 dolmat (30.06.05 16:58) [12]
Ну нконец-то! :)
Но на 2005 переходить все равно не хочу! :(
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.05 c