![]() |
Scrollen in einer ComboBox unterbinden
Moin,
ein altes Problem, was man auch bei Websites oft sieht: Eine ComboBox hat den Focus, der User will an einer anderen Stelle scrollen und scrollt damit versehentlich die ComboBox. Kann man das Scrollen unterbinden oder noch besser nur während eines MouseOver zulassen? Grüße, Messie |
Re: Scrollen in einer ComboBox unterbinden
Moin,
ich hab das so gelöst, dass ich im MouseOver-Ereignis der Komponente, von der ich ausgehe, dass der User eigentlich dort scrollen will, ein SetFocus für eben diese Komponente ausühre. Das kannst du natürlich auch schon beim MouseLeave-Ereignis der Kombobox ausführen lassen (von mir jetzt ungetestet). Unterbindet zwar nicht das Scrollen prinzipiell, sollte aber diesen "Benutzerfehler" abfangen. Bis denn Bommel |
Re: Scrollen in einer ComboBox unterbinden
Hallo,
die Message WM_MOUSEWHEEL abfangen. Das Beispiel bezieht sich auf ein Memo, funktioniert genauso bei ComboBoxen:
Delphi-Quellcode:
noch die Mauskoordinaten berücksichtigen...
//...
private procedure AppMessage(var Msg: TMsg; var Handled: Boolean); //... procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean); begin if Msg.message = WM_MOUSEWHEEL then if ActiveControl = Memo1 then Msg.message := 0; inherited; end; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnMessage := AppMessage; end; |
Re: Scrollen in einer ComboBox unterbinden
Zitat:
|
Re: Scrollen in einer ComboBox unterbinden
Hallo,
gibt es das in D6 das schon?, dann ist das vermutlich besser, mein Code funktioniert schon in D3. |
Re: Scrollen in einer ComboBox unterbinden
Hi,
wieso sollte ein TApplicationEvents besserer Stil sein, als das "manuell" zu machen? man braucht doch nun wirklich nicht für jede Kleinigkeit eine Komponente :? |
Re: Scrollen in einer ComboBox unterbinden
Nun, ggf. ist dies nicht die einzigste Stelle einem vlt. sehr umfangreichen Programm, an der "jemand" auf ein Event von Application zugreifen möchte.
Aus der OH: Zitat:
|
Re: Scrollen in einer ComboBox unterbinden
Also, ich habe es "manuell" umgesetzt, weil TApplicationEvents etwas globales ist und es wesentlich mehr Sorgfalt erfordert.
Mit der Lösung von Lannes kann ich bequem die ComboBoxen in meiner Eingabemaske vom Scrollen befreien.
Delphi-Quellcode:
Es gibt andere Forms, da ist das nicht wichtig, weil ein versehentliches Scrollen keine Folgen hat. Insofern ist die lokale Lösung für mich optimal.
if ActiveControl is TComboBox
Danke, Messie |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz