AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Einstellung Scrollen Zeilen

Ein Thema von Ykcim · begonnen am 21. Mai 2014 · letzter Beitrag vom 26. Mär 2019
 
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: Einstellung Scrollen Zeilen

  Alt 22. Mai 2014, 00:35
Dazu deklarierst du dir erstmal einen Message-Handler als private Procedure:
Delphi-Quellcode:
PRIVATE { Private-Deklarationen }
  Procedure HandleOnMessage(var Msg: TMsg; var Handled: Boolean);
Danach erstellst du mit der Tastenkombination Shift-Strg-C den entsprechenden Procedure-Rumpf:
Delphi-Quellcode:
procedure TFormMain.HandleOnMessage(var Msg: TMsg; var Handled: Boolean);
begin

end;
Dort schreibst du nun hinein, wie mit der Message WM_MOUSEWHEEL umgegangen werden soll:
Delphi-Quellcode:
// ---------- Wandelt Mouse-Wheel-Bewegungen in Cursur-Runter bzw. Cursor-Hoch-Messages um (nur TjvDBGrid) ------------------------------
Procedure TFormMain.HandleOnMessage(var Msg: TMsg; var Handled: Boolean);
begin
  case Msg.message OF
   WM_MOUSEWHEEL:
   begin
      if (Screen.ActiveForm.ActiveControl <> nil)
      and
      (Screen.ActiveForm.ActiveControl.ClassName = 'TJvDBGrid') // TJvDBGrid ersetzen durch die gewünschte Komponente, z.B. TStringGrid
      then
      begin // die Mousewheel Message wird in einen Tastendruck umgewandelt
         Msg.message := WM_KEYDOWN;
         Msg.lParam := 0;
         if Msg.wParam > 0 then
            Msg.wParam := VK_UP else
            Msg.wParam := VK_DOWN;
         Handled := False;
      end;
   end; // WM_MOUSEWHEEL
  end; // case
end;
Nun mußt du nur noch die Messagebehandlung auf deine Procedure "umbiegen":
Delphi-Quellcode:
Procedure TFormMain.FormCreate(Sender: TObject);
begin
  Application.OnMessage := Self.HandleOnMessage; // Scrollrad to Cursor up + down
end;
Ab jetzt wird im gesamten Programm beim Scrollen in einem StringGrid immer nur eine Position weitergeschaltet, gerade so, als ob du mit den Hoch-Runter-Cursortasten navigieren würdest. All die Messages, die von deiner Procedure nicht erledigt werden, bleiben natürlich erhalten und geistern weiter durch die Weiten deines Windows, bis sie ihrem Schicksal begegnen (irgend einem anderen Message-Handler).

Geändert von Perlsau (22. Mai 2014 um 00:39 Uhr)
  Mit Zitat antworten Zitat
 


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:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz