Utiliser Drag&Drop avec un TListBox

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 var iable 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;
Ajouter un commentaire
Pseudo
Adresse email
Site internet (optionnel)
Votre commentaire
Fiche de l'article
Mise a jour16/11/2001
VisualisationVu 701 fois
PublicInternaute zz
CategorieDelphi - Trucs et astuces - Objet
Auteur de l'article
SwissDelphiCenter SwissDelphiCenter
connecté le 02/11/2011
329 articles dans la section
Contacter l'auteur