TSpinEdit Mausrad abschalten

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
KOBOLD Messring GmbH
Beiträge: 155
Registriert: Mi 22. Aug 2007, 14:52
OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 65719 Hofheim am Taunus
Kontaktdaten:

TSpinEdit Mausrad abschalten

Beitrag von KOBOLD Messring GmbH »

Hallo, ich habe eine Frage bezüglich der SpinEdit und FloatSpinEdit-Komponente. Steht der Mauszeiger auf diesen Komponenten in einer Form, kann man mit dem Scrollrad die Werte verändern. Dies mag zwar zuweilen recht angenehm sein, ist aber manchmal auch fatal.
Wie kann man das abschalten, ich habe keine Möglichkeit dazu gefunden.
Vielen Dank schon mal im Voraus für Eure Hilfe

Nouba
Beiträge: 4
Registriert: Do 14. Apr 2011, 02:51

Re: TSpinEdit Mausrad abschalten

Beitrag von Nouba »

Hallo,

Du kannst jeweils eine Klasse der beiden Steuerelemente ableiten und die Eigenschaft OnMouseWheel veröffentlichen.

Code: Alles auswählen

unit uSampleForm;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Spin;
 
type
 
  { TNoWheelSpinEdit }
 
  TNoWheelSpinEdit = class(TSpinEdit)
  published
    property OnMouseWheel;
  private
    procedure DisableSpinning(Sender: TObject; Shift: TShiftState;
      WheelDelta: integer; MousePos: TPoint; var Handled: boolean);
  end;
 
  { TNoWheelFloatSpinEdit }
 
  TNoWheelFloatSpinEdit = class(TFloatSpinEdit)
  published
    property OnMouseWheel;
  private
    procedure DisableSpinning(Sender: TObject; Shift: TShiftState;
      WheelDelta: integer; MousePos: TPoint; var Handled: boolean);
  end;
 
  { TSampleForm }
 
  TSampleForm = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
    FNWSpinEdit: TNoWheelSpinEdit;
    FNWFSpinEdit: TNoWheelFloatSpinEdit;
  end;
 
var
  SampleForm: TSampleForm;
 
implementation
 
{ TNoWheelFloatSpinEdit }
 
procedure TNoWheelFloatSpinEdit.DisableSpinning(Sender: TObject;
  Shift: TShiftState; WheelDelta: integer; MousePos: TPoint;
  var Handled: boolean);
begin
  {** disable Spinning with Mouse Wheel**}
  Handled := True;
end;
 
{ TNoWheelSpinEdit }
 
procedure TNoWheelSpinEdit.DisableSpinning(Sender: TObject;
  Shift: TShiftState; WheelDelta: integer; MousePos: TPoint;
  var Handled: boolean);
begin
  {** disable Spinning with Mouse Wheel**}
  Handled := True;
end;
 
{$R *.lfm}
 
{ TSampleForm }
 
procedure TSampleForm.FormCreate(Sender: TObject);
begin
  FNWSpinEdit := TNoWheelSpinEdit.Create(Self);
  with FNWSpinEdit do
  begin
    Left := 8;
    Top := 8;
    Width := 50;
    Height := 23;
    Parent := Self;
    OnMouseWheel := @DisableSpinning;
  end;
 
  FNWFSpinEdit := TNoWheelFloatSpinEdit.Create(Self);
  with FNWFSpinEdit do
  begin
    Left := 64;
    Top := 8;
    Width := 50;
    Height := 23;
    Parent := Self;
    OnMouseWheel := @DisableSpinning;
  end;
end;
 
end.
Grüße Nouba

KOBOLD Messring GmbH
Beiträge: 155
Registriert: Mi 22. Aug 2007, 14:52
OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 65719 Hofheim am Taunus
Kontaktdaten:

Re: TSpinEdit Mausrad abschalten

Beitrag von KOBOLD Messring GmbH »

Vielen Dank Nouba, werde ich gleich ausprobieren!

Antworten