Topic: Отключение прокрутки мыши в ComboBox

Можно ли как-то в ComboBox отключить прокрутку списка значений колесом мыши, когда ComboBox закрыт? Если фокус стоит на комбобоксе, то стоит случайно прокрутить колесо мыши и значение меняется. Если комбобоксов на форме несколько, то уследить за их случайным изменением невозможно. Очень неудобно. Приходится пользователям объяснять, что надо "не дышать" на комбобоксы. В 1С, например, в выпадающих списках прокрутки вообще нет. Просто кликаешь на выпадающий список, он открывается, а затем кликаешь на нужное значение и список закрывается с установкой выбранного значения. Очевидно, к ComboBox надо добавить свойство "MouseWheel" или добавить события  OnMouseWheelDown
OnMouseWheelUp, чтобы можно было скриптом побороть прокрутку (хотя первый вариант более простой в использовании).

Re: Отключение прокрутки мыши в ComboBox

Скачайте пожалуйста последнюю бета версию программы
https://www.dropbox.com/s/f3j4kfpnttm1o … b.zip?dl=0



Данным скриптом можно заблокировать прокрутку значений в ComboBox-ах

procedure Form1_OnShow (Sender: string; Action: string);
begin
    Form1.OnMouseWheel := @OnMVDMouseWheel;
end;


procedure OnMVDMouseWheel(Sender: TObject; isShift, isAlt, isCtrl: boolean; WheelDelta: Integer; X, Y: Integer; var Handled: Boolean);
begin
    if Form1.ActiveControl is TdbComboBox then Handled := True;
end;
Dmitry.

Re: Отключение прокрутки мыши в ComboBox

Да, отлично все работает!

Re: Отключение прокрутки мыши в ComboBox

А как сделать так, чтобы не нужно было для каждой из форм прописывать отдельную процедуру OnMVDMouseWheel? Т.е. надо чтобы в процедуре OnMVDMouseWheel не было явного указания имени формы Form1. Как послать в эту процедуру переменную с именем вызывающей формы?

procedure OnMVDMouseWheel(Sender: TObject; isShift, isAlt, isCtrl: boolean; WheelDelta: Integer; X, Y: Integer; var Handled: Boolean);
begin
    if Form1.ActiveControl is TdbComboBox then Handled := True;
end;