AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Drag Drop Sender 2x TListview Untescheidung

Ein Thema von padavan · begonnen am 21. Okt 2005 · letzter Beitrag vom 21. Okt 2005
Antwort Antwort
Seite 1 von 2  1 2   
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#1

Drag Drop Sender 2x TListview Untescheidung

  Alt 21. Okt 2005, 05:53
Guten Morgen,
wie bekomm ich´s denn gebacken, zwischen zwei Drag Drop Ereignissen zu unterscheiden, wenn sie bei von TListview kommen?
Delphi-Quellcode:
  if source is tListview then begin
//tu was
  end;
denn so bekomme ich ja nur gesagt, dass es von einer Listview kommt, wie bekomm ich raus, von welcher.

denn so geht´s nicht: (ist eigentlich klar)
Delphi-Quellcode:
  if source is Listview1 then begin
//tu was
  end;
und so leider auch nicht: (aber so hätte ich erwartet dass es geht)
Delphi-Quellcode:
  if source is TListview then begin
    if listview1.dragging = true then // tu was
    if listview2.dragging = true then // tu was anderes
  end;
hmm?!
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Drag Drop Sender 2x TListview Untescheidung

  Alt 21. Okt 2005, 06:03
Delphi-Quellcode:
if source = Listview1 then begin
//tu was
  end;
so sollte es gehen

das wörtchen is prüft nur, ob die Variable eine Instanz einer bestimmten Klasse ist
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Drag Drop Sender 2x TListview Untescheidung

  Alt 21. Okt 2005, 06:32
Ok danke,
komischerweise führt er trotzdem beide aus...
Delphi-Quellcode:
Procedure TForm1.Listview1DragDrop(Sender, Source: TObject; x,y: integer);
---------------
if source = Listview1 then //tu was Operation1
if source = Listview2 then //tu was anderes Operation2
muss vielleicht noch dazu sagen, dass die erste Operation ein Drag Drop auf sich selbst ist.
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
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#4

Re: Drag Drop Sender 2x TListview Untescheidung

  Alt 21. Okt 2005, 07:06
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.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
marabu

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

Re: Drag Drop Sender 2x TListview Untescheidung

  Alt 21. Okt 2005, 07:13
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
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Drag Drop Sender 2x TListview Untescheidung

  Alt 21. Okt 2005, 07:34
Moin an alle
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)
siehe hier

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.


PS: Hallo marabu, nun verstehe ich nicht, wie ich der
Zitat:
ListView ihren eigenen Event-Handler für OnDragDrop() spendieren.
kann?!
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Drag Drop Sender 2x TListview Untescheidung

  Alt 21. Okt 2005, 07:49
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
I come from outer space to save the human race
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Drag Drop Sender 2x TListview Untescheidung

  Alt 21. Okt 2005, 07:54

wo ist der Unteschied dazu? (oder bin ich blind)
Zitat:
Ok danke,
komischerweise führt er trotzdem beide aus...
Delphi-Quellcode:
Procedure TForm1.Listview1DragDrop(Sender, Source: TObject; x,y: integer);
---------------
if source = Listview1 then //tu was Operation1
if source = Listview2 then //tu was anderes Operation2
Ich bin blind !!!


Geht aber leider auch nicht
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#9

Re: Drag Drop Sender 2x TListview Untescheidung

  Alt 21. Okt 2005, 08:17
Hallo,

@Jens Schumann: Sender ist in deiner Prozedur immer ListView1.
Die Delphi-Hilfe hat geschrieben:
Zitat:
Der Parameter Source des Ereignisses stellt das abgelegte Objekt dar, und Sender gibt das Steuerelement an, auf dem das Objekt abgelegt wird.
@padavan:
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:
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;
Sollte der Fehler immer noch auftreten muss es eine andere Ursache haben.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
marabu

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

Re: Drag Drop Sender 2x TListview Untescheidung

  Alt 21. Okt 2005, 08:18
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 02:09 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