Code: |
{ This example shows how to drag&drop within a TListBox. The Demo Program also shows how to implement an autoscroll-feature. }
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := Sender is TListBox; end;
procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer); var iTemp: Integer; ptTemp: TPoint; szTemp: string; begin { change the x,y coordinates into a TPoint record } ptTemp.x := x; ptTemp.y := y;
{ Use a while loop instead of a for loop due to items possible being removed from listboxes this prevents an out of bounds exception } iTemp := 0; while iTemp <= TListBox(Source).Items.Count-1 do begin { look for the selected items as these are the ones we wish to move } if TListBox(Source).selected[iTemp] then begin { use a with as to make code easier to read } with Sender as TListBox do begin { need to use a temporary variable as when the item is deleted the indexing will change } szTemp := TListBox(Source).Items[iTemp];
{ delete the item that is being dragged } TListBox(Source).Items.Delete(iTemp);
{ insert the item into the correct position in the listbox that it was dropped on } Items.Insert(itemAtPos(ptTemp, True), szTemp); end; end; Inc(iTemp); end; end; |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!