Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ListView Ordnen (https://www.delphipraxis.net/9973-listview-ordnen.html)

No Voices 8. Okt 2003 19:44


ListView Ordnen
 
Hallöchen,

Ich bin immer noch dabei einen Player zu schreiben, und bin auch schon recht weit. Jedoch habe ich das problem das ich ind der ListView (L1) die einträge nicht verschieben kann. Als Caption habe ich den Item count genommen der soll sich dan natürlich auch ändern. Hat jemand ne idee???
Delphi-Quellcode:
procedure TForm1.B1Click(Sender: TObject);
var
  Datei : TListItem;
  i : integer;
begin
  if Open.Execute then
    begin
      for i := 0 to Open.Files.Count -1 do
        begin
          Datei := L1.Items.Add;
          Datei.ImageIndex := -1;
          Datei.Caption := IntToStr(L1.Items.Count);
          if ExtractFileExt(Open.Files[i]) = '.mp3' then
            Datei.SubItems.Insert(0, 'mp3');
          if ExtractFileExt(Open.Files[i]) = '.wma' then
            Datei.SubItems.Insert(0, 'wma');
          Datei.SubItems.Insert(1, ExtractFileExt(Open.Files[i]));
          Datei.SubItems.Insert(2, ExtractFileName(ChangeFileExt(Open.Files[i], '')));
          Datei.SubItems.Insert(3, Open.Files[i]);
        end;
    end;
end;

procedure TForm1.B2Click(Sender: TObject);
begin
  L1.Items.Item[im].ImageIndex := -1;
  im := L1.ItemIndex;
  l1.Items.Item[im].ImageIndex := 3;
  Edit1.Text := l1.Items.Item[im].SubItems.Strings[3];
end;

procedure TForm1.L1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
    begin
      with Sender as TListView do
        begin
          if L1.Selected.Index > -1 then
            BeginDrag(False);
          Label1.Caption := 'Von:' + IntToStr(L1.Selected.Index);
          index1 := L1.Selected.Index;
        end;
    end;
end;

procedure TForm1.L1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  if Source is TListView then
    Accept := True
  else
    Accept := False;

end;

procedure TForm1.L1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  if Source is TListView then
    with L1 do
      Label2.Caption := 'nach:' + IntToStr(l1.DropTarget.Index);
      index2 := l1.DropTarget.Index;
      //
      //Was muss hir stehen
      //
end;

procedure TForm1.L1EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
  //
  // und hir
  //
end;
:?:

Assarbad 27. Nov 2003 13:40

Re: ListView Ordnen
 
Was meinst du mit Ordnen? Sortieren oder per Drag'n'Drop hin und herziehen?

No Voices 2. Dez 2003 18:36

Re: ListView Ordnen
 
Hallo,
ich habe eine ListView als Playlist für einen MediaPlayer benutzt. Jetzt Möchte ich die einträge mit der Maus verschieben um die Liste zu sortieren. Das heist ich möchte die Reihenfolge in der die Titel abgespielt werden ändern. Geht das überhaupt ???

OLLI_T 2. Dez 2003 19:18

Re: ListView Ordnen
 
Guten Abend!

Klar geht das. Ich nutze in meinem aufgebohrtem Listview zwei Varianten:

1. Mit Drag & Drop verfrachtest Du einen Eintrag beliebig weit nach oben oder unten.

2. Die Variante von z.B. NERO gefällt mir persönlich sehr gut. Eintrag anklickern und bei gedrückter Maustaste lustig verschieben. Sobald der Cursor ein anderes Item tangiert wird munter getauscht. Hier hilft Dir die Methode GetItemAt des Listviews weiter.

Hab jetzt leider meinen Code nicht hier und muss jetzt erst mal trainieren. Aber sofern Du Interesse hast, helfe ich nachher gern weiter.

Viel Erfolg wünscht ...

OLLI


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 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-2025 by Thomas Breitkreuz