![]() |
Delphi-Version: 7
Mausrad (mousewheel event ) in TFrame aktivieren
Hallo!
Ich habe eine Form welche während der Laufzeit ein Frame erzeugt und dieses mit Elementen befüllt. Das alles funktioniert einwandfrei! Jetzt würde ich aber auch gerne das generiete Frame per mousewheel event (mit Mausrad) scrollen! Ich habe das folgendes gefunden, der Code produziert aber leider einen Stockoverflow und ich weiss nicht warum, villeicht kann mir ja jemand helfen :
Code:
type
TMainForm = class(TForm) private procedure MouseWheelHandler(var AMessage: TMessage); override; public { Public declarations } end; implementation procedure TMainForm.MouseWheelHandler(var AMessage: TMessage); var Control: TWinControl; begin Control := FindVCLWindow(SmallPointToPoint(TWMMouseWheel(AMessage).Pos)); if Assigned(Control) then begin AMessage.Result := Control.Perform(CM_MOUSEWHEEL, AMessage.WParam, AMessage.LParam); if AMessage.Result = 0 then Control.DefaultHandler(AMessage); end else inherited MouseWheelHandler(AMessage); end; Vielen DAnk DeCi |
AW: Mausrad (mousewheel event ) in TFrame aktivieren
1. Welche Delphi-Version?
2. Bitte Test-Projekt zum nachvollziehen anhängen. Dazu DPR-, PAS- und DFM- zippen und anhängen. Mit einen leeren Formular und diesen Code lässt sich nämlich nicht ein Stack Overflow reproduzieren. |
AW: Mausrad (mousewheel event ) in TFrame aktivieren
Version ist Delphi Version 7 Enterprise unter Windows 7 64Bit
Der Stackoverflow passiert bei mir auch wenn ich ein neues Projekt aufmache , ein Frame auf die Form lege und dann versuche mit dem Mouserad zu scrollen.. |
AW: Mausrad (mousewheel event ) in TFrame aktivieren
Aha, das tritt tatsächlich nur mit den Frame auf.
Wahrscheinlich ruft
Delphi-Quellcode:
immer wieder rekursiv
Control.DefaultHandler
Delphi-Quellcode:
auf.
TMainForm.MouseWheelHandler
Versuche mal ggf. diesen Ausdruck nach der if-Abfrage wegzulassen. Wenn unumgänglich, kannst du dir auch mit folgenden Workaround helfen. Die Klassen-Variable FEntered ist von Typ Boolean, also im private-Abschnitt des Formular anlegen.
Delphi-Quellcode:
procedure TMainForm.MouseWheelHandler(var AMessage: TMessage);
var Control: TWinControl; begin try if not FEntered then begin FEntered := True; Control := FindVCLWindow(SmallPointToPoint(TWMMouseWheel(AMessage).Pos)); if Assigned(Control) then begin AMessage.Result := Control.Perform(CM_MOUSEWHEEL, AMessage.WParam, AMessage.LParam); if AMessage.Result = 0 then Control.DefaultHandler(AMessage); end else inherited MouseWheelHandler(AMessage); end; finally FEntered := False; end; end; |
AW: Mausrad (mousewheel event ) in TFrame aktivieren
Vielen Dank!
Es kommt zwar kein Fehler mehr, funktioniert aber leider nicht :( |
AW: Mausrad (mousewheel event ) in TFrame aktivieren
Zitat:
|
AW: Mausrad (mousewheel event ) in TFrame aktivieren
Hallo!
Ich habe das gleiche Problem, und zwar das das Mausrad in einem TFrame nicht funktionert. Habe schon die angesprochenen Lösungen probiert, es kommt zwar keine Fehlermeldung aber das scrollen im Frame mit dem Mausrad funktioniert nicht.. (keine Reaktion auf das Mausrad) Villeicht weiss ja jemand noch eine Lösung ! Danke im voraus watumba |
AW: Mausrad (mousewheel event ) in TFrame aktivieren
Moin...:P
:dp: Willkommen hier.. Bitte ergänze dein Profil um die Delphi Version... Seit D1 hat sich einiges gändert. :P |
AW: Mausrad (mousewheel event ) in TFrame aktivieren
Sorry ! Version ist gleich wie bei decibel666:
Delphi Version 7 Enterprise und Windows 7 64Bit |
AW: Mausrad (mousewheel event ) in TFrame aktivieren
keiner einen Tipp ?
vielen Dank watumba |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:32 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