![]() |
ttrackbar reagiert bei klcik und nicht nur beim dragen
hi pro's
also ich will das der onchange event von ttrackbar nur aufgerufen wir wenn man auch dragt und nicht blos wenn man irgendwo da rum klickt. Hab ihr da ne Lösung??? |
Re: ttrackbar reagiert bei klcik und nicht nur beim dragen
ups ich glaub des war nicht so eindeutig was ich will :lol:
also: Ich hab eine Ttrackbar, nun wir das onchange event ja auch ausgelöst wenn ich nur irgendwo auf der trackbar rumklick. Ich will aber den onchange event nur auslösen wenn er zeiger der trackbar auch wirklich verschoben wird. Wenn dies nicht geht , wäre es auch nicht schlecht wenn man einfach das klicken verbieten kann. Hat jetzt jemand ne idee :gruebel: |
Re: ttrackbar reagiert bei klcik und nicht nur beim dragen
Hi,
hab jetzt keine direkte Lösung, aber nen kleinen Vorschlag: Speichere die Position der Trackbar ab und wenn man wieder draufklick, überprüfe ob sich die Position verändert hat. Wenn ja, dann wurde gedraggt, wenn nicht, dann nich ;). |
Re: ttrackbar reagiert bei klcik und nicht nur beim dragen
hmm ja des hab ich mir auch schon überlegt, aber da gibts genau des problem dass sich die trackbar die ganze zeit bewegt, ist ja ein teil meines mediaplayers und die trackbar wir jede 300 ms mit nem timer aktuallisiert.
glaubst du des geht dann irgendwie mit der position abspeichern, wo sollt ich des dann am besten machen? |
Re: ttrackbar reagiert bei klcik und nicht nur beim dragen
Hi,
hmm, dann ist das natürlich schlecht. Wenn du die JVCL (von den Jedi's) hast, dann nimm diese Trackbar. Die hat ein OnMouseDown und ein OnMouseUp Event. Oder erstelle dir einen NAchfahren der TTrackbar und implementiere das OnMouse-Event selbst^^. |
Re: ttrackbar reagiert bei klcik und nicht nur beim dragen
okay des hört sich ja sehr gut an, aber wo bekomm ich diese jvcl her, dann installier ich mir die mal.
Edit :habs selber gefunden!!!!!!! danke |
Re: ttrackbar reagiert bei klcik und nicht nur beim dragen
öhm...
warum speicherst du dann nicht beim timer-positionsveränderer die aktuelle position und beim OnChange oder wie das heist einfach die position abfragen und gucken obs anders is? |
Re: ttrackbar reagiert bei klcik und nicht nur beim dragen
hmm nee des geht nicht, ich weiß garnicht wann des on change immer ausgelöst wird, aber ich hab jetzt die abfrage rein und des bringt trotzdem nix.
jvcl gibts nicht für mein extrem teueres delphi 2005 :( mal wida geld verschwendung hm dann bleibt wohl nurnoch das onmouse event selbst zu implementieren. aber da bräucht ich nun ein bischen hilfe, wie stell cihd enn sows an? hab da grad keine plan wie sowas geht :-) danke |
Re: ttrackbar reagiert bei klcik und nicht nur beim dragen
Zitat:
Delphi-Quellcode:
->jedes mal wenn der lautsprecher piept dann wars ein onchange.
trackbar.Onchanche blabla
begin beep; end; dann machste das so: ---
Delphi-Quellcode:
//ganz oben bei globalen variablen
var Form1: TForm1; {steht schon} iLastPos: Integer; //hinzufügen [blabla] procedure timer1timer begin ilastpos := 123; //oder sonst ein wert halt trackbar1.position := 123; end; procedure trackbar1change() begin if(trackbar1.position = ilastpos) then exit; //machwas end; |
Re: ttrackbar reagiert bei klcik und nicht nur beim dragen
@Edosoft: Das wird allerdings etwas schwer, wenn die Trackbar wie oben beschrieben alle 300ms vom Programm selbst verändert wird :wink: .
|
Re: ttrackbar reagiert bei klcik und nicht nur beim dragen
warum wird das dann schwieriger?
|
Re: ttrackbar reagiert bei klcik und nicht nur beim dragen
hmm des wird einfach nix :-(
ich hab jetzt mal des hier gemacht if(trackbar1.position = pos) then beep; aber beim klicken macht der totzdem nicht piep hmm kann mir vielelicht einer andere trackbars vorschlagen die einen mouseup mousedown event haben? |
Re: ttrackbar reagiert bei klcik und nicht nur beim dragen
Immer wenn, das Programm die Trackbar-Position verändert, wird ja auch das OnChange Event ausgelöst, du hörst in deinem Beispiel also alle 300ms einen Beep :wink: .
So müsste es gehen (als Beispiel):
Delphi-Quellcode:
Allerdings frage ich mich, wann man es schafft, die Trackbar-Position genau zu treffen, wenn sich diese alle 300ms ändert :lol: .
procedure TForm1.Timer1Timer(Sender: TObject);
var x: Integer; begin x:=Random(TrackBar1.Max); OldPos:=x; TrackBar1.Position:=x; end; |
Re: ttrackbar reagiert bei klcik und nicht nur beim dragen
wenn du beim teimer event die variable "lastpos" setzt und DANACH die trackbar position vestellst (trackbar.position := lastpos) dann (ich glaub der onchange evetn wird dan gqar nicht ausgeführt, falls doch:)wird doch im event verglichen "if(trackbar1.position=lastpos) then exit;" (exit bedeutet er bricht die funktion ab!) NICHT ausgeführt weil die neue position vom trackbar ist doch die gleiche als die variable lastpos.
|
Re: ttrackbar reagiert bei klcik und nicht nur beim dragen
Hups, ich habe gedacht, deine timer1timer Porcedure wäre TForm1Create :-D . Hat mich etwas verwirrt, dass du da feste Zahlen zuweißt, aber war ja nur ein Beispiel :duck: .
OnChange wird aber auch bei Zuweisung im Programm aufgerufen. |
Re: ttrackbar reagiert bei klcik und nicht nur beim dragen
so jetzt hab ich den trackbar durch ne progressbar ersetzt, und siehe da der hat auch ein onmouseup event. naja dann hab ich ncoh wahlweiße n paar application.progressmessages reingehauen, und nun gehts :bouncing4:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:49 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