Gå til innhold

Anbefalte innlegg

Hei jeg har laget en mp3 spiller som jeg vil ha en playlist på, jeg har fått til sånn at du må trykke neste og forrige men ikke sånn at neste sang kommer automatisk når en sang er ferdig, vet noen hvordan jeg skal få til det??

 

dette er koden jeg har brukt

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, MPlayer;

 

type

TForm1 = class(TForm)

OpenDialog1: TOpenDialog;

MediaPlayer1: TMediaPlayer;

ListBox1: TListBox;

Open: TButton;

Play: TButton;

Forrige: TButton;

Neste: TButton;

Stopp: TButton;

Label1: TLabel;

Button1: TButton;

SaveDialog1: TSaveDialog;

Button2: TButton;

OpenDialog2: TOpenDialog;

Button3: TButton;

procedure OpenClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure PlayClick(Sender: TObject);

procedure StoppClick(Sender: TObject);

procedure NesteClick(Sender: TObject);

procedure ForrigeClick(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure ListBox1Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

Sang:Integer;

Antall:Integer;

implementation

Uses regftyp;

{$R *.dfm}

 

procedure TForm1.OpenClick(Sender: TObject);

begin

if opendialog1.Execute then

begin

Listbox1.Items.Add(opendialog1.FileName);

play.Enabled:=true;

Antall:=Listbox1.Count;

button1.Enabled:=True;

if antall>1 then

Neste.Enabled:=True;

end;

end;

 

procedure TForm1.FormCreate(Sender: TObject);

var

f:TextFile;

Mappe : string;

begin

Sang:=0;

GetDir(0,Mappe); { 0 = Current drive }

AssignFile(f, ExtractFilePath(Application.ExeName)+'test.abc');

Rewrite(f);

writeln(f, Mappe+'test.mp3');

closeFile(f);

RegisterFileType('.abc', 'Mp3 spilleliste', 'Trrunde', '', Application.ExeName);

 

 

end;

 

procedure TForm1.PlayClick(Sender: TObject);

begin

Mediaplayer1.FileName:=Listbox1.Items[sang];

Mediaplayer1.Open;

Mediaplayer1.Play;

Stopp.Enabled:=True;

Label1.Visible:=True;

Label1.Caption:=Mediaplayer1.FileName;

 

 

end;

 

procedure TForm1.StoppClick(Sender: TObject);

begin

Mediaplayer1.Stop;

Stopp.Enabled:=False;

end;

 

procedure TForm1.NesteClick(Sender: TObject);

begin

Sang:=Sang+1;

Mediaplayer1.FileName:=Listbox1.Items[sang];

Mediaplayer1.Open;

Mediaplayer1.Play;

Forrige.Enabled:=True;

Label1.Caption:=Mediaplayer1.FileName;

Forrige.Enabled:=True;

if Sang=Antall-1 then

Neste.Enabled:=False;

end;

 

procedure TForm1.ForrigeClick(Sender: TObject);

begin

Sang:=Sang-1;

Mediaplayer1.FileName:=Listbox1.Items[sang];

Mediaplayer1.Open;

Mediaplayer1.Play;

Neste.Enabled:=True;

Label1.Caption:=Mediaplayer1.FileName;

if sang=0 then

Forrige.Enabled:=False;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

If savedialog1.Execute then

Listbox1.Items.SaveToFile(Savedialog1.FileName+'.abc');

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

if opendialog2.Execute then begin

listbox1.Items.LoadFromFile(opendialog2.FileName);

play.Enabled:=true;

Antall:=Listbox1.Count;

button1.Enabled:=True;

if antall>1 then

Neste.Enabled:=True;

end;

end;

procedure TForm1.ListBox1Click(Sender: TObject);

begin

Button3.Enabled:=True;

end;

 

procedure TForm1.Button3Click(Sender: TObject);

begin

Listbox1.DeleteSelected;

Button3.Enabled:=False;

end;

 

end.

Lenke til kommentar
Videoannonse
Annonse

Lek litt med OnNotify()-eventet og Mode-egenskapen. Det virker ikke som det er helt 100% rett frem, men jeg tror det kun er det du har å gå etter...

 

Egentlig burde du finne deg en eller annen 3.parts komponent for avspilling av mp3 i stede for TMediaPlayer. F.eks. Bass fra (http://www.un4seen.com/) eller noe lignende..

 

Ta en titt på torrys under effects & multimedia -> audio så finner du både en TMediaPlayer med playlist og flere andre eksempler på mp3-spillende komponenter.

 

-Vegar

Lenke til kommentar

Nå har jeg fått til sånn halvveis, jeg har lagt til en progressbar og en timer

på timer skrev jeg progressbar1.max:=Mediaplayer1.Tracklenght[sang];

progressbar1.position:=Mediaplayer1.position;

if progressbar1.position=Progressbar1.max then begin

progressbar1.position:=0;

neste.click;

men når jeg ikke har flere sanger i listboxen prøver timer'en likevel å ta neste sang hvordan kan jeg endre på det?

Lenke til kommentar

I nesteclick( ) inkrementerer du sang med 1 for deretter å bruke sang som index i spillelista. Da må du først sjekke om det virkelig er så mange sanger der. Noe slik f.eks:

 


inc(sang);

if sang < playlist.items.count then

begin

 //Hopp til neste sang

end

else

begin

 //Har ikke flere sanger. Stopp derfor timer og annet som måtte være nødvendig...

end;

 

Det du må passe på blir riktig det er at lista er 0-indexert (første element = 0), mens count gir faktisk antall elementer. Dvs. at hvis du har 2 elementer i lista vil count være 2, men item[2] finnes ikke siden item[0] er første og item[1] er andre osv osv...

 

-Vegar

Lenke til kommentar
  • 3 uker senere...

gud å fett :D jeg har også en mp3spiller som er "litt" mindre da.. jeg har klart å få inn ekte play,stop,ff,rw osv. knapper på den.. men jeg ga opp det prosjektet, hadde egentlig tenkt å lage playlist og slikt også.. vi får se, kanskje jeg mekker det en dag ?? brukte delphi til det.. er ganske greit prog egentlig. skal se om jeg finner screenshot av den spilleren så skal jeg uppe det eller.no

Lenke til kommentar
  • 2 uker senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...