Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Drag&Drop: Startpos immer = Droppos (https://www.delphipraxis.net/88251-drag-drop-startpos-immer-%3D-droppos.html)

Nils_13 12. Mär 2007 15:56


Drag&Drop: Startpos immer = Droppos
 
Hi,

die Startposition ist immer gleich der Dropposition bei einem Drag&Drop in einer Listbox.
Warum ? Das darf nämlich nicht sein....
Delphi-Quellcode:
procedure TfrmMain.lbListDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept := Source = lbList;
end;

procedure TfrmMain.lbListDragDrop(Sender, Source: TObject; X, Y: Integer);
var DropPosition    : Integer;
    StartPosition   : Integer;
    i               : Integer;
    DropPoint       : TPoint;
    temp            : TAudioFile;
begin
  DropPoint.X := X;
  DropPoint.Y := Y;
  with Source as TListBox do
  begin
    StartPosition := ItemAtPos(StartingPoint,True);
    DropPosition := ItemAtPos(DropPoint,True);
    temp := fFiles[startposition];
    for i := startposition downto dropposition + 1 do
    begin
      fFiles[i] := fFiles[i-1];
    end;

    for i := startposition to dropposition - 1 do
    begin
      fFiles[i] := fFiles[i+1];
    end;
    fFiles[dropposition] := temp;
    UpdateListBox;
  end;
end;

bttb930 12. Mär 2007 16:39

Re: Drag&Drop: Startpos immer = Droppos
 
was ist denn StartingPoint

Nils_13 12. Mär 2007 16:42

Re: Drag&Drop: Startpos immer = Droppos
 
:oops: Ganz vergessen:
Delphi-Quellcode:
StartingPoint : TPoint;
und im MouseDown der Listbox:
  StartingPoint.X := X;
  StartingPoint.Y := Y;

bttb930 12. Mär 2007 16:43

Re: Drag&Drop: Startpos immer = Droppos
 
Zitat:

Zitat von Nils_13
:oops: Ganz vergessen:
Delphi-Quellcode:
StartingPoint : TPoint;
und im MouseDown der Listbox:
  StartingPoint.X := X;
  StartingPoint.Y := Y;

okay, das gehört nicht ins mousedown sondern ins startdrag

Nils_13 12. Mär 2007 16:47

Re: Drag&Drop: Startpos immer = Droppos
 
Und was soll ich dann für X und Y einsetzen ? Das gibt es bei StartDrag nicht.

ste_ett 12. Mär 2007 16:50

Re: Drag&Drop: Startpos immer = Droppos
 
Zitat:

Zitat von Nils_13
Und was soll ich dann für X und Y einsetzen ? Das gibt es bei StartDrag nicht.

Delphi-Quellcode:
var
  CurPos: TPoint;


  if (GetCursorPos(CurPos)) then
  begin
     := CurPos.X;
  end;

xaromz 12. Mär 2007 16:53

Re: Drag&Drop: Startpos immer = Droppos
 
Hallo,

bekommst Du den Index des Items nicht über die ItemIndex-Eigenschaft der Listbox?

Gruß
xaromz

Nils_13 12. Mär 2007 16:56

Re: Drag&Drop: Startpos immer = Droppos
 
Ok, über ItemIndex ist StartPos korrekt, aber wieso ist DropPos immer noch = StartPos ?

xaromz 12. Mär 2007 17:03

Re: Drag&Drop: Startpos immer = Droppos
 
Hallo,
Zitat:

Zitat von Nils_13
Ok, über ItemIndex ist StartPos korrekt, aber wieso ist DropPos immer noch = StartPos ?

sind X und Y Clientkoordinaten oder Screenkoordinaten (hab gerade kein Delphi zur Hand)?

Gruß
xaromz

Nils_13 12. Mär 2007 17:12

Re: Drag&Drop: Startpos immer = Droppos
 
Delphi-Quellcode:
lbListDragDrop(Sender, Source: TObject; X, Y: Integer);
Ich denke es bezieht sich auf die Listbox.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 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