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 ttrackbar reagiert bei klcik und nicht nur beim dragen (https://www.delphipraxis.net/39179-ttrackbar-reagiert-bei-klcik-und-nicht-nur-beim-dragen.html)

keineahnung1 29. Jan 2005 21:42


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???

keineahnung1 30. Jan 2005 09:58

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:

Die Muhkuh 30. Jan 2005 10:23

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 ;).

keineahnung1 30. Jan 2005 10:31

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?

Die Muhkuh 30. Jan 2005 10:34

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^^.

keineahnung1 30. Jan 2005 10:40

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

edosoft 30. Jan 2005 10:44

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?

keineahnung1 30. Jan 2005 11:04

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

edosoft 30. Jan 2005 11:15

Re: ttrackbar reagiert bei klcik und nicht nur beim dragen
 
Zitat:

Zitat von keineahnung1
hmm nee des geht nicht, ich weiß garnicht wann des on change immer ausgelöst wird[..]

des geht recht einfach zu testen:
Delphi-Quellcode:
trackbar.Onchanche blabla
begin
beep;
end;
->jedes mal wenn der lautsprecher piept dann wars ein onchange.
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;

Khabarakh 30. Jan 2005 11:34

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: .

edosoft 30. Jan 2005 11:37

Re: ttrackbar reagiert bei klcik und nicht nur beim dragen
 
warum wird das dann schwieriger?

keineahnung1 30. Jan 2005 11:46

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?

Khabarakh 30. Jan 2005 11:55

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:
procedure TForm1.Timer1Timer(Sender: TObject);
var x: Integer;
begin
  x:=Random(TrackBar1.Max);
  OldPos:=x;
  TrackBar1.Position:=x;
end;
Allerdings frage ich mich, wann man es schafft, die Trackbar-Position genau zu treffen, wenn sich diese alle 300ms ändert :lol: .

edosoft 30. Jan 2005 12:29

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.

Khabarakh 30. Jan 2005 12:39

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.

keineahnung1 30. Jan 2005 13:40

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