Autor Beitrag
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Fr 03.06.05 15:52 
So ich habe gerade noch einen Bug in deinem Programm gefunden. Wenn man z.B. auf den Minimieren-Button drückt und während man die Maus gedrückt hat diese von dem Button wegbewegt bleibt der Button oben, geht also nicht in seinen Ausgangszustand zurück, auch wenn man dann die Maus loslässt.

Und noch ein Verbesserungsvorschlag. Kannst du bei Playlist auch so machen, das man bei Playlist auch Einträge wieder löschen kann, bzw. den Pfad erneut durchsuchen lassen?
retnyg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Fr 03.06.05 20:12 
user profile iconHeiko hat folgendes geschrieben:
So ich habe gerade noch einen Bug in deinem Programm gefunden. Wenn man z.B. auf den Minimieren-Button drückt und während man die Maus gedrückt hat diese von dem Button wegbewegt bleibt der Button oben, geht also nicht in seinen Ausgangszustand zurück, auch wenn man dann die Maus loslässt.


habe eben mal wieder die aktuelle version hochgeladen. es wurden die bugs bzgl. übergebene parameter (paramstr) behoben. nun kann nur eine instanz aktiv sein, wird eine weitere gestartet so werden die params an instanz 1 weitergeleitet, was eine integration in den explorer ermöglicht.

schau bitte mal ob der von dir erwähnte bug immer noch auftritt.

user profile iconHeiko hat folgendes geschrieben:
Und noch ein Verbesserungsvorschlag. Kannst du bei Playlist auch so machen, das man bei Playlist auch Einträge wieder löschen kann, bzw. den Pfad erneut durchsuchen lassen?


aus der playlist kann man etwas löschen, wenn man mit den cursortasten und der ENTF-taste vorgeht.
wie meinst du das mit pfad erneut durchsuchen lassen ?

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Amiga-Fan
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 534



BeitragVerfasst: Fr 03.06.05 20:54 
ich hatte es gerade erst runtergeladen, dann hast du eine neue version geuppt :)

wenn man das programm das 2. mal startet, kommt bei mir eine exception (winxp prof grundversion).
Gutes Programm

_________________
- Leg dich nie mit einem Berufsprogrammierer an
- Wahre Profis akzeptieren keine einfachen Lösungen
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Sa 04.06.05 10:16 
So ich habe heute mal deine neue Version ausprobiert. Der Bug mit den Buttons oben ist immer noch. Des weiteren muss ich Amiga-Fan recht geben (WinXP+SP2 Home). Und das mit dem Cursor und der Entf.-Taste funzt bei mir nit.
Das mit dem Pfad erneut zu durchsuchen hat einen Hintergrund. Wenn ich in meinen Musikordner neue Musik reinkopiere möchte ich die in den Player integrieren. Da er das nicht automatisch macht, habe ich ne neue Location angegeben, obwohl die schon existiert als Location. Danach habe ich aber bei Playlist die Location 2x stehen.
Markus254
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 23

Winnt2000
d7 Prof
BeitragVerfasst: Fr 17.06.05 21:36 
Titel: FRAGE
Ich finde das Prog sehr gut, ich habe nur eine Frage:

Ich proge ein Programm mit Trackbar und wollte dich fragen, woher du deine Trackbarkomponeten hast ?
Währe sehr dankbar für ein paar Antworten :lol:
retnyg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Fr 17.06.05 22:12 
Titel: Re: FRAGE
user profile iconMarkus254 hat folgendes geschrieben:
Ich finde das Prog sehr gut, ich habe nur eine Frage:

Ich proge ein Programm mit Trackbar und wollte dich fragen, woher du deine Trackbarkomponeten hast ?
Währe sehr dankbar für ein paar Antworten :lol:

die trackbar-kompo habe ich von thaddy de koning, einem KOL-Guru. Ich habe sie nur etwas erweitert, dass sie sich das Hintergrundsbild aus dem Canvas des Parents kopiert (was insofern problematisch, dass zuerst das Hintergrundsbild sichtbar sei muss, BEVOR die kompo erstellt wird).
democtrl.pas hat folgendes geschrieben:

ausblenden volle Höhe Delphi-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:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
unit democtrl;
//
// purpose: How to write a simple KOL control part 1
//  author: © 2004, Thaddy de Koning
// Remarks: This a simple trackbar like control for audio
//          It is derived from a simple panel, but could have been derived
//          from a paintbox too. The panel has some extra possibilities, like
//          borders and some extra built in message processing that is helpfull.
//          We employ a simple technique that has two drawing routines.
//          One draws a background on a bitmap that stays buffered.
//          One draws the ticker or indicator and uses simple xor painting
//          The colors of the tracker are stored in the color, color1 and color2
//          properties of the panel. The tracker position is returned in the
//          panel's tag.
//          All other information needed is stored in a data object that is
//          attached to the panel's CustomObj property.
//          The Min and Max values are set at creation time in the constructor
//          function.
//          All tracker specific messahges will be handled in a special wndproc
//          that we attach to the panel.
//          What we have is a clean KOL control.

interface
uses
  windows, messages, kol;

type
  PTrackerData = ^TTrackerData;
  TTrackerData = object(TOBj)
  private
    FMaxValue:integer;  //FMinValue assumed 0 by design. this is a demo after all.
    FXpos:Integer;
    Fowner:Pcontrol;    // to reference ourselves if needed.
    FBkGnd:PBitmap;     // bitmap to draw the background on. Note you can also load
                        // this with a physical bitmap from file or resource.
    procedure PaintBackGround; // Draws the bitmap. Must be redrawn after resize
                               // but you have to do this yourself :-) easy enough!
    procedure PaintTracker(sender:PControl;DC:HDC);
  protected
    procedure SetXPos(value: integer);
    destructor Destroy;virtual;
  public
    property Pos: Integer read FXPos write SetXPos;
  end;

  // constructor;
  function NewTracker(aOwner:PControl;EdgeStyle:TEdgeStyle;ThumbColor,FieldColor:Tcolor;t,l,h,w,startpos:integer;MaxValue:integer = 100):PControl;

implementation
  var vorschub: byte = 0;
  // handles mousemove. Could also handle paint here and resize (for the bitmap).
  function WndProcTracker( Sender: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean;
  begin
    Result:=false;             // default
    case msg.message of
    WM_SIZE:
        begin
          PTrackerdata(sender.CustomObj).FBkGnd.Width:=sender.Clientwidth;
          PTrackerdata(sender.CustomObj).FBkGnd.Height:=sender.ClientHeight;
          PTrackerdata(sender.CustomObj).PaintBackground;
          sender.Invalidate;
        end;
    WM_MOUSEMOVE:
         // If the left mousebutton is down
         if Boolean (msg.wparam and MK_LBUTTON) then //and
         // Allow a margin to grab the "thumb"
//         (Abs(Loword(Msg.lparam) - PTrackerdata(sender.CustomObj).FXPos) < vorschub) then
         begin
           PTrackerdata(sender.CustomObj).FXpos:=Min(Max(LOWORD(msg.lParam),vorschub),sender.Clientwidth-vorschub);
           sender.Invalidate;
           if Assigned(sender.OnChange) then
             sender.OnChange(sender);
           result:=true;
         end;
    WM_LBUTTONDOWN:
         // If the left mousebutton is down
         if Boolean (msg.wparam and MK_LBUTTON) //and
         // Allow a margin to grab the "thumb"
//         (Abs(Loword(Msg.lparam) - PTrackerdata(sender.CustomObj).FXPos) < 5) then
         then
         begin
           PTrackerdata(sender.CustomObj).FXpos:=Min(Max(LOWORD(msg.lParam),vorschub),sender.Clientwidth-vorschub);
           sender.Invalidate;
           if Assigned(sender.OnChange) then
             sender.OnChange(sender);
           result:=true;
         end;
    else
      Result:=False;
    end;
  end;

  function NewTracker(aOwner:PControl;EdgeStyle:TEdgeStyle;ThumbColor,FieldColor:Tcolor;t,l,h,w,startpos:integer;MaxValue:integer = 100):PControl;
  var
    data:PTrackerData;
    srcRect: TRect;
  begin
    Result:=NewPanel(aOwner,EdgeStyle).setsize(100,20);
    New(Data,Create);
    Result.CustomObj:=Data;            // create the trackerdata object
    Data.Fowner:=Result;
    Result.Color1:=ThumbColor;         // whatever, it's an example
    Result.Color2:=FieldColor;         // idem, but we need to set them
                                       // otherwise they're both black.
    Data.FMaxValue:=MaxValue;          // maximum value, min is assumed to be 0;
//    Data.FBkGnd:=NewBitmap(Result.clientwidth,Result.clientHeight);
    Data.FBkGnd:=NewBitmap(w,h);
    result.height := h;
    result.Width := w;
    result.Top := t;
    result.left := l;

// copy background from Owner's canvas, requires Owner 2 b painted b4 creation
// of Trackbar
// otherwise use provided background bmp:
//  Data.FBkGnd.Assign (BackBMP);

    srcRect.left := l;
    srcRect.top := t;
    srcRect.Right := l+w;
    srcRect.Bottom := t+h;
//    srcRect := rect(l,t,l+w,t+h); doesnt work o_0
    Data.FbkGnd.canvas.CopyRect(Data.FbkGnd.BoundsRect,aOwner.Canvas, srcRect);
// draw horizontal line
    Data.FbkGnd.canvas.Pen.Penwidth:=1;
    Data.FbkGnd.canvas.Pen.color:=FieldColor;
    Data.FbkGnd.canvas.moveto(0,(h div 2));
    Data.FbkGnd.canvas.LineTo(w,(h div 2));


//    Data.FXpos:=data.Fowner.clientwidth div 2;
    Data.FXpos:=(startpos * 10div (MaxValue * 10 div w);
//    Data.PaintBackGround;
    Result.tag:=0;        // set tag to minimum.
    Result.AttachProc(WndprocTracker);
    Result.OnPaint:=data.PaintTracker;
  end;
{ TTrackerData }

procedure TTrackerdata.SetXPos(Value: integer);
begin
   FXPos := Value;
end;

destructor TTrackerData.Destroy;
begin
  if Assigned(FOwner) and FOwner.IsprocAttached(WndProcTracker) then
  Fowner.DetachProc(WndProcTracker);
  FBkGnd.Free;
  inherited;
end;

procedure TTrackerData.PaintBackGround;
begin
  // something very simple
  if assigned(FBkGnd) then
  begin
//    FBkGnd.LoadFromFile ('trackback2.bmp');
{    FBkGnd.Canvas.Brush.Color:=FOwner.Color;
    FBkGnd.canvas.fillrect(FBkGnd.Boundsrect);
    FBkGnd.canvas.Pen.Color:=Fowner.Color2;
    FBkGnd.Canvas.RoundRect(3,3,FBkGnd.width-3,FBkGnd.Height-3,3,3); }

  end;
end;

procedure TTrackerData.PaintTracker(sender: PControl; DC: HDC);
var
  T:integer;
begin
  FBkGnd.Draw(dc,0,0);            // Draws the background
  with PTrackerdata(sender.CustomObj)^ do
  begin
//    if (sender.tag <> 0) and (sender.tag <= sender.clientwidth) then
//      FXPos := Sender.Tag;
    sender.canvas.Pen.Penwidth:=3;
    sender.canvas.Pen.color:=Fowner.color1;
    sender.canvas.moveto(FXpos,3);
    sender.canvas.LineTo(FXPos,sender.Clientheight-3);
    // Now calculate the actual value.
    // Scale first. we have a margin of 5 pixels on both sides,
    // see how FXpos is calculated. Subtract this from the clientwidth
    // to obtain the relative maximum value then scale it to FMaxValue
    // and store it in the tag.
    T:=(FXpos - vorschub) * FMaxValue div (sender.clientwidth - vorschub * 2);
    sender.tag:=T;

  end;
end;

end.


_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
TomZ
Hält's aus hier
Beiträge: 13


D8 Pers, FreePascal
BeitragVerfasst: Sa 09.07.05 15:29 
Titel: Re: FRAGE
Erstmal: Supertoller Player!

Ich hab da mal 'ne Frage: Wie bekommt man die Abpiellänge von MP3-Dateien heraus??
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Sa 09.07.05 15:36 
Aso retnyg, kannst du die Titelreihenfolge vlt. in Abhängigkeit der Titelnummer (aus ID3-Tag) machen?

@TomZ: Musst du aus dem ID3-Tag-Berechnen, oder du lädst es in die Kompo TMediaPlayer und der gibt dir die aus.
retnyg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Sa 09.07.05 15:47 
Titel: Re: FRAGE
user profile iconTomZ hat folgendes geschrieben:
Erstmal: Supertoller Player!

danke :D
user profile iconTomZ hat folgendes geschrieben:
Ich hab da mal 'ne Frage: Wie bekommt man die Abpiellänge von MP3-Dateien heraus??

wenn du das mit dem Tmediaplayer machen willst, einfach das lied laden und length abfragen. das gibt die spieldauer in ms
user profile iconHeiko hat folgendes geschrieben:
Aso retnyg, kannst du die Titelreihenfolge vlt. in Abhängigkeit der Titelnummer (aus ID3-Tag) machen?

id3 ist nicht implementiert, da es die exe um einiges aufblähen würde und ich eher ein fan von sprechenden dateinamen bin user defined image

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Sa 09.07.05 15:52 
Titel: Re: FRAGE
user profile iconretnyg hat folgendes geschrieben:
und ich eher ein fan von sprechenden dateinamen bin user defined image

:rofl: , seit wann sprechen Dateinamen :tongue: . Bei mir beinhalten die Dateinamen den Titelnamen und nicht die Nummer, da ich es nicht mag wenn die Dateinamen immer mit Zahlen anfangen ;).
Prof. Dachs
Hält's aus hier
Beiträge: 11

Win 2000 SP4
D7 Pers
BeitragVerfasst: So 10.07.05 13:24 
Ich hab den Player noch nicht getestet, aber seit ich foobar habe, möchte ich nicht mehr ohne globale Tastenkürzel für Lautstärke, Lieder weiterschalten usw. musik hören. Sowas solltest du noch einbauen.
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Mo 11.07.05 14:42 
Zu dem Start-Posting: Du solltest vielleicht Pixelmaßen schreiben, Pixelmassen klingt ein bisschen doppeldeutig... vielleicht bist du schweizer, dann nehme ich alles zurück! :D
retnyg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mo 11.07.05 16:11 
user profile iconTilman hat folgendes geschrieben:
Zu dem Start-Posting: Du solltest vielleicht Pixelmaßen schreiben, Pixelmassen klingt ein bisschen doppeldeutig... vielleicht bist du schweizer, dann nehme ich alles zurück! :D

die schweiz ist nicht weit weg von hier, und ich schreibe grundsätzlich alles mit doppel-s (neue deutsche retschreibung) user defined image

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
retnyg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mi 02.11.05 00:04 
Titel: - neue version -
so, nach langer bastelei möchte ich die neue version präsentieren.
diese version ist von grund auf neugeschrieben, und verwendet nun nicht mehr die mediaplayer komponente, sonder den windows acm codec. dadurch bin ich in der zukunft auch in der lage, mp3 streams abzuspielen.

krazz.net/retnyg/leetmp3.zip

die neue version hat einen mini-modus, und einen gross-modus.
im minimodus ist die leiste sehr schmal und bleibt immer im vordergrund.
am besten schiebt man die leiste ganz nach oben über die titelleiste der anderen fenster.

user defined image

fährt man mit der maus über die minileiste, klappt der player aus.
er verwendet nun ein treeview, in dem man einträge hin und herschieben kann.
man kann dateien und ordner per drag und drop herziehen, oder unten in der combobox den ordnernamen eintippen und enter drücken.
die combobox dient gleichzeitig der verwaltung der playlisten.

user defined image

diese version ist noch eine beta, folgende funktionen fehlen noch

- internet streams anhören und rippen
- kommandozeilen parameter
- nur eine instanz offen
- config-file für farbwerte

viel spass damit, retnyg

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
MagicAndre1981
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 02.11.05 00:15 
Hallo,

schön, dass es eine neue Version gibt. Ich werde die gleich mal testen.

André





P.S. wolltest du mir die Version nicht schon vorher geben? ;-)
retnyg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mi 02.11.05 17:20 
user profile iconMagicAndre1981 hat folgendes geschrieben:
P.S. wolltest du mir die Version nicht schon vorher geben? ;-)

was halbfertiges will ich ned rausrücken, drum hab ichs gleich hier für alle freigegeben ;)

user profile iconMagicAndre1981 hat folgendes geschrieben:
schön, dass es eine neue Version gibt. Ich werde die gleich mal testen.

und, wie gefällt sie dir ?

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Mi 02.11.05 17:26 
mhm, ich komme mit der überhaupzt nicht klar. Ich schaffe es nicht mal überhaupt irgendeine Musikdatei abzuspielen. Zu mindestens finde ich keine Stelle, wo man die einfügen kann ;). Bei dem Button "..." schließt er nur das Programm, nicht mehr.
retnyg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mi 02.11.05 17:34 
user profile iconHeiko hat folgendes geschrieben:
mhm, ich komme mit der überhaupzt nicht klar. Ich schaffe es nicht mal überhaupt irgendeine Musikdatei abzuspielen. Zu mindestens finde ich keine Stelle, wo man die einfügen kann ;).

einfach mit drag und drop auf der titelleiste fallen lassen, oder bei der combobox den ordnernamen eintippen und enter drücken

user profile iconHeiko hat folgendes geschrieben:
Bei dem Button "..." schließt er nur das Programm, nicht mehr.

eigentlich sollte er dir da auf die combobox schreiben, dass du dort den pfad eintippen sollst...

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 02.11.05 17:37 
Zitat:

cool people type their pathz [here]

Und noch coolere Programmierer implementieren einen "Ordner öffnen" Dialog, so fern sie dass den können. ;)

Zitat:

if u want the form stays open,

Und wenn schon Englisch dann bitte auch korrektes Englisch:

Zitat:

If you want the form to stay open, ...


Tooltips für die Schaltflächen wären nicht schlecht oder beschrifte zu mindest die beiden grauen Striche unter der Titelanzeige.

Dieses automatische Mini-Modus finde ich etwas nervig, wenn man mit dem Programm arbeitet und mal die Maus beiseite schiebt, um den Mauszeiger aus dem Weg zu haben, wenn man was lesen will.

Man kann mit TAB nicht durch die Kontrollelemente "steppen".

Es taucht nicht in der Taskleiste auf, so dass man es nicht mit ALT+TAB erreichen kann. Da ich viel mit der Tastatur arbeite, empfinde ich das als etwas störend.

mach das Feld zum Titelanzeigen so breit wie das ganze Fenster und du sparst dir das Scrollen des Textes.
MagicAndre1981
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 02.11.05 17:58 
user profile iconretnyg hat folgendes geschrieben:
und, wie gefällt sie dir ?


gar nicht mal so schlecht. Der Speicher- und Lautstärke-Bug der alten Version ist weg.

Das Hinzufügen der Lieder geht auch saufix :-)