Статьи
|
Компонент Delphi TListBox отображает коллекцию пунктов в прокручиваемом списке. Delphi позволяет облегчить перетаскивание в Ваших приложениях.
Есть способ позволить пользователю перестраивать позиции пунктов в ListBox, используя Drag and Drop.
- Поместите TListBox по имени ListBox1 на форму
- Добавьте в него несколько строк, используя свойство Items
- Установите свойство DragMode в dmAutomatic (в событии формы OnCreate или используя Инспектор Объектов)
- Обработайте события 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;
|