Hallo,
habe ein komisches problem was ich einfach nicht lösen kann, seit wochen befasse ich mich jetzt schon damit. Kommme aber leider immer noch nicht weiter.
Hier ist der qullcode denn ich bis jetzt geschrieben habe:
(nur das notwendigste,wegen der übersicht)
Delphi-Quellcode:
{
Erstellungs Datum : 31.07.2005
updatet : 21.08.2005
}
procedure TPlayliste_PLY.SetIndex(Index:Integer);
function isOk(Index:Integer):Boolean;
var
ok:Boolean;
str:String;
i:Integer;
begin
ok:=False;
with Playliste do begin
if M = ColorPlaying then begin
if ColorIsStr <> '' then begin
str:=GetValue(index,VC);
for i:=1 to NumToken(ColorIsStr,';') do begin
if (str <> 'clNone') and (GetToken(ColorIsStr,';',i) = str) then begin
ok:=True;
Break;
end;
end;
end
else
ok:=True;
end
else begin
if m <> NonePlaying then begin
if (m = isPlaying ) and (Pos('*',Strings[index]) > 0) then ok:=True; // Schon gespielt ?
if (m = NoPlaying ) and (Pos('*',Strings[index]) =0) then ok:=True; // Noch nicht gespielt
end
else
ok:=True;
end;
end;
result:=ok;
end;
var
r,m1:Integer;
begin
r:=-1;
if index = 1 then begin // Weiter
r:=PlayIndex;
repeat
if r+1 <= Playliste.Count-1 then
r:=r+1
else
r:=0;
until isOK(r) = True;
end;
if Assigned(onChangeItem) then onChangeItem(r,index)
end;
// und anwenden tue ich es so:
procedure TForm1.ChangeItemIndex(Index,m1:Integer);
begin
ListBox1.Selected[ListBox1.ItemIndex]:=False;
ListBox1.Selected[Index]:=True;
MusicListe.PlayIndex:=index;
end;
das problem ist: Ich habe eine playliste wo der erste eintrag übersprungen werden muss.
Wenn ich jetzt r+1 nehme ist der index immer einen eintrag zuweit d.h. ich habe hier eine liste:
1. Eintrag
2. Eintrag*
3. Eintrag
4. Eintrag*
5. Eintrag
und nun wenn ich nur die hörbaren abspielen möchte(hier *) ist er z.b. bei dem 3. item anstat dem 2. Item was letztendlich auch klar ist nur ich weiß nicht wie ich es lösen kann. ich habe versucht es mit -1 zuversuch nacher aber das bringt ja auch nichts.
ich kann ja nicht erst r+1 und dann wieder -1 nehmen....
Ich weiß leider keine lösung mehr