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:
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;
ich hoffe ihr könnt mir folgeden