Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Probleme mit Trackbar/Timer bei MP3 Player (https://www.delphipraxis.net/114149-probleme-mit-trackbar-timer-bei-mp3-player.html)

phAb 20. Mai 2008 16:02


Probleme mit Trackbar/Timer bei MP3 Player
 
Hallo liebe Programmierfreunde :)

Ich beschäftige mich seit einigen Tagen mit Delphi und bastel an einem MP3 Player rum.
Seit ich mich an die Trackbar gewagt habe und mit OpenDialog rumexperimentiert habe klappt nichtsmehr so richtig :\
Ich kann mit dem Button "Hinzufügen" zwar MP3s laden und abspielen, aber der "Stop" Button klappt nichtmehr. Auch mein Timer für die Trackbar habe ich ausgeschaltet, weil die Trackbar beim Starten ans Ende springt und ich ein Fehlermeldung (irgendwas mit MCI-Gerät) erhalte.
Also hier der Quellcode (nicht lachen plz, bin erst seit 2 tagen dran :D):

Code:
unit mp3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, MPlayer, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    TrackBar1: TTrackBar;
    MediaPlayer1: TMediaPlayer;
    Timer1: TTimer;
    ListBox1: TListBox;
    Button5: TButton;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
  private

  public
    var running:boolean;
   end;
var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

if Button1.Caption='Play' then
  if running=true then
    begin
    Mediaplayer1.Resume;
    Button1.caption:='Pause';
    end
  else
    begin
    Mediaplayer1.Open;
    Mediaplayer1.Play;
    Button1.caption:='Pause';
    running:=true;
    end
else
  begin
  Mediaplayer1.Pause;
  Button1.caption:='Play';
  end;


end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Mediaplayer1.stop;
end;



procedure TForm1.Button5Click(Sender: TObject);
begin
Opendialog1.execute;
Mediaplayer1.Filename:=Opendialog1.FileName;
Mediaplayer1.Open;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Trackbar1.Position:=Mediaplayer1.Position;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
Trackbar1.Max:=Mediaplayer1.TrackLength[0];
end;

end.

mfg phAb

EDIT: Naja, wie gesagt, der Timer spinnt, also klappt auch die Trackbar nich :) Naja und mein Stop-Button (Button2) klappt aufeinmal nicht mehr :(

angos 20. Mai 2008 16:07

Re: Blutiger MP3-Player Anfänger
 
Hi,

und herzlich willkommen in der :dp:
und was genau möchtest du jetzt wissen?


gruß
angos

SirThornberry 20. Mai 2008 16:08

Re: Blutiger MP3-Player Anfänger
 
Hallo phAb :dp: Herzlich Willkommen in der DP

könntest du dem Beitrag bitte einen aussagekräftigen Titel geben der dein Problem ansatzweise beschreibt? Klicke dazu einfach über dem Beitrag auf http://www.delphipraxis.net/template.../icon_edit.gif

bluesbear 20. Mai 2008 16:34

Re: Probleme mit Trackbar/Timer bei MP3 Player
 
Hallo phAb,
guck doch mal in der Hilfe, wann das OnChange Ereignis eines TTrackbar aufgerufen wird. Ich rate jetzt mal, daß da der Hund begraben liegt. Auf welches Zeitintervall hast du denn den Timer eingestellt?

Neutral General 20. Mai 2008 16:54

Re: Probleme mit Trackbar/Timer bei MP3 Player
 
Hi,

Du musst es so machen:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  TrackBar1.OnChange := nil;
  Trackbar1.Position := Mediaplayer1.Position;
  TrackBar1.OnChange := Trackbar1.Change;
end;
, da sonst bei der Zuweisung der Position das Trackbar OnChange aufgerufen wird, was das chaos anrichtet ;)

Gruß
Neutral General

phAb 20. Mai 2008 19:18

Re: Probleme mit Trackbar/Timer bei MP3 Player
 
danke für die flotte hilfe neutral general :)

meine trackbar läuft soweit, und meine listbox nimmt sogar mehrere items auf :D
aber schon häng ich wieder fest:
ich versuche grade makierte Items abzuspielen.
naja, mein erster einfall war den quellcode von meinem playbutton zu ändern.

Code:
procedure TForm1.Button1Click(Sender: TObject);
var pos:integer;
begin

if Button1.Caption='Play' then
  if running=true then
    begin
    Mediaplayer1.Resume;
    Button1.caption:='Pause';
    end
  else
    begin
    pos:=Listbox1.ItemIndex;
    Mediaplayer1.FileName:=Listbox1.Items[pos];
    Mediaplayer1.Open;
    Mediaplayer1.Play;
    Button1.caption:='Pause';
    running:=true;
    end
else
  begin
  Mediaplayer1.Pause;
  Button1.caption:='Play';
  end;


end;
Problem is das es nich klaptt^^ Also es wird immernoch das lied abgespielt was per opendialog ausgewählt wurden.
Ich weiß ich bin ziemlich unkreativ und was besseres fällt mir nich ein. Hab auch in der Hilfe über Listbox.Items nachgelesen, hat mir aber nich wirklich geholfen :(

mfg pHAB


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 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