Карта сайтаСсылкиКонтакты

Как переместить пункт ListBox при помощи мыши (Drag and Drop)

PDF Печать
Статьи

Компонент Delphi TListBox отображает коллекцию пунктов в прокручиваемом списке. Delphi позволяет облегчить перетаскивание в Ваших приложениях.

Есть способ позволить пользователю перестраивать позиции пунктов в ListBox, используя Drag and Drop.

  1. Поместите TListBox по имени ListBox1 на форму
  2. Добавьте в него несколько строк, используя свойство Items
  3. Установите свойство DragMode в dmAutomatic (в событии формы OnCreate или используя Инспектор Объектов)
  4. Обработайте события MouseDown, DragOver и DragDrop

var // form level
   StartingPoint : TPoint;

implementation

{ ... }

procedure TForm1.FormCreate(Sender: TObject) ;
begin
   ListBox1.DragMode := dmAutomatic;
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;

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;

 

Добавить комментарий


Защитный код
Обновить