trrunde Skrevet 6. august 2003 Skrevet 6. august 2003 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.
Format71 Skrevet 6. august 2003 Skrevet 6. august 2003 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
trrunde Skrevet 12. august 2003 Forfatter Skrevet 12. august 2003 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?
Format71 Skrevet 13. august 2003 Skrevet 13. august 2003 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
trrunde Skrevet 13. august 2003 Forfatter Skrevet 13. august 2003 Takker for svar format71 tror dette funker skal prøve det :smile:
trrunde Skrevet 14. august 2003 Forfatter Skrevet 14. august 2003 Heisann nå har jeg endelig fått det til så nå lurte jeg på om noen kanskje kunne sett litt på programmet og sagt fra om hva jeg burde endre på å sånn. http://www.home.no/trondar/Mp3%20player.exe på forhånd takk
Kafarsken Skrevet 14. august 2003 Skrevet 14. august 2003 Synes lyden virker noe rar. Ellers er jeg imponert. Ikke alle som har klart det der Ellers er jo en seeking bar kjekt å ha! Og drag and drop
trrunde Skrevet 14. august 2003 Forfatter Skrevet 14. august 2003 Skal se hva jeg kan få til, tror du det går å bruke en trackbar til den seekingen??
Velmont Skrevet 14. august 2003 Skrevet 14. august 2003 Kan du kompilere en binary for Linux med Kylix for meg? Kan hende den fungerer med wine da, men jeg tror ikke jeg prøver.
trrunde Skrevet 15. august 2003 Forfatter Skrevet 15. august 2003 Har ikke kylix eller linux og er ikke helt sikker på hvordan jeg skal kompilere en binary :oops:
Myklebust89 Skrevet 1. september 2003 Skrevet 1. september 2003 Jeg driver også på med en MP3 spiller.... Og det hadde vært kult å hatt en progressbar som viser fremdriften i sangen.... Hvordan kan dette gjøres?
nixtus Skrevet 3. september 2003 Skrevet 3. september 2003 gud å fett 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
trrunde Skrevet 12. september 2003 Forfatter Skrevet 12. september 2003 For å bruke progressbar eller gauge setter du inn en timer som blir enabla når du trykker på play knappen. på ontimer eventsen til timeren skriver du progressbar1.max:=Mediaplayer1.tracklenght[0]; progressbar1.position:=mediaplayer1.position;
Myklebust89 Skrevet 13. september 2003 Skrevet 13. september 2003 Det funka dårlig... la det i OnTimer til timer1, men jeg fikk en feilmelding for ******!
trrunde Skrevet 13. september 2003 Forfatter Skrevet 13. september 2003 Prøv progressbar1.max:=Mediaplayer1.tracklenght[mediaplayer1.filename]; progressbar1.position:=mediaplayer1.position; Er ikke helt sikker på om det er position eller progress det får du bare prøve selv
Myklebust89 Skrevet 14. september 2003 Skrevet 14. september 2003 hva slags identifier skal tracklength være da? denne feilmeldingen fikk jeg : [Error] Unit1.pas(176): Undeclared identifier: 'tracklenght'
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå