![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как наиболее изящно отловить WM_MOUSEWHEEL? [D6, Win2k]
Курдль © (2005-09-20 13:17:00)Приветствую аборигенов и гостей форума!
Необходимо заставить Control ("TCntlGrid") скроллироваться прокруткой мышиного колеса. Как это наиболее изящно исполнить?
С уважением, Я.
Курдль (2005-09-20 17:19:00) [1]Спасибо! Нашел еще способ - при помощи TApplicationEvents
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
var
i: SmallInt;
begin
inherited;
if Msg.message = WM_MOUSEWHEEL then
begin
Msg.message := WM_KEYDOWN;
Msg.lParam := 0;
i := HiWord(Msg.wParam) ;
if i > 0 then
Msg.wParam := VK_UP
else
Msg.wParam := VK_DOWN;
Handled := False;
end;
end;
Leonid Troyanovsky (2005-09-20 14:13:00) [2]
> Курдль © (20.09.05 13:17)
> Необходимо заставить Control ("TCntlGrid") скроллироваться
> прокруткой мышиного колеса. Как это наиболее изящно исполнить?
By Peter Below
procedure TForm1.GridMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
const
codes: array [Boolean] of Cardinal = (VK_UP, VK_DOWN);
var
code: Cardinal;
begin
Handled := true;
code := codes[WheelDelta < 0];
(sender as TWincontrol).Perform( WM_KEYDOWN, code, 0 );
(sender as TWincontrol).Perform( WM_KEYUP, code, 0 );
end;
type
TGridCracker = class(TDBCtrlGrid);
procedure TForm1.FormCreate(Sender: TObject);
begin
TGridCracker(DBCtrlGrid1).OnMouseWheel := GridMousewheel;
end;
--
Regards, LVT.