AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Mausrad (mousewheel event ) in TFrame aktivieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mausrad (mousewheel event ) in TFrame aktivieren

Ein Thema von decibel666 · begonnen am 22. Okt 2015 · letzter Beitrag vom 2. Sep 2016
Antwort Antwort
Seite 1 von 2  1 2      
decibel666

Registriert seit: 27. Okt 2012
10 Beiträge
 
#1

Mausrad (mousewheel event ) in TFrame aktivieren

  Alt 22. Okt 2015, 19:44
Delphi-Version: 7
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
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Mausrad (mousewheel event ) in TFrame aktivieren

  Alt 23. Okt 2015, 09:48
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.
  Mit Zitat antworten Zitat
decibel666

Registriert seit: 27. Okt 2012
10 Beiträge
 
#3

AW: Mausrad (mousewheel event ) in TFrame aktivieren

  Alt 24. Okt 2015, 12:15
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..
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Mausrad (mousewheel event ) in TFrame aktivieren

  Alt 26. Okt 2015, 09:26
Aha, das tritt tatsächlich nur mit den Frame auf.

Wahrscheinlich ruft Control.DefaultHandler immer wieder rekursiv 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;
  Mit Zitat antworten Zitat
decibel666

Registriert seit: 27. Okt 2012
10 Beiträge
 
#5

AW: Mausrad (mousewheel event ) in TFrame aktivieren

  Alt 2. Nov 2015, 16:54
Vielen Dank!

Es kommt zwar kein Fehler mehr, funktioniert aber leider nicht
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Mausrad (mousewheel event ) in TFrame aktivieren

  Alt 3. Nov 2015, 09:45
...funktioniert aber leider nicht
Welcher von den zwei angesprochenden Lösungen denn genau?
  Mit Zitat antworten Zitat
watumba

Registriert seit: 24. Aug 2016
3 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Mausrad (mousewheel event ) in TFrame aktivieren

  Alt 24. Aug 2016, 10:40
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
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#8

AW: Mausrad (mousewheel event ) in TFrame aktivieren

  Alt 24. Aug 2016, 10:47
Moin...

Willkommen hier..

Bitte ergänze dein Profil um die Delphi Version... Seit D1 hat sich einiges gändert.
  Mit Zitat antworten Zitat
watumba

Registriert seit: 24. Aug 2016
3 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: Mausrad (mousewheel event ) in TFrame aktivieren

  Alt 24. Aug 2016, 11:12
Sorry ! Version ist gleich wie bei decibel666:

Delphi Version 7 Enterprise und Windows 7 64Bit
  Mit Zitat antworten Zitat
watumba

Registriert seit: 24. Aug 2016
3 Beiträge
 
Delphi 7 Enterprise
 
#10

AW: Mausrad (mousewheel event ) in TFrame aktivieren

  Alt 1. Sep 2016, 21:45
keiner einen Tipp ?

vielen Dank
watumba
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:53 Uhr.
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