Delphi Tips & Tricks softsale > Delphi Tips & Tricks      

następna rada >
< poprzednia rada

Jak przesunąć elementy listboxa metodą drag and drop ?



Ustaw własność DragMode ListBoxa na dmAutomatic (np na zdarzeniu OnCreate formy). 
Obsłuż zdarzenia MouseDown, DragOver oraz DragDrop listboxa 
.....
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
Accept := Source = ListBox1;
end;
.....
procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   StartingPoint.X := X;
   StartingPoint.Y := Y;
end;
......
procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
var DropPosition, StartPosition: Integer;
    DropPoint: TPoint;
begin
   DropPoint.X := X;
   DropPoint.Y := Y;
   with Source as TListBox do
   begin
     StartPosition := ItemAtPos(StartingPoint,True) ;
     DropPosition := ItemAtPos(DropPoint,True) ;
     Items.Move(StartPosition, DropPosition) ;
   end;
end;

Ilustruje to przykład tip41.zip


SOFTSALE - Oprogramowanie i Szkolenia
softsale@softsale.com.pl

03-565 Warszawa , ul. Borzymowska 43 lok. 301C
tel/fax:4084840,0607612428