Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Listboxeintrag merken und wiederherstellen

  Alt 28. Dez 2005, 20:12
Ja, da bin ich wohl etwas zu kurz gesprungen - irgendwo musst du natürlich deine Variable CurrentSong korrigieren:

Delphi-Quellcode:
//Playlisteneinträge verschieben
procedure Tmediaplayer_frm.PlayList_ListBoxDragDrop(Sender,
  Source: TObject; X, Y: Integer);
var
  i,j : Integer;
begin
  i := PlayList_ListBox.ItemIndex;
  j := PlayList_ListBox.ItemAtPos(Point(x, y), true);

  // diesen Test solltest du im OnDragOver machenvorhanden
  if j > -1 then
  begin
    // die nächste Zeile würde bei virtueller Listbox entfallen
    PlayList_ListBox.Items.Move(i,j);
    PlayList.Move(i,j);
    AdjustCurrentSong(i, j);
    PlayList_ListBox.ItemIndex := j;
  end;
end;

// interval test
procedure TMediaPlayer_frm.AdjustCurrentSong(iFrom, iTo: integer);
begin
  if (CurrentSong < iFrom) and (CurrentSong < iTo)
  or (CurrentSong > iFrom) and (CurrentSong > iTo) then
    Exit; // above and below don't matter
  if iFrom < iTo
    then Dec(CurrentSong) // sliding up
    else Inc(CurrentSong); // sliding down
end;
Ob es jetzt < oder <= bzw. > oder >= sein muss, dass überlasse ich dir zum Grübeln.

marabu
  Mit Zitat antworten Zitat