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

Вниз

как запретить комбобоксу реагировать на колесо мыши   Найти похожие ветки 

 
olden   (2002-12-12 13:00) [0]

и кусочек кода плиз :)


 
Гарик   (2002-12-12 14:10) [1]

Можно через ловушки.
mHook := SetWindowsHookEx(WH_MOUSE, @HookProc, 0, GetCurrentThreadID);
function HookProc(code: Integer; wParam, lParam: DWord): Longint; stdcall;
var wm: TMOUSEHOOKSTRUCT;
begin
if wParam = WM_MOUSEWHEEL then
if (Мыша_над_компонентом и компонент активен) // это напишешь сам
then Result := 1 // сообщение обработано и дальше обрабатываться не будет
else Result := 0 // передаем на обработку приложению
end;

Получить абсолютные координаты мыши можно так:
wm := TMOUSEHOOKSTRUCT(Pointer(lParam)^);
wm.pt : TPoint; - здесь координаты

на OnCreate формы пишешь mHook := SetWindowsHookEx(WH_MOUSE, @HookProc, 0, GetCurrentThreadID);

на OnDestroy - UnhookWindowsHookEx(mHook);


 
olden   (2002-12-12 14:14) [2]

спасибо, попробую


 
Гарик   (2002-12-12 14:32) [3]

точнее:

begin
...SKIP...
if ((GetCaptureControl.handle = _Блокируемый_комбобокс_.Handle)
and (wParam = WM_MOUSEWHEEL)) then Result := 1
else Result := 0


 
Гарик   (2002-12-12 14:42) [4]

конечно не Handle, а Name, (и TControl"а нет хендла :) )


 
Matolch ©   (2002-12-12 15:08) [5]

А не проще свой комбо сделать?


 
olden   (2002-12-13 13:49) [6]

2 Matolch
>А не проще свой комбо сделать?

Может быть и проще
т.к. тут вот еще в чем загвоздка
у меня на форме есть три элемента: TComboBox, TEdit, TfrPreview (превью-компонент генератора отчетов FastReport)

Так вот если выбрать что-то в комбо а затем щелкнуть на frPreiew, то фокус с комбо не снимается и на прокрутку мышиного колеса реагируют одновременно и комбо и превью.
Если мышой кликнуть на TEdit, то фокус перемещается на оный
и комбо на колесо уже не реагирует.
Пытался програмно перенести фокус на TEdit после выбора пункта в комбо (SetFocus(),SetFocusedControl()). И ничего...
Фокус остается на комбо и опять комбо и превью одновременно реагируют на колесо

Я уже и с PERFORM() повозился, а все равно результата нет.


 
Song ©   (2002-12-13 14:00) [7]

Нагородили... да просто через TApplication.onMessage



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

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

Наверх




Память: 0.48 MB
Время: 0.024 c
3-86680
DC2
2003-01-08 19:54
2003.01.27
Подскажите как сделать поле с числом десятичных знаков больше 4 (


1-86808
zolotov
2003-01-18 18:04
2003.01.27
Formula One


14-87060
RV
2003-01-08 08:45
2003.01.27
я было испугался :)


14-87084
VictorT
2002-12-20 21:32
2003.01.27
Глюк в 6-м IE?


1-86919
Berg
2003-01-16 16:03
2003.01.27
Ошибка