AGB  ·  Datenschutz  ·  Impressum  







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

TTrackBar großschrittig auslesen

Ein Thema von TForm1 · begonnen am 17. Jan 2015 · letzter Beitrag vom 17. Jan 2015
Antwort Antwort
TForm1

Registriert seit: 11. Jan 2014
128 Beiträge
 
FreePascal / Lazarus
 
#1

TTrackBar großschrittig auslesen

  Alt 17. Jan 2015, 18:35
Hallo,
gibt es eine Möglichkeit, eine TTrackBar so auszulesen, dass sie nur dann ein Ereignis wirft, wenn sie die ganzzahligen Positionen erreicht? OnChange ist mir zu kleinschrittig, da schon bei jeder kleinsten Mausbewegung das Event auslöst, sodass ich wenn ich den Zeiger um nur eine Einheit verschiebe, das Event bereits 20 mal aufgerufen wurde.
Gibt es so etwas oder muss ich mir da selbst was zusammenbasteln? Sowas wie if alteposition <> neueposition then machwas ?
Der Fehler sitzt immer vor dem Computer...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#2

AW: TTrackBar großschrittig auslesen

  Alt 17. Jan 2015, 19:46
Warum verkleinerst du nicht einfach den Wertebereich?

Max div 2 und schon sind es "größere" Schritte.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#3

AW: TTrackBar großschrittig auslesen

  Alt 17. Jan 2015, 20:45
Delphi-Quellcode:
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
case TrackBar1.Position of
1: Winapi.Windows.Beep(1000,50);
5: Winapi.Windows.Beep(1200,50);
10: Winapi.Windows.Beep(1500,50);
end;
end;
  Mit Zitat antworten Zitat
TForm1

Registriert seit: 11. Jan 2014
128 Beiträge
 
FreePascal / Lazarus
 
#4

AW: TTrackBar großschrittig auslesen

  Alt 17. Jan 2015, 21:31
Warum verkleinerst du nicht einfach den Wertebereich?
Wie meinst Du das mit dem Wertebereich? Die Größe des Wertebereiches der Trackbar scheint ja keine Auswirkungen auf die Art und Weise zu haben, wann OnChange ausgelöst wird. Eher die Art und Weise der Mausbewegung, d.h. immer wenn die Maus auch nur um ein Pixel verschoben wird, wird das Event ausgelöst. Ich schätze mal, das hat mit der Zeichenoperation innerhalb der Komponente zu tun.

@hathor: Das Problem besteht darin, dass egal, wie die Position konkret abgefragt wird, das Event immer mehrmals aufgerufen wird, ohne dass sich die Position geändert hätte. Ich denke mal, die sinnvollste Lösung ist es dann einfach zu prüfen, ob sich die Position des Zeigers geändert hat oder nicht und wenn ja, dann mit der neuen Position die Information weiter zu verarbeiten.

PS: Ach so. Die Positionen sind bei meiner TrackBar immer ganzzahlig (ich weiß nicht ob man das noch anders einstellen kann) und daher sind auch keine Dezimalwerte zur Abfrage möglich.
Der Fehler sitzt immer vor dem Computer...

Geändert von TForm1 (17. Jan 2015 um 21:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#5

AW: TTrackBar großschrittig auslesen

  Alt 17. Jan 2015, 22:13
Nee, die Größe hat keine Auswirkung, aber wenn du sowieso nur die ganzen Zahlen willst, dann kann man doch locker die Ungeaden einfach weg lassen.


Ich finde es nicht mehr, aber mir was so, als wenn die TrackBar und Scrollbar (von Windows) eigentlich auch den Modus kennt, wo das Change-Ereignisse erst beim Loslassen der Maustaste ausgelöst wird.

Ansonsten kann man das selber machen
* Timer starten und das Ereignis erst auswerten nach Zeitablauf
* oder auf die gerückte Maustaste reagieren, aber was ist, wenn man nicht die Maus zum Bedienen benutzt...
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
TForm1

Registriert seit: 11. Jan 2014
128 Beiträge
 
FreePascal / Lazarus
 
#6

AW: TTrackBar großschrittig auslesen

  Alt 17. Jan 2015, 22:46
Ich finde es nicht mehr, aber mir was so, als wenn die TrackBar und Scrollbar (von Windows) eigentlich auch den Modus kennt, wo das Change-Ereignisse erst beim Loslassen der Maustaste ausgelöst wird.
Da ich mit Lazarus auf Mac kompiliere, kann ich dazu nichts sagen, aber eigentlich sollte es da doch keinen Unterschied zwischen Mac und Windows geben, oder? Ist aber auch egal da ich jetzt mit der Abfrage nach der Positionsänderung sehr gut klar komme.
Der Fehler sitzt immer vor dem Computer...
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:57 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