Hab jetzt folgende Lösung gefunden, die auch gut funktioniert. Jetzt muss ich das aber so machen, dass die Items der ListBox2 parallel mit verschoben werden müssen. Wer hat da eine Idee?
Delphi-Quellcode:
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState;
var Accept: Boolean);
var
verschieben, ItemPos, i: integer;
begin
Accept := false;
if not (Source
is TListBox)
then
Exit;
if (Source
as TListBox).MultiSelect
then
begin
if (Source
as TListBox).SelCount < 0
then
Exit;
end else begin
if ((Source
as TListBox).ItemIndex < 0)
then
Exit;
end;
with Source
as TListBox
do
begin
ItemPos := ItemAtPos(point(x,y), true);
if (ItemPos < 0)
or (ItemPos >= Items.Count)
then
Exit;
if Selected[ItemPos]
then
ItemIndex := ItemPos;
verschieben := ItemIndex - ItemPos;
if verschieben <> 0
then
begin
if verschieben > 0
then
i := 0
else
i := pred(Items.Count);
while (i >= 0)
and (i < Items.Count)
do
begin
if Selected[i]
then
begin
if (i-verschieben >= 0)
and (i-verschieben < Items.Count)
then
begin
Items.Move(i, i-verschieben);
Selected[i]:=false;
Selected[i-verschieben]:=true;
end else begin
break;
end;
// if
end;
// if
if verschieben > 0
then
inc(i)
else
dec(i);
end;
// while
end;
// if
end;
// with
Accept := true;
end;