Форум: "Основная";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];
ВнизКак наиболее изящно отловить WM_MOUSEWHEEL? Найти похожие ветки
← →
Курдль © (2005-09-20 13:17) [0]Приветствую аборигенов и гостей форума!
Необходимо заставить Control ("TCntlGrid") скроллироваться прокруткой мышиного колеса. Как это наиболее изящно исполнить?
С уважением, Я.
← →
Leonid Troyanovsky © (2005-09-20 14:13) [1]
> Курдль © (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.
← →
Курдль © (2005-09-20 17:19) [2]Спасибо! Нашел еще способ - при помощи 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;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c