Einzelnen Beitrag anzeigen

Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Sender:Tobject - Sender is Benutzer

  Alt 8. Mär 2008, 21:10
Das OnChange Event wird ausgelöst, wenn sich die Position ändert. Dies passiert unabhängig ob das manuell vom Benutzer gemacht wird, oder via Code durch Setzen der Position Eigenschaft. Der Sender im OnChange Event hat aber nix damit zu tun, sondern gibt ledilich das Objekt zurück, das das Ereignis ausgelöst hat. Und das ist in beiden Fällen die Trackbar Instanz, die geändert wurde. Damit wird lediglich ermöglicht, den gleichen Eventhandler für unterschiedliche Trackbars zu nutzen, sprich, den Code nicht doppelt zu schreiben, wenn analoges passieren soll.

Die OnMouseDown/Up Events kannst du getrost vergessen, da die Position auch über die Tastatur geändert werden kann, wenn das Control den Fokus hat.

Genau dein Problem finde ich ist eins von den Dingen, die in allen IDE Umgebungen ziemlich schlecht gelöst sind. Es bleibt in der Tat nur der Weg, über eine Zwischenvariable zu testen, ob die Position über Code oder vom Benutzer verändert wurde. Anders als BUG würde ich das aber nicht über eine globale oder Formvariable lösen, sondern über eine Eigenschaft der Trackbar selbst. Da bietet sich allerdings nur die Property Tag an. Das hat den Vorteil, dass der Trick auch bei mehreren Trackbar Instanzen funktioniert.
  Mit Zitat antworten Zitat