![]() |
Mehrer einträge verschieben
Hallo,
ich möchte gerne mehrer einträge einer TJVCChecklistbox verschieben. mit einem eintrag habe ich es hinbekommen... das ganze soll in etwa so werden wie im Windows MediaPlayer oder Winamp geht. hier ist mein qullcode:
Delphi-Quellcode:
aufjedenfall geht das so nicht, ich weiß auch noch nicht warum(leider).
var
index,newIndex:Integer; i:Integer; begin if Sender <> Source then begin // TJvCheckListBox(Source).MoveSelection(TJvCheckListBox(sender)); TJvCheckListBox(Source).CopySelection(TJvCheckListBox(sender)); end else begin // index:=TJvCheckListBox(Source).ItemIndex; newIndex:=TJvCheckListBox(Source).ItemAtPos(Point(x,y),true); for i:=0 to TJvCheckListBox(Source).Count-1 do begin if TJvCheckListBox(Source).Selected[i] = True then begin TJvCheckListBox(Source).items.exchange(i,newIndex); TJvCheckListBox(Source).Selected[NewIndex]:=True; end; end; end; es gibt keine fehlermeldung er verschiebt auch nur an die falsche position (ich arbeitet mit unendliche vielen listboxen dahrer habe ich den oben gezeigten weg gewählt ! ich hoffe ihr könnt das problem nachvollziehen ! |
Re: Mehrer einträge verschieben
ich habe einen weg gefunden allerdings geht dieser weg nur wenn nicht das letzte item in der liste ausgwält wird beispiel:
Item1 Item2 Item3 Item4 Item5 jetzt ziehe ich item1 und 2 auf Item5 dann vertauschen sich die einträge von item1 und 2 die reinfolge ändert sicht dann sieht die liste so aus: Item5 Item3 Item4 Item2 Item1 wobei sie eigentlich so aussehen sollte: Item5 Item3 Item4 Item1 Item2 hier der code:
Delphi-Quellcode:
ich hoffe ihr könnt mir folgeden
procedure TForm1.DraqDrop(Sender, Source: TObject; X, Y: Integer);
var index,newIndex:Integer; i:Integer; begin if Sender <> Source then begin // TJvCheckListBox(Source).MoveSelection(TJvCheckListBox(sender)); TJvCheckListBox(Source).CopySelection(TJvCheckListBox(sender)); end else begin // index:=TJvCheckListBox(Source).ItemIndex; newIndex:=TJvCheckListBox(Source).ItemAtPos(Point(x,y),true); if newIndex > -1 then begin for i:=0 to TJvCheckListBox(Source).Count-1 do begin if TJvCheckListBox(Source).Selected[i] = True then begin TJvCheckListBox(Source).items.exchange(i,newIndex); TJvCheckListBox(Source).Selected[i]:=false; TJvCheckListBox(Source).Selected[NewIndex]:=True; if newIndex+1 < TJvCheckListBox(Source).items.count then newIndex:=newIndex+1 else newIndex:=newIndex-1 end; end; end; end; end; |
Re: Mehrer einträge verschieben
Kannst du etwas genauer beschreiben, wie die neue Reihenfolge zustande kommen soll? Denn dein Drag & Drop-Beispiel ist mir nicht nur aus keinem anderen Programm bekannt, ich sehe auch überhaupt keine Logik dahinter. So sähe dein Beispiel in Winamp aus:
Zitat:
|
Re: Mehrer einträge verschieben
naja so änliches solltes es auch bei mir funktinieren.... das problem es halt die letztzeile.
ich sage ja immer +1 bei newindex und am ende geht das nicht mehr wenn ich jetzt es prüfe und dann garnichts mache bzw. -1 hinschreibe bekomme ich die reinfolge durcheinader.... das problem trit nur auf wenn ich zwei einträge makiert habe wenn ich mehr als zwei makiert habe dann geht es bzw. dann bleibt die reinfolge erhalten. der grund wird das +1 sein und genau das ist das problem ! edit: das beispiel im zweiten post sollte es nur verdeutlichen wie es aussehen sollte wenn ich was verschoben das war nur einbeispiel ! |
Re: Mehrer einträge verschieben
Wie sollen wir dir denn helfen können, wenn du nicht verrätst, wie die Einträge verschoben werden sollen?
|
Re: Mehrer einträge verschieben
das verschieben soll mit der mauß passieren mit einem eintrag geht das ja auch schon.
d.h. ich ziehe die Maus auf einen neuen eintrag und dort sollen die makierten einträge landen. (und zwawr alle makieren einträge) so wie in winamp und dem mediaplayer halt.... Ich möchte meine einträge mit der Maus per Draq und Drop verschieben können und zwar alle die makiert sind sollen an die neue position gebracht werden und genau da habe ich probleme ! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:58 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