AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TrackBar OnMouse Event????

Ein Thema von chros · begonnen am 17. Nov 2003 · letzter Beitrag vom 19. Nov 2003
Antwort Antwort
chros

Registriert seit: 17. Nov 2003
27 Beiträge
 
#1

TrackBar OnMouse Event????

  Alt 17. Nov 2003, 23:53
Hi!

Ich programmiere gerade an einen Mediaplayer und habe ein Problem.

Ich lasse über die Länge einer Datei eine Trackbar mitlaufen, das funktioniert auch.

Nur möchte ich jetzt durch verschieben des Trackbar reiters vor und zurück Spulen.

Da es nicht mit einem Trackbar onChange ereignis funktioniert wollte ich es mit einem Mousedown and up event versuchen nur gibt es das nicht. In der Delohi Hilfe steht das man KeyDown und Keyup auch die Maustasten abfragen kann, das funktioniert aber nicht.
Source:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Form1.MediaPlayer1.Mode = mpPlaying then //wenn der Player spielt soll er..
begin
Form1.TrackBar1.Max := Form1.MediaPlayer1.Length;//.. TrackbarMax auf die länge der Datei setzen ...
Form1.Trackbar1.Position := Form1.MediaPlayer1.Position;{.. und die Trackbar Position mit der des   Mediaplayers gleichsetzen}
end;
end;

procedure TForm1.TrackBar1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin {Wenn die Linke Maustaste gedrückt ist (auf der Trackbar) dann soll der Mediaplayer stoppen}
    if (Key=VK_LBUTTON) then
    begin
     Form1.MediaPlayer1.Stop;
    end;
end;

procedure TForm1.TrackBar1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin {Wenn die linke Maustaste wieder losgelassen wird soll der Mediaplayer die auf der Trackbar eingestellte Position übernehmen und anschließend wieder spielen}
    if (Key=VK_LBUTTON) then
    begin
    mediaplayer1.Position := TrackBar1.Position;
    MediaPLayer1.Play;
    end;
end;
Ps.: KeyPreview ist aktiviert.

Ich denke das es von der Logik her richtig ist, nur fehlt mir die Richtige Syntax.

Dieser Source bringt mir nur Exception Error:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Form1.MediaPlayer1.Mode = mpPlaying then //wenn der Player spielt soll er..
begin
Form1.TrackBar1.Max := Form1.MediaPlayer1.Length;//.. TrackbarMax auf die länge der Datei setzen ...
Form1.Trackbar1.Position := Form1.MediaPlayer1.Position;{.. und die Trackbar Position mit der des   Mediaplayers gleichsetzen}
end;
end;

procedure TForm1.Trackbar1Change(Sender: TObject);
begin
  Form1.mediaplayer1.stop;
  mediaplayer1.Position := TrackBar1.Position;
  Form1.mediaPLayer1.play;
end;


Kann mir da bitte wer weiter helfen.

Mfg chros

[edit=chros]Delphi-Tags eingefügt. Mfg, chros[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: TrackBar OnMouse Event????

  Alt 18. Nov 2003, 00:18
Da hatten wir schon mal so was gemacht:
reNamed: Umrechnungsprobleme bei Zeitanzeige von Sounddatei;

Kannst ja auch nochmal hier nachschauen: [dp]*player* *trackbar*[/dp]

Den Quellcode könnteste mal etwas lesbare machen (Delphi-Code))
Deinen Beitrag kannst du 24 Stunden lang noch bearbeiten (EDIT)
http://www.FrankNStein.de/DPCTag+Edit.jpeg

z.B.
Delphi-Quellcode:
Ein Delphi-Code
...
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
chros

Registriert seit: 17. Nov 2003
27 Beiträge
 
#3

Re: TrackBar OnMouse Event????

  Alt 18. Nov 2003, 16:10
Danke für den Tip! Aber das ist nicht das was ich brauche!

Das die Trackbar mit dem Lied mitläuft funktioniert ja einwandfrei. Mein Problem liegt darin das wenn ich das vor und zurückspielen in ein Trackbar on Change ereignis anwende bekomme ich einen Exception Error, da auch ein Change Event auftritt wenn der TMediaplayer die Trackbar ändert.

Darum wollte ich es mit einem OnMouseDown event und einem MouseUp event machen, dass es aber leider nicht gibt.

Darum habe ich gehofft das jemand eine andere Lösungsmöglichkeit hat?!

Mfg Chros
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#4

Re: TrackBar OnMouse Event????

  Alt 18. Nov 2003, 16:50
Hai chros,

Zitat von chros:
...da auch ein Change Event auftritt wenn der TMediaplayer die Trackbar ändert....
setze doch einfach im OnEnter-Ereigniss der Trackbar ein Flag auf True und führe deinen Code im OnChange nur aus wenn dieses gesetzt ist. Im OnExit setzt Du das Flag dann wieder auf FALSE.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: TrackBar OnMouse Event????

  Alt 18. Nov 2003, 16:50
Aus dem anderen Beitrag:
Delphi-Quellcode:
{Timer1.Interval := 300;} 
{TrackBar1.Max := MediaPlayer1.Length div 1000;} 

Procedure TForm1.Timer1Timer(Sender: TObject);
  Begin
    (* TrackBar-Position an die MediaPlayer-Position anpassen *) 
    TrackBar1.Position := MediaPlayer1.Position div 1000;
  End;

Procedure TForm1.TrackBar1Change(Sender: TObject);
  Var TBP, MPP: Integer;

  Begin
    TBP := TrackBar1.Position;
    MPP := MediaPlayer1.Position div 1000;
    (* MediaPlayer-Position an die TrackBar-Position anpassen, *
     * wenn der Unterschied grösser als 2 Sekunden ist         *)
 
    If ABS(TBP - MPP) > 2 Then MediaPlayer1.Position := TBP * 1000;
  End;
Wie du dort sehen wirst, hab ich diese Problem durch eine kleine Abrage gelöst.
If ABS(TBP - MPP) > 2 Then Dadurch wird die MediaPlayer-Position nur bei einer grösseren Änderung (> 2 Sekunden) geändert.


Alternativ währe auch der Einsatz einer zusätzlichen Variable möglich.

Delphi-Quellcode:
{Timer1.Interval := 300;} 
{TrackBar1.Max := MediaPlayer1.Length div 1000;} 

Var setzen: Boolean = True; {*}

Procedure TForm1.Timer1Timer(Sender: TObject);
  Begin
    setzen := False; {*}
    TrackBar1.Position := MediaPlayer1.Position div 1000;
    setzen := True; {*}
  End;

Procedure TForm1.TrackBar1Change(Sender: TObject);
  Var TBP, MPP: Integer;

  Begin
    If setzen Then Exit; {*}
    TBP := TrackBar1.Position;
    MPP := MediaPlayer1.Position div 1000;
    If ABS(TBP - MPP) > 2 Then MediaPlayer1.Position := TBP * 1000;
  End;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
chros

Registriert seit: 17. Nov 2003
27 Beiträge
 
#6

Re: TrackBar OnMouse Event????

  Alt 19. Nov 2003, 08:50
Danke Himitsu, hat wunderbar funktioniert.

Auf die Idee mit den 2 Sekunden muß man mal kommen!!! Einfach genial!

Mfg chros
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:39 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