![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перемещение по DBGrid средней кнопкой мыши [D7, Access XP]
W © (2005-06-30 08:47:00)Почему при перемещении по DBGrid средней кнопкой мыши изменяется только выделение, а не текущее положение указателя?
Как сделать, чтобы при нажатии на среднюю кнопку мыши инфа из базы в контролах обновлялась вместе с выделением?
Германн (2005-06-30 17:23:00) [1]2 dolmat (30.06.05 16:58) [12]
Ну нконец-то! :)
Но на 2005 переходить все равно не хочу! :(
dolmat (2005-06-30 16:58:00) [2]>Германн © (30.06.05 15:37) [8]
> Раз уж Борланд упрямо не хочет это сам сделать. :(
Проверял в 2005 все работает, в 7 действительно не хочет
msguns (2005-06-30 16:33:00) [3]>ANB © (30.06.05 15:54) [10]
>EhLib грид нормально все перемещает.
Ну да, а в Греции апельсины на улицах растут ;)
ANB (2005-06-30 15:54:00) [4]EhLib грид нормально все перемещает.
Virgo_Style (2005-06-30 15:43:00) [5]msguns © (30.06.05 9:31) [1]
Вроде бы надо Handled в true выставлять, или я ошибаюсь?
Германн (2005-06-30 15:37:00) [6]Лучше уж один раз сделать своего наследника от TDBGrid, в котором перекрыть методы DoMouseWheelDown, DoMouseWheelUp. И потом пользоваться им всегда. Раз уж Борланд упрямо не хочет это сам сделать. :(
W (2005-06-30 12:57:00) [7]Спасибо большое за ответ :).
КиТаЯц (2005-06-30 12:50:00) [8]> 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:44:00) [9]Вы поняли правильно. Но [1] не подходит по указанной в [3] причине (см. первое предложение).
КиТаЯц (2005-06-30 12:40:00) [10]> W (30.06.05 12:34) [3]
Я тек понял "первая часть вопроса" = "вторая часть вопроса в другой формулировке"?
Дык ведь в [1] все есть...
W (2005-06-30 12:34:00) [11]У TDrawGrid есть событие OnMouseWheelUp, а у TDBGrid - нет.
По поводу второго вопроса... Надо как раз чтобы при движении колесика мыши в TDBGrid шло перемещение указателя по базе, т.е. изменялась текущая запись. На деле же происходит вот что: выделение ползет вместе с колесом, а указатель у Грида остается на том месте, где был. Чтоб его сместить, надо либо клавишу управления курсором нажать, либо мышью встать на нужную запись.
msguns (2005-06-30 09:33:00) [12]Второй вопрос неясен
msguns (2005-06-30 09:31:00) [13]
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;