MouseWheel Methoden überschreiben

Rund um die LCL und andere Komponenten

MouseWheel Methoden überschreiben

Beitragvon siro » 22. Sep 2017, 10:30 MouseWheel Methoden überschreiben

Hallo zusammen,
ich möchte meiner Komponente zusätzliche Funktionalität für das Mausrad hinzufügen.
Leider scheitere ich daran, daß ich die MouseWheel Methoden nicht überschrieben bekomme,
da es diese anscheinend garnicht gibt.

Zum Verständnis, dieser minimalistische Code:
Code: Alles auswählen
 
Type TTestComp = class(TCustomControl)
  protected
    procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
    procedure MouseUp  (Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
 
 
    procedure MouseWheel    (Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);  override;    // PROBLEME
//    procedure MouseWheelDown(Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); override;
//    procedure MouseWheelUp  (Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); override;
 
  public
    property OnMouseMove;
    property OnMouseDown;
    property OnMouseUp;
 
    property OnMouseWheel;
    property OnMouseWheelDown;
    property OnMouseWheelUp;
end;
 
procedure TTestComp.MouseMove(Shift: TShiftState; X, Y: Integer);
begin
end;
 
procedure TTestComp.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
end;
 
procedure TTestComp.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
end;
 
procedure TTestComp.MouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
end;                         


There is no method in an ancestor class to be overriden :

Da ich mit "property" die Ereignisse im Objectinspector veröffentlichen kann, gibt es die Methoden ja.
Aber wie kann ich die in meiner Komponente Überschreiben ?

Damit mein Wochenende gerettet werden kann, würde ich mich über jeden Hinweis freuen.... :wink:

Siro
Grüße von Siro
"C" verCehnfacht die Entwicklungszeit...
siro
 
Beiträge: 222
Registriert: 23. Aug 2016, 13:25
Wohnort: Berlin
OS, Lazarus, FPC: Windows 7 Windows 8.1 Windows 10 | 
CPU-Target: 64Bit
Nach oben

Beitragvon siro » 22. Sep 2017, 12:37 Re: MouseWheel Methoden überschreiben

Ich habe jetzt die Message vom Mausrad abgefangen und dann den Tastenstatus selbst abgefragt, das geht genauso gut.
Wenn jemand eine andere Lösung hat, würde ich mich aber auch sehr freuen.

Code: Alles auswählen
protected
    procedure WMMouseWheel(var Message: TLMMouseEvent); message LM_MOUSEWHEEL;
 
procedure TTestComp.WMMouseWheel(var Message: TLMMouseEvent);
var shift:TShiftState;
begin
  shift:=GetKeyShiftState;  // Tastenstatus holen
    if Message.WheelDelta < 0 // auswerten ob Scrollrad nach oben oder unten bewegt wird.
 
    // weiterer code...
 
  inherited;
end;
 


funktioniert SUPER, bin total begeistert..
Grüße von Siro
"C" verCehnfacht die Entwicklungszeit...
siro
 
Beiträge: 222
Registriert: 23. Aug 2016, 13:25
Wohnort: Berlin
OS, Lazarus, FPC: Windows 7 Windows 8.1 Windows 10 | 
CPU-Target: 64Bit
Nach oben

• Themenende •

Zurück zu Komponenten und Packages



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried