Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Steuerung der Scroll Mouse (https://www.delphipraxis.net/28632-steuerung-der-scroll-mouse.html)

alfred 27. Aug 2004 09:47


Steuerung der Scroll Mouse
 
Hallo Leute,

ich habe ein Formular mit einem vertikalen Scroll - Balken. Auf dem Formular befinden sich eine ganze Menge ComboBoxen. Wenn ich das Scroll - Rad der Muse betätige, dann wird der Fokus den Boxen in der Tabulatorreihenfolge zugewiesen. In der letzten, angezeigten Box bleibt der Fokus stehen und die Scroll - Funktion blättert in den Items der Box. Gibt es eine Möglichkeit, dass die Scrollfunktion des Mouse - Rades nur das Scrollen des Formulares hoch oder runter bewirkt. Also dass beim Scrollen nicht die Komponenten des Formulares betrofeen sind.
Ich hoffe, dass ich das verständlich formuliert habe.

Vielen Dank im voraus.

Gruß alfred :witch:

FastJack2 27. Aug 2004 10:08

Re: Steuerung der Scroll Mouse
 
Hy,

klar gibt es die Möglichkeit ;)
leite dir eine Klasse von der Combobox ab und fange die Mouswheel message ab.
die dann einfach an deine Form weiterleiten und fertig ;)

greetz
-FastJack2

DP-Maintenance 27. Aug 2004 18:54

DP-Maintenance
 
Dieses Thema wurde von "Christian Seehase" von "Windows 9x / ME / 2000 / XP / 2003" nach "VCL-Komponenten und Controls" verschoben.
Ein Delphi Problem

alfred 30. Aug 2004 06:42

Re: Steuerung der Scroll Mouse
 
Hi Leute.

Der von FastJack vorgeschlagene Weg ist sicher theortisch machbar. Ich habe aber eine andere Variante gewählt, die mir als günstiger erscheint. Im Forum existiert ein Artikel von APP. Der wiederum zitiert einen Artikel von Peter Below - und genau der ist die Basis für die Lösung. Nach Herausnahme des Bezuges zu einer konkreten Komponente ergibt sich der folgende Code :

Delphi-Quellcode:
procedure TFormularname.FormMouseWheel(Sender: TObject; Shift: TShiftState;
                                   WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
Var msg, code : Cardinal;
    i, n     : Integer;
begin
  Handled := true;
  If ssShift In Shift Then msg := WM_HSCROLL Else msg := WM_VSCROLL;
  If WheelDelta < 0 Then code := SB_LINEUP Else code := SB_LINEDOWN;
  n:= Mouse.WheelScrollLines;
  For i:= 1 to n Do
    Formularname.Perform( msg, code, 0 );
  Formularname.Perform( msg, SB_ENDSCROLL, 0 );
end;
So sollte es gehen.

Gruß alfred


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:13 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