양식의 모든 콤보 구성 요소에 대해 마우스 휠을 사용하여 항목을 스크롤하지 않도록 설정해야합니다. 폼의 디자인이 변경 될 수 있기 때문에 가장 좋은 해결책은 소스 코드로 추가 작업을하지 않고도 새로운 콤보 구성 요소가 무시되면 좋을 것입니다. TComboBox와 TcxComboBox (DevExpress ExpressBars Suit에서 제공)의 두 가지 유형의 콤보가 있습니다. 나는 이런 식으로 가려고 노력 :TcxComboBox에서 마우스 휠을 숨기는 방법
procedure TSomeForm.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint;
var Handled: Boolean);
begin
if (Screen.ActiveControl is TComboBox) or (Screen.ActiveControl is TcxComboBox) then
Handled := True;
end;
그것은 TComboBox을 위해 잘 작동을하지만, TcxComboBox는 포커스가있을 때이 이벤트 핸들러가 트리거되지 않습니다. 는이 같은 형태의 수준에 해당하는 메시지를 잡으려고 시도 :
procedure TSomeForm.WndProc(var m: TMessage);
begin
if (m.Msg = WM_VSCROLL) or (m.Msg = WM_HSCROLL) or (m.msg = WM_Mousewheel) then
m.Msg := 0;
inherited;
end;
그러나 그러한 메시지를이 핸들러에 온 적이.
procedure TSomeForm.FormCreate(Sender: TObject);
begin
cxComboBox1.Properties.UseMouseWheel := False;
end;
그러나이 작동하지 않습니다, 마우스 휠 항목을 스크롤 여전히 가능 : 가 나는 등의 특성을 가지고 있기 때문에, 직접 TcxComboBox 위해 마우스 휠 처리를하지 않도록 노력했다. 이 문제에 대한 지원 티켓을 게시했지만, 다음 릴리스에서 수정하더라도 지금은 해결 방법이 필요합니다.
어떤 아이디어라도, 어쩌면 누군가 그것을 어떻게 든 해결할 수 있습니까?
이렇게하면 원하지 않는 부작용을 일으키는 두 가지 해결책이 생깁니다. 이 스크롤을 사용하지 않도록 설정해야하는 이유는 부모가 스크롤 상자에 있기 때문입니다. 대신 마우스 휠을 사용하여 스크롤해야합니다. 그러나이 (그리고 다른 솔루션 하나를 도입하면) 부모도 스크롤 이벤트를 잡지 않습니다. –