AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TRichEdit Zoom deaktivieren

Ein Thema von dust258 · begonnen am 12. Apr 2013 · letzter Beitrag vom 12. Apr 2013
Antwort Antwort
dust258

Registriert seit: 18. Aug 2008
62 Beiträge
 
#1

TRichEdit Zoom deaktivieren

  Alt 12. Apr 2013, 13:54
Hallo Leute,
ich habe ein "kleines" Problem an dem ich schon ein paar Stunden sitze. Ich möchte das automatische Zoomen in einem Richedit (linke Maustaste + Mausrad) deaktivieren.

Es gibt keine Option dafür und das überschreiben der Methoden (OnMouseWheel) hat auch keinen Effekt.

Mein 2. Ansatz war es die WndProc in meiner Ableitung zu überschreiben:
Code:
procedure TRichEditSpellCheck.WndProc(var Message: TMessage);
const
  EM_SETZOOM = (WM_USER + 225);
begin
  if Message.Msg <> EM_SETZOOM then
    inherited;
end;
Das funktioniert leider nur zum Teil. Ein paar Messages werden abgefangen, aber nicht alle. So kann man durch wildes Klicken und Scrollen immer noch zoomen...

Hat Jemand eine Idee?
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#2

AW: TRichEdit Zoom deaktivieren

  Alt 12. Apr 2013, 19:29
Hallo,

Du könntest einen der beiden folgenden Wege gehen
Delphi-Quellcode:
type
  TRichEdit = class (Vcl.ComCtrls.TRichEdit)
  private
    procedure WMMouseWheel (var Msg : TWMMouseWheel); message WM_MOUSEWHEEL;
  end;

  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TRichEdit.WMMouseWheel (var Msg : TWMMouseWheel);
begin
  if not (ssShift in TCMMouseWheel (Msg).ShiftState) then
    inherited;

  Msg.Result := 0
end;
oder
Delphi-Quellcode:
type
  TRichEdit = class (Vcl.ComCtrls.TRichEdit)
  private
    procedure CMMouseWheel (var Msg : TMessage); message CM_MOUSEWHEEL;
  end;

  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TRichEdit.CMMouseWheel (var Msg : TMessage);
begin
  if Msg.WParamLo and MK_CONTROL = 0 then
    Msg.Result := 0
  else
    Msg.Result := 1
end;
Die erste Variante verhindert den Aufruf der Methode MouseWheelHandler (in TControl), die zweite wird von der Methode MouseWheelHandler angestoßen.

Vielleicht kannst Du es bei Dir in Deine TRichEditSpellCheck Klasse einbauen.

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 21:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf