AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Drag Drop ListView kurz vor Verzweifelung

Ein Thema von TUX_der_Pinguin · begonnen am 2. Mär 2007 · letzter Beitrag vom 16. Mär 2007
Antwort Antwort
Seite 1 von 2  1 2      
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#1

Drag Drop ListView kurz vor Verzweifelung

  Alt 2. Mär 2007, 13:12
Hallo,

ich habe in einer MDI-Anwendung 2 Fenster mit je einem ListView (vsRaport), ziehe ich jetzte eine Zeile von einem Fenster ins
andere, gehe ich mit der Maus über bestehende Einträge in dem Ziel ListView wird mir der Eintrag markiert wo ich mit der Maus
drauf stehe, lasse ich den neuen Eintrag "fallen", verschwindet die Markierung. Ziehe ich jetzt einen weiteren Eintrag über
das ListView und lasse den Eintrag ausserhalb des Fensters "fallen" weil ich den Falschen Eintrag gewählt habe, bleibt die
Markierung im Ziel ListView erhalten. Warum ist das so bzw. wie bekomme ich das weg? Ich habe keine Ahnnung wo ich ansetzen
muß.

Bin für jeden Tipp dankbar.

mfg

TUX
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Drag Drop ListView kurz vor Verzweifelung

  Alt 8. Mär 2007, 07:33
Habe ich das ganze so kompliziert beschrieben das es niemand es versteht oder hat niemand das gleiche
Problem. Ich komme einfach nicht weiter, es kann doch nicht sein das ein blöder eintrag als scheinbar
markiert stehen bleibt, aber eigentlich doch nicht markiert ist die Eigenschaft Selected ist nämlich 'False'
an der Stelle.
  Mit Zitat antworten Zitat
Hyperspacer

Registriert seit: 23. Apr 2006
53 Beiträge
 
Delphi 7 Personal
 
#3

Re: Drag Drop ListView kurz vor Verzweifelung

  Alt 8. Mär 2007, 20:02
Moin,
Naja vielleicht wäre ein bissl Quelltext nicht verkehrt, oder?
Wenn ich das richtig verstanden habe bleibt in deinem Ziel-Listview der Eintrag markiert. Auch wenn das Listview neu gezeichnet wird?

mfg
Daniel
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Drag Drop ListView kurz vor Verzweifelung

  Alt 8. Mär 2007, 20:31
Hallo,

wahrscheinlich ist das keine schlechte Idee, wenn du ein wenig Quellcode zeigst, denn ich vermute, dass du das Phänomen mit deinem eigenen Code verursachst. Einfach zwei ListViews auf eine Form gezogen und ViewStyle = vsReport und DragMode = dmAutomatic und man erkennt, dass die Markierung eigentlich nicht bleibt:

Delphi-Quellcode:
procedure TDemoForm.ListViewDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept := (Sender <> Source)
        and (Sender is TListView)
        and (Source is TListView);
  if Accept then
    with Sender as TListView do
      Accept := Assigned(GetItemAt(X, Y));
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Drag Drop ListView kurz vor Verzweifelung

  Alt 9. Mär 2007, 08:31
Hi,

viel Quelltext kann ich ja nicht posten, da ja nur die Ereignisse DragOver und DragDrop verwendet werden.
Und das Beispiel war schon ganz gut aber das Problem ist nach wie vor da, was mich stört wenn ich über
eine Liste gehe bleibt ein Eintrag markiert auch wenn ich den Eintrag ausserhalb des Fenster fallen lasse
oder in einem anderen Fenster. Was ich will ist wenn ich mit der Maus aus dem ListView raus gehe ohne
den Eintrag in das ListView fallen zulassen, kein Eintrag mehr markiert bleibt.

mfg

TUX
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Drag Drop ListView kurz vor Verzweifelung

  Alt 9. Mär 2007, 13:02
Da ich dein Problem mit meinem Code nicht nachvollziehen kann, liegt der Verdacht nahe, dass du das ungewünschte Verhalten selbst programmiert hast. Kannst du ein kleines Testprojekt zum Herunterladen aufsetzen, an dem man dein Problem untersuchen kann? Zwei ListViews auf einer Form, ein paar Einträge über den OI und die Drag&Drop Events? Vielleicht ist der Fehler schon weg, wenn du das Testprojekt selbst ausführst...

Freundliche Grüße
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Drag Drop ListView kurz vor Verzweifelung

  Alt 9. Mär 2007, 14:08
So ich habe dann mal ein kleines Testprojekt zusammen gehauen, wo genau das passiert was ich in meinem Hauptprogramm
auch passiert, mit dem Unterschied das in dem Testprojekt die 2 ListView Komponenten auf einem Formular sind und nicht
auf unterschiedlichen Formularen.

Mein Ziel ist es das ich in dem jeweiligen ListView per DragDrop Zeilen verschieben kann, um die Reihenfolge zu ändern.
Weiterhin soll man Zeilen von einem ListView in das andere kopieren können.

Ich habe bei dem Testprojekt nur das DragOver implementiert weil das mein Problem ist.

mfg

TUX
Angehängte Dateien
Dateityp: zip dragdrop2_988.zip (245,3 KB, 29x aufgerufen)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Drag Drop ListView kurz vor Verzweifelung

  Alt 12. Mär 2007, 16:45
Hallo,

das ärgerliche Verhalten wird durch den virtuellen Modus der ListView verursacht - mit der Standard-ListView tritt es nicht auf. Leider habe ich für dein Problem momentan keine Lösung parat, bin aber zuversichtlich, dass es eine gibt. Vielleicht finde ich am Wochenende die Zeit um mich damit zu beschäftigen.

Edit: War gar nicht so schwer. Tracking-Artefakte beim Drag&Drop können zuverlässig beim EndDrag() beseitigt werden.

Delphi-Quellcode:
procedure TfrmMain.LVDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
  Accept := (Sender is TListView)
        and (Source is TListView)
        and Assigned((Sender as TListView).GetItemAt(X, Y));
end;

procedure TfrmMain.LVEndDrag(Sender, Target: TObject; X, Y: Integer);
begin
  with Sender as TWinControl do Invalidate;
  with Target as TWinControl do Invalidate;
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Drag Drop ListView kurz vor Verzweifelung

  Alt 13. Mär 2007, 11:26
Hi,

soweit so gut ich habe das ganze ausprobiert funktioniert aber immer noch nicht ganz so wie ich will. Die Zugriffsverletztung
die ich zu erst bekam habe ich weg bekommen.

Delphi-Quellcode:
If Sender Is TListView Then TListView(Sender).Invalidate;
If Target Is TListView Then TListView(Target).Invalidate;
Jedoch bleiben die markierten Zeilen immer noch stehen ...

mfg

TUX
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Drag Drop ListView kurz vor Verzweifelung

  Alt 13. Mär 2007, 19:18
Leider hast du recht. Da muss sich doch noch jemand drum kümmern. Leider habe ich zur Zeit ein Handicap.

Irgendetwas versucht derzeit meine Augen aus meinem Kopf zu drücken - der Arzt nennt es Grippe.

Verschnupfte Grüße
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:16 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