Ich muss Scrollen von Elementen mit dem Mausrad für alle Combo-Komponenten auf dem Formular deaktivieren. Das Beste von allem ist, mehr oder weniger allgemeine Lösung zu haben, weil Design des Formulars ändern kann, wäre es schön, wenn neue Combo-Komponenten ohne zusätzliche Arbeit mit Quellcode ignoriert werden. Ich habe zwei Arten von Combo: TComboBox und TcxComboBox (von DevExpress ExpressBars Suit). Ich habe versucht, diesen Weg zu gehen:Wie zu unterdrücken Mausrad in 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;
Es funktioniert gut für TComboBox, aber dieser Event-Handler nie ausgelöst, wenn TcxComboBox Fokus hat. Ich habe versucht, entsprechende Meldungen auf der Ebene der Form, wie diese zu fangen:
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;
Aber solche Nachrichten nie zu diesem Handler kommen. Ich habe versucht, direkt Handhabung Mausrad für TcxComboBox zu deaktivieren, weil es solche Eigenschaft hat:
procedure TSomeForm.FormCreate(Sender: TObject);
begin
cxComboBox1.Properties.UseMouseWheel := False;
end;
Aber es funktioniert nicht, es noch möglich ist, Gegenstände mit dem Mausrad zu scrollen. Ich habe Supporttickets für dieses Problem veröffentlicht, aber selbst wenn sie es in der nächsten Version beheben, brauche ich jetzt eine Lösung.
Irgendwelche Ideen, vielleicht hat jemand es irgendwie gelöst?
Dies macht zwei Lösungen, die unerwünschte Nebenwirkungen verursacht. Der Grund, warum ich dieses Scrollen deaktivieren muss, liegt darin, dass sich das übergeordnete Element in einem Bildlauffeld befindet, in dem ich stattdessen das Mausrad zum Scrollen brauche. Das Einführen dieser (und einer anderen Lösung) führt jedoch dazu, dass das übergeordnete Element keine Bildlaufereignisse abfängt. –