29. juli 2002 - 23:45Der er
60 kommentarer og 1 løsning
Mediaplayer1 går automatisk videre til næste sang i min Listbox..
Hejsa igen igen, jeg har en Mediaplayer og en Listbox...hvor mediaplayeren afspiller sange som er i Listboxen....men jeg har et problem for når én sang er færdig så stopper musikken bare, og jeg vil gerne have den til at gå videre til næste sang på listen i listboxen!!!??
Kommunerne har digitaliseret indgangen for borgerne. Men bag skærmen håndteres mange arbejdsgange stadig manuelt mellem systemer, mails og organisatoriske siloer.
procedure TForm1.NotifyProc(Sender: TObject); begin With Sender As TMediaPlayer do begin Case Mode of mpStopped: MediaPlayer1Click(sender, btNext, default); end; //Skal sættes til true for at vi får næste besked Notify := True; end; end;
Nico jeg har brugt dit eks....men den skriver at "enhedstypen kan ikke bestemmes ud fra det angivne filtypenavn".....? jeg har prøvet at skrive alt (*.mp3 .mp3 mp3) men det virker stadigvæk ikke? Kan det gøre en forskel at jeg har sat koden ind i form2.show i stedet for form2.create...
ja den viser i hvert fald at det er ved: MediaPlayer1.Notify := True; den stopper, men det værste er at den viser ikke der er nogle fejl i programmet, men først når man kører programmet....
Jeg fjernede linien: MediaPlayer1.Open; og så virkede det, selv om den begyndte at bombe mig med utallige beskeder med lokationen af de sange i min Listbox :)
Men når jeg så også fjerner linien (ShowMessage...) så begynder den at scrolle ned igennem min Listbox og tilsidst går programmet kold?
procedure TForm2.FormShow(Sender: TObject); procedure FindAllFiles(const APath : string); var SearchRec : TSearchRec; FindData : TWin32FindData; FileDate : Integer; MP3 : TMusikFil; begin { find den første fil der matcher } if FindFirst(APath + '*.mp3', faArchive, SearchRec) = 0 then try repeat MP3 := TMusikFil.Create; MP3.Filename := changefileext(SearchRec.Name, ''); MP3.Filelocation := APath + SearchRec.Name;
ListBox1.Items.AddObject(MP3.Filename, MP3) until FindNext(SearchRec) <> 0; // find næste fil finally FindClose(SearchRec); end; end;
procedure DoSearch(const APath : string); var SearchRec: TSearchRec; begin { hvis der er undermapper } if FindFirst(APath + '*.*', faDirectory, SearchRec) = 0 then try repeat { hvis det er en mappe og det ikke er '.' eller '..' } if ((SearchRec.Attr and faDirectory) <> 0) and (SearchRec.Name[1] <> '.') then begin FindAllFiles(APath + SearchRec.Name + '\'); // find filerne i mappen DoSearch(APath + SearchRec.Name + '\'); // og kald sig selv recursivt end; until FindNext(SearchRec) <> 0; // find den næste mappe finally FindClose(SearchRec); end; end;
function AppendBackslash(const APath : string) : string; begin if APath[Length(APath)] <> '\' then Result := APath + '\' else Result := APath; end;
const Path = 'D:\cat_mp3\'; begin MediaPlayer1.Notify := True; FindAllFiles(AppendBackslash(Path)); DoSearch(AppendBackslash(Path)); Form1.hide; end; procedure TForm2.Image1Click(Sender: TObject); begin Application.terminate; end;
procedure TForm2.Timer2Timer(Sender: TObject); begin label1.caption := timetostr(time); end;
procedure TForm2.Timer1Timer(Sender: TObject); var R : Integer; begin R := MediaPlayer1.Position; Label2.Caption := Format('%.2d:%.2d', [R div 60000, (R mod 60000) div 1000]);
R := MediaPlayer1.Length - MediaPlayer1.Position; Label3.Caption := Format('%.2d:%.2d', [R div 60000, (R mod 60000) div 1000]); end;
try //Skal være sikker på at der ikke kører en sang (mediaplayer holder ikke til meget :)) MediaPlayer1.Notify := False; //notify skal ikke kaldes - ellers startes to sange MediaPlayer1.Stop; except end;
I form2.show; skal der stadigvæk være: MediaPlayer1.Open; MediaPlayer1.Notify := True; for så virker det stadigvæk ikke og uden Mediaplayer1.notify := true; virker det heller ikke, men uden den kører programmet men den kører bare ikke videre til den næste sang på listen...?
har kigget på det, mp siger tit "No MCI device open". Jeg syntes mp er noget lort og det er måske på tide at skifte component? Meget af koden vil stadig kunne bruges, men efter min mening laver mp bare for mange problemmer.
findes der et andet component som man kan indsætte, som virker på samme måde som MediaPlayer...? Hvis du kan få det til at virke med det andet component så er du velkommen til at gøre det.... Men det skal være sådan at programmet kan køre på en anden pc som ikke har Delphi........
(som nævnt i mailen så får den der fixer programmet 100 points) :)
nico> ja ik ;) lige for at gøre det endnu mere besværligt kunne man, lave en slags random play from listbox? - i teorien ikke fordi det er vigtigt nu..?
NICO> tak for det...... desværre DKN men NICO kom først.....sorry.... :) Men NICO gider du ikke lave et svar...? så du kan få dine velfortjente points.... :)
Forresten lige en sidste ting..... Er det ikke muligt at gøre det sådan at når man trykker på "Play knappen" foroven (billedet) så afspiller den, den markerede linie i Listboxen og ikke den sidst afspillede linie...? (For ellers ville Play knappen jo ikke være så meget værd... ;))
Jeg forstår ikke det her pointsystem, jeg kan ikke give over 99 points og når jeg så går det så siger den at jeg ikke har givet nook points for spørgsmålet.....?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.