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

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

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

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

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

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

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

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

  3. Напишите перехватчик в событиях 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;
    

 

Комментарии   

 
0 #1 Яр 26.05.2016 13:56
Что с кодировРºÐ¾Ð¹ на сайте?
Цитировать
 

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


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