![]() |
Items in einer Listbox verschieben
N'abend,
ich versuche gerade ein Programm mit Delphi 5 zu schreiben, dass folgendes kann: Eine Listbox in der verschiedene Items stehen. Wenn ich ein Item anklicke und nach oben und unten bewege verschiebt es sich innerhalb der Listbox. Wenn ich die Maustaste wieder loslasse gliedert es sich dort in der Listbox ein, wo es zu diesem Zeitpunkt befindet. Kann man das verstehen. Das ist ähnlich wie beim Media Player in der medienbibliothek. Wäre nett wenn jemand sagen kann wie das geht. Vielen dank schon im Vorraus. |
Re: Items in einer Listbox verschieben
Items.Move
Sorted sollte, falls sein Selbe verfahren wie in einer StringList |
Re: Items in einer Listbox verschieben
Hallo neolithos,
das habe ich jetzt nicht ganz verstanden. Ich bin noch recht neu im Thema Delphi und Programmieren. Wäre echt nett wenn du mir den gesamten BEfehl hinschrieben könntest. Vielen Dank |
Re: Items in einer Listbox verschieben
Bsp:
deine Liste heißt lst.
Delphi-Quellcode:
lst.Items.Move([aktuelle Position], [Neue Position]);
|
Re: Items in einer Listbox verschieben
Hallo Neo.
Aber was ist bei dir aktuelle Position. Das muss ich ja wahrscheinlich erst definieren. Weil so wie du das sagst klappt es nicht. Außerdem wo genau muss ich den Befehl einfügen? Als procedure für einen Button ist ja quatsch. Danke für Hilfe, auch wenn's ein bißchen Mühselig zu sein scheint. Versuch mir doch einfach einen kompletten Quelltext zu schicken mit dem das für eine Listbox funktioniert. Ich danke dir |
Re: Items in einer Listbox verschieben
aktuelle Position meine ich den Eintrag den du verschieben möchtest
der kann zum Bsp. der gewählte sein.
Delphi-Quellcode:
Verschiebt den gewählten eintrag um eins nach unten
lst.Items.Move(lst.ItemIndex, lst.ItemIndex + 1);
|
Re: Items in einer Listbox verschieben
Ja gut. Das hilft mir schon ein bißchen weiter.
Aber ich glaube ich habe meine Frage noch nicht präzise genug formuliert: Wenn ich ein Item mit der Maus anklicke, die Maus gedrückt halte und die MAus nach oben oder unten bewege, dann soll sich das Item ebenfalls mitbewegen und entsprechend die Positionen in der Listbox verrutschen. Genau wie im Windows Explorer. Verstehst du jetzt? Tut mir leid dass ich dich damit so nerve, aber es ist wirklich wichtig für mich das zu wissen. Danke nochmal |
Re: Items in einer Listbox verschieben
Für Anfänger empfehle ich die Sache mit den Schalter.
Und die andere Sache (Drag&Drop) ist nicht so einfach... 1. Stelle DragMode der Liste auf dmAutomatic. 2. Lege das Ereignis DragOver der ListBox an
Delphi-Quellcode:
3. Lege das Ereignis DragDrop der ListBox an
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean); begin // AutoScroll und anzeigen wo der Eintrag hin soll // ganz du ja später klären // das ist das komplizierte daran Accept := Source = ListBox1; // bist du eintrag von mir end;
Delphi-Quellcode:
Lies die Hilfe noch mal dazu ...
procedure TForm1.PWListBox1DragDrop(Sender, Source: TObject; X,
Y: Integer); var iNewPos : Integer; begin with PWListBox1 do begin iNewPos := ItemAtPos(Point(x, y), true); // ermittle Eintrag unter maus if iNewPos = -1 then // kein Eintrag darunter iNewPos := Items.Count - 1; // also werde letzter Items.Move(ItemIndex, iNewPos); // Neue Position ItemIndex := iNewPos; end; end; |
Re: Items in einer Listbox verschieben
Super, danke. es klappt.
Ihr seid echt voll nett hier, danke |
Re: Items in einer Listbox verschieben
wie heißt den der befehl, mit dem ich in einer listview items verschieben kann?
move gibt es dort ja nicht! habs zumindest nicht gefunden! gruss, iaby |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 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