Einzelnen Beitrag anzeigen

Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2
  Alt 3. Jul 2003, 13:09
Das hat mich auch interessiert, hier die Lösung. Ändere folgende Eigenschaften der ListBox
  • DragMode: dmAutomatic
  • MultiSelect: True
Dann musst Du folgenden Code für die Ereignisse OnDragDrop und OnDragOver der ListBox eingeben
Delphi-Quellcode:
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept := (Sender = Source) and (Sender = ListBox1);
end;

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  I, NewPos: Integer;
  Temp: TStringList;
begin
  if not (Sender = Source) and (Sender = ListBox1) then
    Exit;
  Temp := TStringList.Create;
  try
    NewPos := ListBox1.ItemAtPos(Point(X, Y), True);
    for I := Pred(ListBox1.Items.Count) downto 0 do
      if ListBox1.Selected[I] then
      begin
        Temp.Insert(0, ListBox1.Items[I]);
        ListBox1.Items.Delete(I);
        if I < NewPos then
          Dec(NewPos);
      end;

    if NewPos < 0 then
      ListBox1.Items.AddStrings(Temp)
    else for I := Pred(Temp.Count) downto 0 do
      ListBox1.Items.Insert(NewPos, Temp[I]);
  finally
    Temp.Free;
  end;
end;
......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat