AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Listboxeintrag merken und wiederherstellen

Ein Thema von bluescreen25 · begonnen am 28. Dez 2005 · letzter Beitrag vom 28. Dez 2005
 
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#1

Listboxeintrag merken und wiederherstellen

  Alt 28. Dez 2005, 18:59
Hallo,
ehrlich gesagt weiss ich nicht mehr weiter . Folgende Knobelaufgabe für eine Listbox mit MP3-Files:

Ich möchte den laufenden MP3-Track farbig hinterlegt haben, auch wenn dieser innerhalb der Listbox-Indexe verschoben wird und vor allem muss der richtige Track farbig sein, auch wenn es in der Listbox zwei mal die gleichen Einträge gibt.

1. Im Moment habe ich es nur hinbekommen, das er über den Index immer richtig den laufenden Track farbig anzeigt, aber bei verschieben wieder den falschen, oder
2. das über den PlayList.IndexOf(Playsong) auch bei verschieben der laufende Track immer farbig hinterlegt bleibt, aber bei zwei gleichen Einträgen er immer den ersten gefundenen farbig hinterlegt, obwohl er den zweiten richtigen abspielt.


Hier die Procedure des abspielenden Tracks mit den z.Z. verfügbaren Variablen:
Delphi-Quellcode:
procedure Tmediaplayer_frm.PlayFile(songNumber: integer);
 begin
   if fileexists(Playlist.Strings[songNumber]) then
     begin
      CurrentSong := songNumber;
      playsong := Playlist.Strings[songNumber];
      playsong_name := PlayList_ListBox.Items.Strings[songNumber];
      bassplayer.play(playsong);
      trackbar_position.MaxValue := BassPlayer.length;
      media_scroll_txt_run;
      show_tracktime;
      PlayList_ListBox.Refresh;
     end;
 end;

Hier die procedure für das Halten des Topindex der Listbox im sichtbaren Bereich:
Delphi-Quellcode:
procedure Tmediaplayer_frm.Listbox_track_middle_timerTimer(
  Sender: TObject);
 begin
   if currentsong = 0 then
   PlayList_ListBox.TopIndex := currentsong;//PlayList.IndexOf(Playsong) ;
   if currentsong > 0 then
   PlayList_ListBox.TopIndex := currentsong -5;//PlayList.IndexOf(Playsong)-5 ;
 end;
Hier die procedure für das farbige hinterlegen des laufenden Tracks:
Delphi-Quellcode:
procedure Tmediaplayer_frm.PlayList_ListBoxDrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
  C:TCanvas;

 begin
   C := TListbox(Control).Canvas;
   C.Font.Assign(TListbox(Control).Font);

    if Index = currentsong then//PlayList.IndexOf(Playsong) then
        C.Brush.Color := clTeal;
      C.Font.Color := clWhite;
    If odSelected in State Then
      C.Brush.Color := clHighlight;
      C.FillRect(Rect);
      C.TextRect(Rect, Rect.Left, Rect.Top, TListbox(Control).Items[Index]);
    If odFocused in State Then
      C.DrawFocusRect(Rect);
 end;
Hier die procedure zum verschieben der Listboxeinträge sowie TStringlist(Playlist):
Delphi-Quellcode:
procedure Tmediaplayer_frm.PlayList_ListBoxDragDrop(Sender,
  Source: TObject; X, Y: Integer);
var
    i,j,k : Integer;
                   //Playlisteneinträge verschieben
 begin
   i := PlayList_ListBox.ItemIndex;
   j := PlayList_ListBox.ItemAtPos(point(x,y),true);

   if j >-1 then //nur drag & drop ,wenn auch item vorhanden
   begin
     PlayList_ListBox.Items.Move(i,j);
     PlayList.Move(i,j);
     PlayList_ListBox.Refresh;
     PlayList_ListBox.Selected[j]:=false;
   end;
 end;

Der komplette Code hier hinterlegt immer den laufenden Track farbig, aber bei verschieben ist es falsch.

Mein Ansatz wäre beim verschieben sich den Track nochmal separat zu merken, aber wie? Der Index ändert sich und es gibt doppelte Einträge in der Listbox, welches PlayList.IndexOf(Playsong) auch ausschliesst.

Bitte nicht über das Konstrukt meckern, mache Delphi erst seit 6 Wochen....
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz