Статьи
|
Компонент TLIstBox представляет собой коллекцию элементов в прокручиваемом списке. Delphi позволяет легко прогаммировать перетаскивание элементов списка в приложениях. Это уже было рассмотрено здесь.
Вот как можно менять позиции элементов списка ListBox с помощью перетаскивания:
- Поместите компонент TListBox (lbTest) на форму.
- Добавьте несколько элементов списка при помощи свойства 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;
|