Einzelnen Beitrag anzeigen

Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#1

Probleme mit der Funktion Move und DragOver

  Alt 14. Mär 2007, 20:44
Hi,

ich habe im Forum folgenden Drag&Drop-Code gefunden:
Delphi-Quellcode:
procedure TfrmMain.lbListDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
var verschieben, ItemPos, i: integer;
begin
  if (Source is TListbox) and ((Source as Tlistbox).SelCount > 0) then
    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
              Break;
          end;
          if verschieben > 0 then
            inc(i)
          else
            dec(i);
        end;
      end;
      Accept := True
    end else
      Accept:= False;
end;
Da die Items nur die Ausgabe eines Arrays sind, muss das Array noch aktualisiert werden. Dies wollte ich an der mit * markierten Stelle mit der Funktion Move erledigen:
Move(fFiles[i], fFiles[i - verschieben], ((i - verschieben) - i) * SizeOf(fFiles[i])); Warum ändert sich im Array nichts ?

[Wie ich Drag&Drop liebe, zumal die Titelformulierungen hierbei noch unglücklicher als sonst sind....]
  Mit Zitat antworten Zitat