Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Trackbar verschieben (https://www.delphipraxis.net/215285-trackbar-verschieben.html)

juelin 6. Jun 2024 16:28

Trackbar verschieben
 
Hallo,
ich habe Windows 10 und Delphi 11.2.
In einem Programm habe ich eine TrackBar.
Nun gibt es beiden Events der TrackBar leider kein OnMouseDown und OnMouseUp.
Ich möchte aber, das solange der Schieber der TrackBar verschoben wird (linke Maustaste ist gedrückt)
in der Prozedure OnChange der TrackBar keine Aktion ausführen.
Habe schon hier im Forum geschaut, aber nichts passendes gefunden.
Also nochmal: ich will wissen, wenn die Maustaste auf dem Schieberegler gedrückt ist.
Kann mir da jemand helfen, am liebstem mit Beispiel-Source.
Danke und Gruß
Jürgen

himitsu 6. Jun 2024 16:55

AW: Trackbar verschieben
 
Delphi-Quellcode:
// OnChange ... hier ginge es auch, aber du bekommst das Ende nicht mit
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  Memo1.Lines.Add('Change ' + TrackBar1.Position.ToString);
end;

// OnTracking (prinzipiell weiß die Trackbar davon, da sie sich im Windows 11 grau malt, aber k.A. ob und wie man diesen Status abfragen könnte)
procedure TForm1.TrackBar1Tracking(Sender: TObject);
begin
  if (GetKeyState(VK_LBUTTON) < 0) {or (GetKeyState(VK_LEFT) < 0) or (GetKeyState(VK_RIGHT) < 0)} then // auch VK_UP und VK_DOWN
    Memo1.Lines.Add('Tracking ' + TrackBar1.Position.ToString + ' MOVING')
  else
    Memo1.Lines.Add('Tracking ' + TrackBar1.Position.ToString);
end;
Bewegen mit den Pfeiltasten? :wink:


Vielleicht auch nur einmal GetKeyboardState anstatt mehrerer GetKeyState ... k.A. was schneller/einfacher ist.

juelin 6. Jun 2024 18:33

AW: Trackbar verschieben
 
Hallo Himitsu,
danke für Deine Antwort.
Die Lösung klappt aber leider nicht.
Delphi-Quellcode:
procedure TForm1.TrackBar1Tracking(Sender: TObject);
begin
    if (GetKeyState(VK_LEFT) < 0) then
    begin
.........
Der Wert von GetKeyState(VK_LEFT) ist immer 0,
egal ob ich die linke Maustaste gedrückt habe oder nicht.
Was stimmt nicht?
Gruß
Jürgen

himitsu 6. Jun 2024 18:36

AW: Trackbar verschieben
 
VK_LEFT ist die Links-Taste auf der Tastatur.

VK_LBUTTON ist die "linke" Taste auf der Maus. (oder die Rechte, wenn Layout gedreht)



Rate mal, warum dieser Teil des Codes erstmal auskommentiert war? :zwinker:
Abhängig von der Frage, welche darunter gestellt wurde. :angle2:

Gausi 7. Jun 2024 10:08

AW: Trackbar verschieben
 
Eine andere Möglichkeit wäre es, eine eigene Trackbar-Komponente abzuleiten, bei der die beiden Events published sind, z.B. so:
https://github.com/DanielGausi/Nemp/...mpTrackbar.pas


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 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 by Thomas Breitkreuz