Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Items der ListBox über die Grenzen verschieben? (https://www.delphipraxis.net/160580-items-der-listbox-ueber-die-grenzen-verschieben.html)

AlexII 20. Mai 2011 16:30

Items der ListBox über die Grenzen verschieben?
 
Hallo, hab da eine Frage wo ich nicht weiter komme. Also ich verschiebe wie folgt Items in einer ListBox, was auch gut klappt, aber wenn ich ein Item weit nach vorne oder hinten verschieben will scrollt sich die ListBox nicht automatisch nach oben oder unten mit. So muss ich ein Item verschieben, die ListBox scrollen, wieder verschieben und weiter scrollen, bis ich oben oder unten ankomme, was sehr nervig ist.

Delphi-Quellcode:
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept := Source = ListBox1;
end;

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
var TargetIndex : Integer;
begin
  if (Sender is TTntListBox) and (Source is TTntListBox) then
  begin
    with Sender as TTntListBox do
    begin
      TargetIndex := ItemAtPos(Point(X, Y), True);
      if (ItemIndex > -1) then
      begin
        Items.Move(ItemIndex, TargetIndex);
        ListBox2.Items.Move(ListBox2.ItemIndex, TargetIndex);
        ListBox3.Items.Move(ListBox3.ItemIndex, TargetIndex);
        ListBox4.Items.Move(ListBox4.ItemIndex, TargetIndex);
      end;
    end;
  end;
end;

s.h.a.r.k 20. Mai 2011 16:32

AW: Items der ListBox über die Grenzen verschieben?
 
Idee: Prüfe im MouseMove-Ereignis, ob der Cursor von Top N Pixel entfernt ist und scrolle dann via Code nach oben bzw. eben das ganze analog nach unten. Idee klar? Dazu solltest dann noch ein Flag einführen, welches den Drag-Status beinhaltet, denn das Verhalten sollte nur aktiv sein, wenn du ein Item gegriffen hast.

AlexII 20. Mai 2011 16:39

AW: Items der ListBox über die Grenzen verschieben?
 
Wie heißt denn der Befehl zum scrollen?

s.h.a.r.k 20. Mai 2011 16:41

AW: Items der ListBox über die Grenzen verschieben?
 
Delphi-Quellcode:
ListBox1.ScrollBy()
?

Gib mir einen Moment, muss selbst nachschauen :mrgreen:

-- Edit: Habs gerade probiert, aber irgendwie hats auf die Schnell leider nicht geklappt. Dafür habe ich aber was bei den Schweizern gefunden. In der downloadbaren Demo sollte, laut Kommentar, alles notwendige drin stecken.

AlexII 20. Mai 2011 21:07

AW: Items der ListBox über die Grenzen verschieben?
 
Ja bei dem Demo wird die ListBox zwar automatisch gescrollt, aber man kann trotzdem kein Item z.B. an die erste Stelle ziehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz