W sekcji private naszej formy, na której jest TListView umieszczamy dwie zmienne:
1 2 3 |
MovingIcon: Boolean; MovingP, StartP: TPoint; |
Następnie do zdarzeń OnMouseDown, OnMouseMove i OnMouseUp naszego ListView’a podpinamy kolejne procedury:
(w przykładzie główna forma nazywa się TfrmTest, a nasz ListView lvTest)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
procedure TfrmTest.lvTestMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if lvTest.ItemIndex <> -1 then begin MovingIcon := True; MovingP := Point(X, Y); StartP := lvTest.Items[lvTest.ItemIndex].Position; end; end; procedure TfrmTest.lvTestMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if MovingIcon then with lvTest.Items[lvTest.ItemIndex] do SetPosition(Point(StartP.X + (X - MovingP.X), StartP.Y + (Y - MovingP.Y))); end; procedure TfrmTest.lvTestMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin MovingIcon := False end; |
Autor: Kkkas