was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews
 sonstiges ¦  tutorials ¦  Add&Win Gewinnspiel

Tips (1541)

Dateien (137)
Datenbanken (90)
Drucken (35)
Grafik (114)
IDE (21)
Indy (5)
Internet / LAN (130)
IntraWeb (0)
Mathematik (76)
Multimedia (45)
Oberfläche (107)
Objekte/
ActiveX (51)

OpenTools API (3)
Sonstiges (126)
Strings (83)
System (266)
VCL (242)

Tips sortiert nach
Komponente


Tip suchen

Tip hinzufügen

Add&Win Gewinnspiel

Werbung

35 Visitors Online


 
...Drag & Drop mit einer TListBox realisieren?
Autor: Thomas Stutz
[ Tip ausdrucken ]  


Tip Bewertung (10):  
     


{
 This example shows how to drag&drop within a TListBox.
 The Demo Program also shows how to implement an autoscroll-feature.

 Dieses Beispiel zeigt, wie man drag & drop in einer TListBox realisiert.
 Im Demo-Programm wird auch eine Autoscroll-Funktion gezeigt.
}

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;


 

Bewerten Sie diesen Tipp:

dürftig
ausgezeichnet


Copyright © by SwissDelphiCenter.ch
All trademarks are the sole property of their respective owners