Внешний вид сайта:

Как переместить пункты ListBox при помощи мыши

Компонент TLIstBox представляет собой коллекцию элементов в прокручиваемом списке. Delphi позволяет легко прогаммировать перетаскивание элементов списка в приложениях.

Перетаскивание элементов ListBox при помощи мыши

Вот как можно менять позиции элементов списка ListBox с помощью перетаскивания:

  1. Поместите компонент TListBox (lbTest) на форму.
  2. Добавьте несколько элементов списка при помощи свойства Items.

    Установите свойство DragMode компонента ListBox в dmAutomatic (это можно сделать в Инспекторе объектов или в событии OnCreate формы).

Напишите перехватчик в событиях DragOver и DragDrop компонента ListBox.

var
  Form1: TForm1;
  start: TPoint;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  lbTest.DragMode:= dmAutomatic;
end;

procedure TForm1.lbTestDragDrop(Sender, Source: TObject; X, Y: Integer);
var
  dropPos, startPos: integer;
  dropPoint: TPoint;
begin
  dropPoint.X:= X;
  dropPoint.Y:= Y;

  with Source as TListBox do
  begin
    startPos:= ItemAtPos(start, true);
    dropPos:= ItemAtPos(dropPoint, true);

    Items.Move(startPos, dropPos);
  end;
end;

procedure TForm1.lbTestDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept:= Source = lbTest;
end;

procedure TForm1.lbTestMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  start.X:= X;
  start.Y:= Y;
end;

Комментарии

Нет комментариев. Ваш будет первым!