![]() |
Drag Drop Sender 2x TListview Untescheidung
Guten Morgen,
wie bekomm ich´s denn gebacken, zwischen zwei Drag Drop Ereignissen zu unterscheiden, wenn sie bei von TListview kommen?
Delphi-Quellcode:
denn so bekomme ich ja nur gesagt, dass es von einer Listview kommt, wie bekomm ich raus, von welcher.
if source is tListview then begin
//tu was end; denn so geht´s nicht: (ist eigentlich klar)
Delphi-Quellcode:
und so leider auch nicht: (aber so hätte ich erwartet dass es geht)
if source is Listview1 then begin
//tu was end;
Delphi-Quellcode:
hmm?!
if source is TListview then begin
if listview1.dragging = true then // tu was if listview2.dragging = true then // tu was anderes end; |
Re: Drag Drop Sender 2x TListview Untescheidung
Delphi-Quellcode:
so sollte es gehen
if source = Listview1 then begin
//tu was end; das wörtchen is prüft nur, ob die Variable eine Instanz einer bestimmten Klasse ist |
Re: Drag Drop Sender 2x TListview Untescheidung
Ok danke,
komischerweise führt er trotzdem beide aus...
Delphi-Quellcode:
muss vielleicht noch dazu sagen, dass die erste Operation ein Drag Drop auf sich selbst ist.
Procedure TForm1.Listview1DragDrop(Sender, Source: TObject; x,y: integer);
--------------- if source = Listview1 then //tu was Operation1 if source = Listview2 then //tu was anderes Operation2 Operation 1 funktioniert prima, wenn ich Operation 2 ausklammere...?! Bei DragDrop läuft´s auf´ne Exception wenn ich beides drin hab, er will die zweite Opartion auch ausführen, obwohl ich nur von Listview1 Dragge |
Re: Drag Drop Sender 2x TListview Untescheidung
Wie jetzt? Du draggst immer von ListView1 in entweder ListView1 oder ListView2? Na dann ist doch klar, dass Source immer ListView1 ist, da es ja die Quelle ist ;)
Kuck mal was in Sender drin ist. Meiner Meinung nach müsste da die Ziel ListView oder eventuell, dass Ziel ListItem drin sein. |
Re: Drag Drop Sender 2x TListview Untescheidung
Hallo padavan,
nach deiner Beschreibung steht dein Code einfach an der falschen Stelle - Operation 2 musst du in ListView2DragDrop() rein schreiben. Den Sender brauchst du in diesem Event nur zu überprüfen, wenn du den Event-Handler mehreren ListViews zugewiesen hast. Wenn es sich aber um sehr verschiedene Operationen handelt, dann würde ich jeder ListView ihren eigenen Event-Handler für OnDragDrop() spendieren. Grüße vom marabu |
Re: Drag Drop Sender 2x TListview Untescheidung
Moin an alle :-D
Meine Schuld, ich muss mich genauer ausdrücken, ich habe jetzt eine Listview1 und eine Listview2. Ursprünglich hatte ich eine Listbox1 und eine Listview2. Von der Listview2 habe ich in die Listbox1 reingedropt, hat prima funktioniert. Jetzt habe ich mein ganzes Programm auseinandergerissen und die Listbox1 gegen die Listview1 ersetzt, da diese manche Vorteile bringt, z.B. gescheites DragDrop innerhalb der Listview. Was bei Listbox nicht gescheit funktioniert. (zumindest nicht bei aktiviertem Multiselect) ![]() Nun habe ich ja den Zustand das ich von Listview2 immernoch in Listview1 droppen will und hinzu kommt, dass innerhalb der Listview1 drag-droppen will (nur deshalb hab ich umgestellt). Deshalb brauche ich die Unterscheidung von gedragt wurde. Dummerweise funktioniert kein Ansatz, da er immer beide Operation durchführen will. :wiejetzt: PS: Hallo marabu, nun verstehe ich nicht, wie ich der Zitat:
|
Re: Drag Drop Sender 2x TListview Untescheidung
Hallo,
versuche es mal so
Delphi-Quellcode:
Procedure TForm1.Listview1DragDrop(Sender, Source: TObject; x,y: integer);
--------------- if Sender=ListView1 then //Dann wird innerhalb von ListView1 gedropt if Sender=ListView2 then //Dann feuert ListView2 das Event |
Re: Drag Drop Sender 2x TListview Untescheidung
:gruebel:
wo ist der Unteschied dazu? (oder bin ich blind) Zitat:
Geht aber leider auch nicht :( |
Re: Drag Drop Sender 2x TListview Untescheidung
Hallo,
@Jens Schumann: Sender ist in deiner Prozedur immer ListView1. Die Delphi-Hilfe hat geschrieben: Zitat:
Die Eigenschaft DragMode beider ListViews auf dmAutomatic setzen und diese beiden Prozeduren reichen aus um die von Dir gewünschte Funktionalität zu erreichen (gerade nochmal getestet):
Delphi-Quellcode:
Sollte der Fehler immer noch auftreten muss es eine andere Ursache haben.
procedure TForm1.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin if Source = ListView1 then begin caption := 'ListView1'; //verschiebe innerhalb ListView1 oder was anderes end; if Source = ListView2 then begin caption := 'ListView2'; //verschiebe oder kopiere von ListView2 zu ListView1 oder was anderes end; end; procedure TForm1.ListView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin if (Source = ListView1) or (Source = ListView2) then Accept := True else Accept := False; end; |
Re: Drag Drop Sender 2x TListview Untescheidung
Was willst du erreichen, padavan? Sollen durch Drag&Drop nur neue Einträge angefügt werden oder möchtest du - insbesondere wenn Source und Target dasselbe Control sind - eine andere Ordnung herstellen?
marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 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