Drag and Drop со списками

Drag and Drop со списками

{
 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;

Взято с сайта: http://www.swissdelphicenter.ch

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...