AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Listview Items mit Checkboxen(!) mit Drag&Drop rearrangieren

Listview Items mit Checkboxen(!) mit Drag&Drop rearrangieren

Ein Thema von martinf16 · begonnen am 6. Sep 2009 · letzter Beitrag vom 6. Sep 2009
Antwort Antwort
martinf16

Registriert seit: 26. Aug 2007
99 Beiträge
 
Turbo Delphi für Win32
 
#1

Listview Items mit Checkboxen(!) mit Drag&Drop rearrangi

  Alt 6. Sep 2009, 18:07
Hallo,
ich benutze folgenden Code um per Drag and Drop die Items einer ListView zu verschieben. Also zum Beispiel das erste mit dem letzten per Maus auszutauschen:

Delphi-Quellcode:
//ListView OnDragDrop
procedure TListViewForm.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer) ;
var
  currentItem, nextItem, dragItem, dropItem : TListItem;
begin
  if Sender = Source then
  begin
    with TListView(Sender) do
    begin
      dropItem := GetItemAt(X, Y) ;
      currentItem := Selected;
      while currentItem <> nil do
      begin
        nextItem := GetNextItem(currentItem, SdAll, [IsSelected]) ;
        if Assigned(dropItem) then
          dragItem := Items.Insert(dropItem.Index)
        else
          dragItem := Items.Add;
        dragItem.Assign(currentItem) ;
        currentItem.Free;
        currentItem := nextItem;
      end;
    end;
  end;
end;

//ListView OnDragOver
procedure TListViewForm.ListView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean) ;
begin
  Accept := Sender = ListView1;
end;
Das funktioniert auch alles super - so lange die ListView keine Checkboxen enthält. Sobald die Checkboxen aktiviert sind kommt es zu einem "Index Out Of Bounds" Fehler.

Ist das ein Bug von Delphi oder müsste der Code irgendwie angepasst werden?

Vielen Dank
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Listview Items mit Checkboxen(!) mit Drag&Drop rearr

  Alt 6. Sep 2009, 18:24
Hallo,

ich verwende in einer Anwendung von mir haar genau den gleichen Code wie du ihn hast (gelle, auch von den Schweizern oder? )
und hab keine Probleme damit.
Ich habe auch eine Listview mit CheckBoxen
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
martinf16

Registriert seit: 26. Aug 2007
99 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Listview Items mit Checkboxen(!) mit Drag&Drop rearr

  Alt 6. Sep 2009, 19:00
Richtig, richtig, der Code taucht auch immer wieder in abgewandelter Form irgendwo auf..

Ich habs jetzt noch einmal getestet in einer ganz neuen Anwendung, aber da funktionierts plötzlich. Anscheinend gibts bei mir im Programm irgendwelche anderen Wechselwirkungen, das wird eine lange Nacht!


Edit:
Ich habe die Lösung gefunden. Für alle, die es interessiert, weil sie ein ähnliches Problem haben:

Ich habe den Click auf die CheckBoxen mit folgendem Ansatz abgefangen:

http://delphi.about.com/od/delphitip...iewchecked.htm

Das verträgt sich anscheinend nicht mit dem Drag and Drop, da sich dabei offenbar die Items kurzfristig in der ListView ändern - das sieht man auch in dem Moment, wenn die Exception kommt: Das verschiebende Item scheint für einen Moment doppelt zu existieren.

Wenn ihr so etwas auch schon mal hattet, könnt ihr ruhig schreiben, wie ihr das Problem gelöst habt.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz