|
| |
Home Up
mediaspeler in Delphi
Ik zou graag een mediaspeler willen maken in delphi. Iets op de manier van winamp maar dan met twee lijsten. één lijst met alle beschikbare nummers en een andere lijst waar je de nummers toe kunt voegen en op volgorde kunt laten spelen. Heeft iemand tips of voorbeelden???
b.v.d.
--
Henro,
Mijn ervaring met dergelijke projecten is dat als je eenmaal aan de gang bent je steeds meer leuke dingen ziet en wilt, want het kan tenslotte altijd mooier en beter........
Ik denk dat je zelf al een stuk aangeest welke kant het op gaat:
Twee listboxen, waarbij je de ene vult met 'alle' nummers, en dan middels slepen of knoppen items verplaatst / een kopie maakt voor de tweede lijst, die uiteindelijk gespeeld gaat worden. Delphi heeft daarvoor zelfs een m.i. redelijk direct bruikbaar form voor in huis : File | New | Forms | Dual list box (in Delphi 3).
Kijk hier maar eens naar.
M.vr.groet,
Hans
--
bedankt voor de tip, ga ik direct even proberen. Maar nu hopen dat het me ook nog lukt om die nummers goed af te laten spelen. Ik heb al wel eens een begin gemaakt met 2 listboxen. Ik had het zo gemaakt dat als je op de button 'start' drukte dat dan de muziek begon te spelen, dat lukte allemaal wel. De bedoeling was dat wanneer het nummer afgespeelt is dat dan het bovenste item in de listbox verwijdert zou worden en dan het bovenste nummer weer ging afspelen. Dat lukt dus niet, want eerst gaat de mediaspeler alle nummers afspelen en dan verwijdert hij alle items in de listbox.
de grtn,
henro
--
Henro,
Ik weet zo uiteraard niet wat je hebt gemaakt, maar even een paar puntjes die wellicht helpen :
- de mediaplayer heeft een event dat kan worden aangemaakt en dat dan wordt aangeroepen wanneer de afgespeelde file 'klaar' is. (Wellicht gebruik je die al)
Hierin zou ik dus het eerste item uit de 'af te spelen' lijst halen, en vervolgens de volgende aanbieden aan de mediaplayer en deze weer starten als dat niet op automatisch staat.
Indien je deze weg volgt, dan kan het nodig zijn om na het verwijderen de code 'Application.ProcessMessages' aan te roepen om je listbox te updaten. Het kan zijn dat 'onder water' de items inderdaad worden verwijderd, maar dat jet dat pas ziet gebeuren nadat de hele lijst is afgespeeld ?!
Hans
--
ik gebruik nu niet dat event van de mediaspeler, ik heb gewoon een repeatstatement ervoor gebruikt en de mediaspeler wacht tot het nummer afgelopen is. De nummer spelen wel achter elkaar door maar de lijst wordt dan niet bijgewerkt. ik ga even proberen als het ook gewoon lukt met onnotify . Waar moet je die code plaatsen om de listbox te 'refreshen'?
b.v.d.
Henro
--
Ik heb het geprobeerd met onnotify event van de mediaspeler maar dat werkt ook niet. De nummers worden wel achter elkaar afgespeelt maar het verandert op scherm niet!!! Flink balen
henro
--
Zo even geen idee.
Laat de betreffende code / scherm maar eens komen naar 'hans@delphi-gg.nl', dan wil ik wel eens even kijken of ik iets vind...
Hans
--
Henro,
leuk grapje had je jezelf toebedeeld .
hieronder staat jouw werkpaard, met wat code als commentaar.
De code is verder als werkend geheel op een andere plaats opgenomen in dezelfde methode, maar nu zodanig dat hij ook nog werkt !! :
procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
with Sender as TMediaPlayer do begin
with mediaplayer1 do begin
open;
filename:=listbox1.items[0];
listbox1.items.delete(0);
Application.ProcessMessages;
Notify := (listbox1.items.count > 0);
wait:=true;
play;
{ with listbox1.items do begin
delete(0);
Application.ProcessMessages;
end;}
end;
{ Notify := (listbox1.items.count > 0);}
end;
end;
De grap zat 'm in de volgorde : voordat je aan het leegmaken van de listbox toe kwam, werd de mediaplayer opnieuw gestart, voorzien van de 'wait'. Er werd dus (nog) niet opgeruimd.
Probeer deze versie maar eens. Ik denk dat dit beter werkt.
Hans
--
He hans, bedankt voor de update, het programma werkt nu goed.
|