Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.28;
Скачать: CL | DM;

Вниз

DBGrid и колесо мыши   Найти похожие ветки 

 
Andrews ©   (2003-04-10 12:57) [0]

Привет всем! Кто-нибудь сталкивался с такой проблемой: привращении колесика мыши "в DBGrid" происходит перемещение полоски выбора по строкам таблицы без перемещения по записям, т.е. перехода от записи к записи нет. Мало того, если покрутить колёсико, а потом осуществить маусклик выбирается случайная запись в приделах видимой части таблицы, в предыдущей строке также остается значок текущей записи в виде треугольника, но и новый также появляется, в результате можно загадить таким графическим мусором всю таблицу. Прокрутка осуществляется только в видимой части DBGrid. Такая фигня происходит со стандартным драйвером мыши Microsoft, мыши от Logitech, разных моделей. Если поставить родные драйвера, при установках по умолчанию, характер скролинга меняется, полоска выбора сразу скачет вниз(или вверх, смотря куда крутить) видимой части таблицы и далее смещается по одной записи. Если же в драйверах включить "совместимость со скролингом МС оффиса" происходит описаная выше фигня :o(. И чего думать то ли мои это глюки, то ли привет от Logitech и Microsoft.
Обработки события MouseWheel ни у DBGrid ни у Table я не нашел...


P.S. Извиняюсь за сумбурность изложения.


 
sniknik ©   (2003-04-10 13:26) [1]

может это решит часть "пролеммы"

описываеш
type

TWMMouseWheel = packed record
Msg: Cardinal;
Keys: SmallInt;
WheelDelta: SmallInt;
case Integer of
0: (
XPos: Smallint;
YPos: Smallint);
1: (
Pos: TSmallPoint;
Result: Longint);
end;

TMyDBGrid = class(TDBGrid)
procedure WMMouseWheel(var Message: TWMMouseWheel); message WM_MOUSEWHEEL;
Private
.........

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


вызываеш примерно так
procedure TMainForm.FormCreate(Sender: TObject);
begin
DBGrid:= TMyDBGrid.Create(TabSheet1);
DBGrid.Parent:= TabSheet1;
DBGrid.Align:= alClient;
DBGrid.BorderStyle:= bsNone;
DBGrid.DataSource:= DataSource1;
DBGrid.OnDblClick:= DBGridDblClick;
DBGrid.OnKeyPress:= DBGridKeyPress;
DBGrid.OnTitleClick:= DBGridTitleClick;
DBGrid.PopupMenu:= PopupMenu3;
end;



 
Vovik ©   (2003-04-10 15:07) [2]

В свое время столкнулся с неудобством в работе стандартного DbGrid. Прокрутка колесиком мыши работает только по видимой части DbGrid (та что на экране).

Я пользуюсь RxDbGrid или EhGrid
В них прокрутка работает без проблем.


 
Andrews ©   (2003-04-10 16:13) [3]

Спасибо за инфу :o)



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

Текущий архив: 2003.04.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
11-91241
Arioch
2002-07-16 11:51
2003.04.28
Free compilers?


1-91356
HeWSter
2003-04-09 15:52
2003.04.28
Как отловить нажатие горячих клавиш из потока?


4-91606
AME
2003-02-28 13:08
2003.04.28
Файл формата Unicode


14-91455
Valentino
2003-04-11 09:26
2003.04.28
Очень срочно!!! Посоветуйте компоненты для работы со скинами.


3-91142
KMI
2003-04-08 19:45
2003.04.28
Перехват окна пароля БД