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

Перемещение элементов TListBox при помощи мыши

Этот небольшой пример показывает, как использовать мышь для перемещения пунктов в TListBox. Обратите внимание, что это только маленький пример, который показывает Вам этот эффект.

Должны быть выполнены следующие шаги, чтобы получить рабочий код:

Установите свойство DragMode компонента TListBox в dmAutomatic. Затем, Вы должны обеспечить два обработчика событий DragDrop и DragOver для TListBox.

Поместите следующий код в обработчик события DragOver:

procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, 
      Y: Integer; State: TDragState; var Accept: Boolean); 
var 
  DropIndex: Integer; 
  TempStr  : String; 
begin 
  with TListBox(Sender) do 
  begin 
    DropIndex := ItemAtPos(Point(X,Y), True); 
    if (DropIndex > -1) and (DropIndex <> ItemIndex) then 
    begin 
      TempStr          := Items[DropIndex]; 
      Items[DropIndex] := Items[ItemIndex]; 
      Items[ItemIndex] := TempStr; 
      ItemIndex        := DropIndex; 
    end; 
  end; 
end; 

И наконец, поместите этот код в обработчик события DragDrop:

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, 
  Y: Integer); 
var 
  DropIndex: Integer; 
begin 
  DropIndex := TListBox(Sender).ItemAtPos(Point(X,Y),False); 
  with TListBox(Source) do 
  begin 
    TListBox(Sender).Items.Insert(DropIndex, Items[ItemIndex]); 
    Items.Delete(ItemIndex); 
  end; 
end; 

Теперь Вы можете перемещать элементы списка при помощи мыши.

Комментарии

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