Autor Beitrag
Exodia-Rübe
Hält's aus hier
Beiträge: 9

Windows XP Home Edition SP2
Delphi 6, Delphi 2006
BeitragVerfasst: Mi 18.10.06 10:08 
also, zunächst möchte ich loswerden, dass mir dieses tutorial sehr geholfen hat.

Allerdings halt ich es für sehr nützlich, wenn man die zeit einstellen, also vor- oder zurückspulen
kann (etwa über einen schieberegler wie bei winamp oder so).

weiß jemand, wie man das macht? ich habe leider keine ahnung...

ich danke allen, die ideen habe und posten.


mfg Exodia-Rübe

(ein wenig quellcode wäre vielleicht auch nicht verkehrt^^)
Wegi
Hält's aus hier
Beiträge: 13

Win XP Pro
Delphi 7 Personal, Turbo Delphi 2006
BeitragVerfasst: Di 20.03.07 17:25 
Hallo,

erstmal entschuldigung das ich diesen alten Thread ausgrabe, aber ich habe eine problem mit dem im Tutorial beschriebenen MediaPlayer. (Es ist mein erstes projekt, deswegen möglich das sich fehler eingeschlichen haben).

Und zwar:

Wenn ich den Quellcode aus dem tutorial übernehme, springt das programm nach beendigung eines Liedes immer zuerst zu Lied Nr. 1 und geht dann erst der reihe nach nach unten. Wenn ich so umschreibe, dass er der Reihe nach nahc unten geht, springt er nach dem letzten Lied nicht mehr zum ersten. Wenn ich das wiederrum fixe, springt er nach dem letzten immer zum 2. Und dann nirgentwohin mehr.

Pls Help.

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Media: TMediaPlayer;
    ListBox1: TListBox;
    ButtonSave: TButton;
    ButtonLoad: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure MediaNotify(Sender: TObject);
    procedure ButtonSaveClick(Sender: TObject);
    procedure ButtonLoadClick(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    Procedure AddToPlayList(s:string);
    Procedure PlayFile(songNumber: integer);
    Procedure WMDropFiles (Var aMsg: tMessage);  message WM_DROPFILES;
  end;

var
  Form1: TForm1;
  playList: TStringList; (*Globale Variable die Für die Playlist benötgt wird*)
  CurrentSong: integer = -1; (*merkt sich aktuelles Lied*)
  Root : String = 'ExtractFilePath(ParamStr( 0 )';

implementation

{$R *.dfm}
//-----------------------------------------------------------------------------
procedure TForm1.FormCreate(Sender: TObject);
begin
  playList := TStringList.Create;
  DragAcceptFiles (Handle, True);
end;
//-----------------------------------------------------------------------------
procedure TForm1.FormDestroy(Sender: TObject);
begin
  playList.Free;
end;
//-----------------------------------------------------------------------------
Procedure TForm1.AddToPlayList(s:string);
begin
   playList.Add(s);
   ListBox1.Items.Add(extractfilename(s));
end;
//------------------------------------------------------------------------------
procedure TForm1.ListBox1Click(Sender: TObject);
var i : integer;
begin
  for i := 0 to listbox1.Itemindex do
  PlayFile(i);
end;
//-----------------------------------------------------------------------------
procedure TForm1.PlayFile(songNumber: integer);
begin
  if fileexists(Playlist.Strings[songNumber]) then begin
    media.Close;
    media.FileName := Playlist.Strings[songNumber];
    media.Open;
    media.play;
  end;
end;
//-----------------------------------------------------------------------------
Procedure TForm1.WMDropFiles (Var aMsg: tMessage);
Var
  Idx, Size, FileCount: Integer;
  Filename: pChar;
Begin
  Inherited;
  FileCount := DragQueryFile (aMsg.WParam, $FFFFFFFF, nil, 255);
  For Idx := 0 To FileCount -1 Do Begin
    Size := DragQueryFile (aMsg.WParam, Idx, nil, 0) + 1;
    Filename := StrAlloc (Size);
    If DragQueryFile (aMsg.WParam, Idx, Filename, Size) = 1 Then  { nothing }
    else  AddToPlayList (pChar (Filename)); // hier wird das jeweilige file unserer Prozedur AddToPlaylist überwiesen.
    StrDispose (Filename);
  End;
  DragFinish (aMsg.WParam);
End;
//-----------------------------------------------------------------------------
procedure TForm1.MediaNotify(Sender: TObject);
begin
   currentSong := ListBox1.ItemIndex;
   if media.Position = media.Length then
     begin
       if not currentSong < ListBox1.Count -1 then
       begin
         currentSong := 0;
         Playfile(CurrentSong);
         ListBox1.Selected[currentSong] := true;
       end
       else
         Listbox1.Selected[currentSong] := false;
         inc(currentSong);
         ListBox1.Selected[currentSong] := true;
         Playfile(Currentsong);
     end;
end;
//-----------------------------------------------------------------------------
procedure TForm1.ButtonSaveClick(Sender: TObject);
begin
    TRY
      Playlist.SaveToFile(root + 'Playlist.lst');
      ListBox1.Items.SaveToFile(root + 'Playlist_show.lst');
      showmessage('Playlist erfolgreich gespeichert');
    EXCEPT
      TRY
        filecreate(root + 'Playlist.lst');
        filecreate(root + 'Playlist_show.lst');
        Playlist.SaveToFile(root + 'Playlist.lst');
        ListBox1.Items.SaveToFile(root + 'Playlist_show.lst');
      EXCEPT
        showmessage('ERROR: DATEI KONNTE NICHT GESPEICHERT WERDEN');
      end;
    end;
end;
//-----------------------------------------------------------------------------
procedure TForm1.ButtonLoadClick(Sender: TObject);
begin
  If fileexists(root + 'Playlist.lst') then
    begin
      TRY
        Playlist.LoadFromFile(root + 'Playlist.lst');
        ListBox1.Items.LoadFromFile(root + 'Playlist_show.lst');
        showmessage('Playlist erfolgreich geladen');
      EXCEPT
        showmessage('ERROR: LADEN NICHT MÖGLICH');
      end;
    end;
end;


end.


Es handelt sich um die onNotify-Prozedur. (Zeile 92, folgende)

//edit: Ich hab es mit Turbo Delphi 2006 geschrieben.

/edit: habs nach langem rumprobieren selbst gelöst :)