Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Einträge in ListBox verschieben (Drag&Drop) (https://www.delphipraxis.net/271-eintraege-listbox-verschieben-drag-drop.html)

Tpercon 27. Jun 2002 15:13


Einträge in ListBox verschieben (Drag&Drop)
 
Wie kann man die Einträge in der ListBox Komponente untereinander verschieben?

Luckie 27. Jun 2002 15:26

Keine Ahnung, ob der Code was taugt. hab eich aus meiner Code-Schnipsel-Sammlung:
Code:
OnMouseDown:
if Button = mbLeft then
begin
  // Starten des Drag'n'Drop-Vorgangs der playlisteinträge
  if Playlist.ItemAtPos(Point(x, y), True) > -1 then
  begin
    Playlist.BeginDrag(False);
  end;
end;

OnDragOver:
begin
  NewItemIndex := Playlist.TopIndex + (Y div Playlist.ItemHeight);
  if NewItemIndex > Playlist.Items.Count -1 then
    NewItemIndex := Playlist.Items.Count -1;
  Playlist.Items.Move(Playlist.ItemIndex, NewItemIndex);
  Playlist.ItemIndex := NewItemIndex;
  Hauptfenster.Filelist.Items.Move(Playlist.ItemIndex, NewItemIndex);
  Hauptfenster.Filelist.ItemIndex := NewItemIndex;
  Accept := True;
end;
by Daniel B; Form.

Alfons_G 27. Jun 2002 15:33

:hi:
schau Dir mal diesen Code an:
Ich hatte bei diesem Projekt statt der normalen ListBox die LMDListBox aus den LMD-Tools verwendet, die Vorgehensweise ist jedoch dieselbe.
Code:
procedure TMainForm.LMDListBox1DragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
begin
  if Source is TLMDListBox then
    Accept := true;
end;

procedure TMainForm.LMDListBox1DragDrop(Sender, Source: TObject; X,
  Y: Integer);
var
  i: integer;
begin
  i := LMDListBox1.ItemAtPos (Point(x,y),true);
  if i > -1 then
    begin
    LMDListBox1.Items.Move (Zeile ,i);
  end;
end;

procedure TMainForm.LMDListBox1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  LPos: integer;
begin
  LPos := LMDListBox1.ItemAtPos (Point(x,y),true) ;
  if LPos > -1 then
  begin
    try
      Zeile := LPos;
      LMDListBox1.BeginDrag (false);
      // sonstwas machen ...
    except
      // oder auch nicht...
    end;
  end;
end;
:coder:

by Daniel B; Form.

toms 27. Jun 2002 16:29

Hi,

Hier findest du auch noch ein Beispiel (mit Autoscroll Funktion)

http://www.swissdelphicenter.ch/de/showcode.php?id=200


tom

Tpercon 27. Jun 2002 17:39

Hi

Danke euch. Ich hab die Version von Alfons G genommen.

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz