Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Mausrad (mousewheel event ) in TFrame aktivieren (https://www.delphipraxis.net/187041-mausrad-mousewheel-event-tframe-aktivieren.html)

decibel666 22. Okt 2015 18:44

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

TiGü 23. Okt 2015 08:48

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.

decibel666 24. Okt 2015 11:15

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..

TiGü 26. Okt 2015 08:26

AW: Mausrad (mousewheel event ) in TFrame aktivieren
 
Aha, das tritt tatsächlich nur mit den Frame auf.

Wahrscheinlich ruft
Delphi-Quellcode:
Control.DefaultHandler
immer wieder rekursiv
Delphi-Quellcode:
TMainForm.MouseWheelHandler
auf.
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;

decibel666 2. Nov 2015 15:54

AW: Mausrad (mousewheel event ) in TFrame aktivieren
 
Vielen Dank!

Es kommt zwar kein Fehler mehr, funktioniert aber leider nicht :(

TiGü 3. Nov 2015 08:45

AW: Mausrad (mousewheel event ) in TFrame aktivieren
 
Zitat:

Zitat von decibel666 (Beitrag 1320357)
...funktioniert aber leider nicht :(

Welcher von den zwei angesprochenden Lösungen denn genau?

watumba 24. Aug 2016 09:40

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

haentschman 24. Aug 2016 09:47

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

watumba 24. Aug 2016 10:12

AW: Mausrad (mousewheel event ) in TFrame aktivieren
 
Sorry ! Version ist gleich wie bei decibel666:

Delphi Version 7 Enterprise und Windows 7 64Bit

watumba 1. Sep 2016 20:45

AW: Mausrad (mousewheel event ) in TFrame aktivieren
 
keiner einen Tipp ?

vielen Dank
watumba


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz