Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme mit der Funktion Move und DragOver (https://www.delphipraxis.net/88377-probleme-mit-der-funktion-move-und-dragover.html)

Nils_13 14. Mär 2007 20:44


Probleme mit der Funktion Move und DragOver
 
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:
Delphi-Quellcode:
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....]


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz