Главная страница
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.02 c
7-91558
blabla
2003-03-10 08:36
2003.04.28
clock


3-91199
VLADIMIR.
2003-04-09 20:48
2003.04.28
SQL отчет


3-91188
Stager
2003-04-09 13:52
2003.04.28
DataSet в оперативной памяти


3-91196
Filat
2003-04-09 18:10
2003.04.28
Firebird - домен, роли, пользователи - какая м/у ними связь?


1-91391
Jam
2003-04-16 10:18
2003.04.28
Слияние файлов