Hallo,
ich habe folgendes Problem ich habe zwei Panels oder halt zwei Scrollboxen.
Am Anfang wollte ich einfach, wenn ich mit dem Mauszeiger über ein Bild in der Scrollbox gekommen bin den Focus an die Scrollbox geben, aber dann konnte ich in dann nicht mehr ändern den Focus, also zum Beispiel auf eine andere Scrollbox.
deswegen habe ich mir die Komponente Panel genommen und die um die zwei Event Methoden OnMouseLeave und OnMouseEnter erweitert. Zusätzlich noch eine Boolean Variable VisuellerFocus der halt immer gesetzt wird, wenn die Events eintretten.
So hat alles geklappt.
Jetzt ist das Problem das wenn ich Bilder auf das Panel packen, das ich dann nicht mehr das Event durchkriege, ist mir auch loggisch. Aber ich habe das ganze auch mit der PtInRect Methode probiert, aber die spinnt anscheinend irgendwie.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| Procedure MouseWheel(Var Msg : TCMMouseWheel);message CM_MOUSEWHEEL; ...
Procedure Tf_UI.MouseWheel(Var Msg : TCMMouseWheel); Begin If Msg.Result = 0 Then Begin Msg.Result := 1;
If PtInRect(p_alben.ClientRect,ScreenToClient(SmallPointToPoint(msg.Pos))) Then Begin ShowMessage('Scrollen in der Alben Liste') End; If PtInRect(p_songs.ClientRect,ScreenToClient(SmallPointToPoint(msg.Pos))) Then Begin ShowMessage('Scrollen in der Song Liste'); End; End;
End; |
Wobei hier die p_songs und p_alben zwei Panel sind, mit jeweils noch Bilder drauf.
Wenn ich das jetzt starten kriege ich die erste Message relativ häufig, aber die zweite gar nicht, wobei ich die zweite manchmal bekomme, wenn ich auch die erste bekomme. Kann mir da jemand weiterhelfen?
MfG Constantin
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt