![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
в DBGrid не работает мышинный скроллинг
Lisa © (2004-02-04 13:55:00)
Проблема такая: скроллировать можно только в пределах видимых строчек, выше или ниже он двигаться не позволяет. Как это можно решить?
paul_k (2004-02-05 11:49:00) [1]
Спасибо большое за комментарий...
теперь бы все это в фак положить, а то вопрос регулярный а ковырять архивы форума через полтора месяца не все догадаются.
sniknik (2004-02-04 17:41:00) [2]
определяем свой класс для доступа к private методам/переменным.
пишем обработку события OnMouseWheel: TMouseWheelEvent; (можно хелп посмотреть)
заменяем указатель события в компоненте на наш.
TComponent (от которого грид наследуется это позволяет) свойство
property OnMouseWheel: TMouseWheelEvent read FOnMouseWheel write FOnMouseWheel;
FOnMouseWheel после присвоения уже не nil а указательна нашу процедуру.
а на реальном событии оно вызывается если определено
function TControl.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
MousePos: TPoint): Boolean;
var
IsNeg: Boolean;
begin
Result := False;
if Assigned(FOnMouseWheel)then
FOnMouseWheel(Self, Shift, WheelDelta, MousePos, Result);
if not Result then
.....
paul_k (2004-02-04 16:04:00) [3]
2 sniknik
Спасибо большое
Действительно просто... в смысле использовать ниписанное
А можно прокомментировать почему и как оно работает?
sniknik (2004-02-04 14:29:00) [4]
type
TMyDBGrid = class(TDBGrid);
TForm1 = class(TForm)
.....
procedure FormCreate(Sender: TObject);
.....
procedure GrigMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
TMyDBGrid(DBGrid1).OnMouseWheel:= GrigMouseWheel;
end;
procedure TForm1.GrigMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
with TDBGrid(Sender).DataSource.DataSet do
if Active then begin
if WheelDelta > 10 then Prior;
if WheelDelta < -10 then Next;
Handled:= true;
end;
end;
и вся обработка, EHLib не нужен.
Вованчик (2004-02-04 14:19:00) [5]
http://www.ehlib.com
Lisa (2004-02-04 14:14:00) [6]
а что это за библиотека?
Deniz (2004-02-04 14:14:00) [7]
... или поставить дрова от мыши :)
Вованчик (2004-02-04 14:09:00) [8]
Грид из EHLib или переопределять событие от колесика