Entwickler-Ecke
Multimedia / Grafik - Trackbar für Mediaplayer
Daniel_100 - Mo 28.07.03 17:03
Titel: Trackbar für Mediaplayer
Hallo!
Ich habe zu einem Mediaplayer eine Trackbar hinzugefügt, damit (gafisch) angezeigt wird, wieviel von einem Lied schon abgespielt wurde. Wenn man nun mit der Maus den Regler an der Trackbar verschiebt, soll das Lied dort weiter spielen, wo er dann
abgelegt wurde. Ich hab es schon mit folgendem Code für
TrackBar1Change probiert, aber dass klappt ja nicht, weil die Zeit immer weiter läuft und somit der Regler
bewegt wird:
Delphi-Quelltext
1:
| Trackbar1.position := mediaplayer1.position; |
Wie geht es denn dann?
Danke
Daniel
fcg - Mo 28.07.03 18:38
hi
versuchs doch mla umgekehrt ;-)
Delphi-Quelltext
1:
| MediaPlayer1.Position := TrackBar1.Position; |
müsste so eigentlich gehen...
fcg
Daniel_100 - Mo 28.07.03 19:35
| Zitat: |
| müsste so eigentlich gehen... |
Es müsste so gehen, tuts aber nicht.
Ich nehm jetzt mal so ein Beispiel:
Eine Dateiname ist vorhanden...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm1.Button1Click(Sender: TObject); begin mediaplayer1.Open; mediaplayer1.Play; trackbar1.Max := mediaplayer1.Length; timer1.enabled := true; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin trackbar1.Position := mediaplayer1.Position; end;
procedure TForm1.TrackBar1Change(Sender: TObject); begin MediaPlayer1.Position := TrackBar1.Position; mediaplayer1.play; end; |
Wenn ich auf den Button1 klicke, fängt das Lied zwar an zu spielen, macht aber nach jedem Intervall des Timers eine Pause. Und setzt dann mit
mediaplayer1.play; der Trackbar1 fort.
Da ist doch was faul?!? :autsch:
fcg - Mo 28.07.03 20:16
so schau mal hier. Der Code funzt bei mir 8ist getestet!!)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.onChange(Sender: TObject); begin MediaPlayer1.Position := TrackBar1.Position; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin Trackbar1.position := mediaplayer1.position; end;
procedure TForm1.Button1Click(Sender: TObject); begin MediaPLayer1.Play; TrackBar1.max := MediaPLayer1.Length; end; |
Der Klick aufn Button bewirkt halt das Absspielen, und das Timerintervall ist 1000 Millisekunden!
fcg
Daniel_100 - Mo 28.07.03 21:00
| Zitat: |
Delphi-Quelltext 1:
| procedure TForm1.onChange(Sender: TObject); | |
Der Compiler zeigt bei mir aber an, dass "onChange" und der darauffolgende MediaPLayer1 und TrackBar1 ein
"Undeclared identifier" ist.
derDoc - Mo 28.07.03 21:26
Das wird daran liegen, dass
TForm das Ereignis
OnChange nicht kennt.
Eigentlich müsste das
Delphi-Quelltext
1:
| procedure TForm1.TrackBar1Change(Sender: TObject); |
heißen.
Daniel_100 - Di 29.07.03 11:24
Bei mir funzt es immer noch nicht; Kannst du (oder jamand anders) mal den gesamten Code, samt
uses,
type u.s.w., posten.
Das wäre nett.
Hier ist mein
"falscher":
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, MPlayer, ExtCtrls, ComCtrls;
type TForm1 = class(TForm) Timer1: TTimer; MediaPlayer1: TMediaPlayer; Button1: TButton; TrackBar1: TTrackBar; procedure Timer1Timer(Sender: TObject); procedure Button1Click(Sender: TObject); procedure TrackBar1Change(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject); begin Trackbar1.position := mediaplayer1.position; end;
procedure TForm1.Button1Click(Sender: TObject); begin mediaplayer1.open; MediaPLayer1.Play; TrackBar1.max := MediaPLayer1.Length; end;
procedure TForm1.TrackBar1Change(Sender: TObject); begin MediaPlayer1.Position := TrackBar1.Position; end;
end. |
Danke
derDoc - Di 29.07.03 12:28
Hier ist mal der gesamte Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, MPlayer;
type TForm1 = class(TForm) MediaPlayer1: TMediaPlayer; TrackBar1: TTrackBar; Timer1: TTimer; Button1: TButton; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure TrackBar1Change(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin MediaPlayer1.Open; MediaPlayer1.Play; TrackBar1.Max := MediaPlayer1.Length; Timer1.Enabled := true; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin TrackBar1.Position := MediaPlayer1.Position; end;
procedure TForm1.TrackBar1Change(Sender: TObject); begin MediaPlayer1.Position := TrackBar1.Position; MediaPLayer1.Play; end;
end. |
Daniel_100 - Di 29.07.03 13:31
Bei dir funzt der Code wirklich :eyecrazy: ?!?!
Bei mir auf alle Falle immer noch nicht (nach jedem Intervall kurze Pause), obwohl ich den Code jetzt ganauso eingefügt hab, wie du es gepostet hast. :?!?:
Kannst du mir dann vielleicht dein Programm mailen, mit Projekt, wenns geht? :roll:
Danke
Terra23 - Di 29.07.03 13:51
@Daniel: Setz doch mal den Intervall des Timers auf "1". Vielleicht klappt's dann ja besser.
Daniel_100 - Di 29.07.03 18:05
Das hab ich schon probiert, dann kommen die Pausen ganz schnell hinternander und man hört garnichts mehr!
fcg - Mi 30.07.03 12:43
mit welcher Delphi Version arbeitest du denn??
Daniel_100 - Mi 30.07.03 13:35
Mit D7. Ich habs aber auch schon in D6 ausprobiert -> nichts anders.
Daniel_100 - Mi 30.07.03 13:57
Ebengrad hab ich es unter D3 getestet und da funzt es :shock: ! Was ist denn da anders? :!:
Terra23 - Mi 30.07.03 20:58
@Daniel: Versuch mal folgendes:
In der OnMouseDown-Prozedur des Trackbars, baust du ein, daß der MediaPlayer stoppen soll
und ins OnMouseUp-Ereignis des Trackbars baust du folgendes ein:
Delphi-Quelltext
1: 2:
| MediaPlayer1.Position:=Trackbar1.Position; MediaPlayer1.Play; |
Sag mir mal bitte, ob das funktioniert. Ich habe das mal eben so ausm Kopf überlegt. :-)
Daniel_100 - Do 31.07.03 09:59
Hallo und guten Morgen.
Das mit OnMousedown bzw. Onmouseup-Prozedur kann nicht funktionieren, da es doch überhaupt keine gibt.
Logiqu - Do 31.07.03 10:21
@daniel_100: gib mal deine e-mail-adresse, dann schicke ich dir mal ne trackbar mit mousedown- und mouse-up-funktion. die habe ich vor ein paar tagen mal schnell geschrieben, weil das problem schonmal hier im forum aufgetreten ist...
fcg - Do 31.07.03 10:56
@Daniel: ich hatte es auch mit Del3 gemacht... Aber kein plan warum das mit Del 6 bzw Del7 wieder mla nit geht...
fcg
Daniel_100 - Fr 01.08.03 15:42
@Logiqu: Ich hab jetzt "Zeige meine E-Mail-Adresse immer an" eingeschaltet. Kannst mir jetzt den Code schicken...
Logiqu - Mo 04.08.03 09:22
sorry, war das wochenende nicht zu hause, habe dir die komponente aber eben zugeschickt (von coolsven...)
kasi - Di 05.08.03 22:01
So geht es bei mit
Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.Timer1Timer(Sender: TObject); begin Trackbar1.OnChange := nil; trackbar1.Position := mediaplayer1.Position; TrackBar1.OnChange := TrackBar1Change; end; |
KASI
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!