Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Drag & Drop von Listbox in Explorer (https://www.delphipraxis.net/106624-drag-drop-von-listbox-explorer.html)

Aurelius 14. Jan 2008 07:13


Drag & Drop von Listbox in Explorer
 
Hi DPler :hi:

ich habe versch. Einträge in einer normalen Listbox. Hinter jedem Eintrag "versteckt" sich ein kompletter Pfad zu einer Datei. Wie kann ich es nun realisieren dass, wenn ich einen Eintrag per Drag & Drop in den Explorer ziehe, die jeweilige Datei in den jeweiligen Ordner zu kopieren?

Gefunden habe ich dazu bis jetzt nur http://swissdelphicenter.ch/de/showcode.php?id=2335, aber das funktioniert so ja nicht mit einer Listbox. Eigenlich muss ich nur wissen wie ich den Pfad des Ordners, in den ich hineindragge, herausbekomme. Den Rest kann ich ja mit FileCopy(oder wie der Befehl jetzt heißt) machen.

bitsetter 14. Jan 2008 11:05

Re: Drag & Drop von Listbox in Explorer
 
Zitat:

Zitat von xX0815Xx
aber das funktioniert so ja nicht mit einer Listbox.

Hi,

IMHO brauchst du nur den Code an der Stelle
Delphi-Quellcode:
      SelFileList := TStringList.Create;
      try
        SelFileList.Capacity := SelCount;
        for i := 0 to Items.Count - 1 do
          if Selected[i] then SelFileList.Add(Items[i]);
im Ereignis onMouseMove in der ListBox anpassen. Also du übergibst der SelFileList deine versteckten Pfade zu den Dateien.

Aurelius 14. Jan 2008 11:08

Re: Drag & Drop von Listbox in Explorer
 
Bie dieser Zeile funktioniert das ganze aber nicht.
Delphi-Quellcode:
DoDragDrop(DataObject, Self, DROPEFFECT_COPY, Effect);DoDragDrop(DataObject, Self, DROPEFFECT_COPY, Effect);

bitsetter 14. Jan 2008 11:15

Re: Drag & Drop von Listbox in Explorer
 
Was funktioniert nicht, kommt eine Fehlermeldung oder kannst du das Programm nicht kompilieren?

Aurelius 14. Jan 2008 11:20

Re: Drag & Drop von Listbox in Explorer
 
Beim Kompilieren kommt dann:

Inkompatible Typen: Listbox und pDropSource

bitsetter 14. Jan 2008 12:03

Re: Drag & Drop von Listbox in Explorer
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das kommt, weil du
Delphi-Quellcode:
TForm1 = class(TForm, IDropSource)
vergessen hast. Hier das Programm dazu, wie du siehst geht es auch mit einer Listbox.

Aurelius 14. Jan 2008 12:44

Re: Drag & Drop von Listbox in Explorer
 
Super, danke schön :thumb:

Aurelius 14. Jan 2008 20:06

Re: Drag & Drop von Listbox in Explorer
 
So, ich hab mal versucht das Ganze in mein Programm einzubauen nur leider funktioniert es nicht.
Delphi-Quellcode:
    if (SelCount > 0) and (csLButtonDown in ControlState)
      and ((Abs(X - FDragStartPos.x) >= Threshold)
      or (Abs(Y - FDragStartPos.y) >= Threshold)) then
      begin...
Hier kommt nie ein TRUE bei mir raus, ergo arbeitet er die folgenden Befehle nicht ab.

Ich habe so die Vermutung, dass der Grund dafür der ist dass ich auch folgenden code nutze: http://www.delphipraxis.net/internal...869&highlight=

Aurelius 16. Jan 2008 07:35

Re: Drag & Drop von Listbox in Explorer
 
:duck: *push* :duck:

NickelM 16. Jan 2008 08:18

Re: Drag & Drop von Listbox in Explorer
 
Also ich glaube es liegt in der If..then Anweisung. Du kannst mit Klammern festlegen, was zusammen gehört und was nicht.

Du willst ja das die obere Zeile und die 2 Unteren Zusammen gehörten, dann must du das so machen

if ((SelCount > 0) and (csLButtonDown in ControlState))
and (((Abs(X - FDragStartPos.x) >= Threshold)
or (Abs(Y - FDragStartPos.y) >= Threshold))) then
begin...

Oder habe ich es falschverstahnden???

DeddyH 16. Jan 2008 08:26

Re: Drag & Drop von Listbox in Explorer
 
And muss nicht geklammert werden.

RavenIV 16. Jan 2008 08:52

Re: Drag & Drop von Listbox in Explorer
 
Zitat:

Zitat von DeddyH
And muss nicht geklammert werden.

Nur teilweise richtig.
Die Klammerung um das erste AND kann/soll weggelassen werden.

Im zweiten Fall wird die Klammer benötigt, weil das zweite Argument für das AND ein OR dabei hat.
if .. AND ... AND (... OR ...) then
Sonst würde es nämlich so interpretiert werden:
if (.. AND ... AND ...) OR ... tben

DeddyH 16. Jan 2008 08:53

Re: Drag & Drop von Listbox in Explorer
 
Eben, das OR muss geklammert werden ;)

Aurelius 16. Jan 2008 09:02

Re: Drag & Drop von Listbox in Explorer
 
Das selbe Geklammer funktioniert in der Demo doch auch so ;)

RavenIV 16. Jan 2008 09:05

Re: Drag & Drop von Listbox in Explorer
 
Zitat:

Zitat von xX0815Xx
Das selbe Geklammer funktioniert in der Demo doch auch so ;)

Vielleicht bricht der Vergleich bei Dir schon vorher ab.

Hier (SelCount > 0) oder hier (csLButtonDown in ControlState)?

DeddyH 16. Jan 2008 09:13

Re: Drag & Drop von Listbox in Explorer
 
Ich würde mal einen Breakpoint setzen und mir die Bedingungen mal einzeln ansehen.

Aurelius 17. Jan 2008 06:38

Re: Drag & Drop von Listbox in Explorer
 
Wie kann ich mi die denn eigentlich anschauen? Ich weiß dass es dafür was gibt, aber ich finde es einfach nicht...

DeddyH 17. Jan 2008 07:14

Re: Drag & Drop von Listbox in Explorer
 
Bei mir genügt es, mit der Maus auf die entsprechende Variable zu fahren.

Aurelius 17. Jan 2008 08:46

Re: Drag & Drop von Listbox in Explorer
 
Geht bei mir irgendwie nicht (D7) :gruebel:

//bei SQLWindows hat man ein Fomular wo man im Debugmodus einfach die Variable eingeben brauch und der Wert dann angegeben wird. Sowas gibt es bei Delphi doch sicher auch...

DeddyH 17. Jan 2008 08:55

Re: Drag & Drop von Listbox in Explorer
 
Liste der Anhänge anzeigen (Anzahl: 1)
Bei mir geht das. Du musst den Breakpoint allerdings auf den Folgebefehl setzen, damit die Variablen auch zur Laufzeit gesetzt werden.

bitsetter 17. Jan 2008 08:56

Re: Drag & Drop von Listbox in Explorer
 
Zitat:

Zitat von DeddyH
Bei mir genügt es, mit der Maus auf die entsprechende Variable zu fahren.

Hi,

bei der Delphi 7 Personal Version die ich hatte, wurde diese Option absichtlich herausgenommen (Funktionseinschränkung). Darum hatte ich Delphi 7 PE gleich wieder von der Platte geschmissen und mit Delphi 6 PE weitergemacht.

DeddyH 17. Jan 2008 08:58

Re: Drag & Drop von Listbox in Explorer
 
Ach so, das kann natürlich möglich sein, ich kenne die Personals nicht.

Aurelius 17. Jan 2008 08:59

Re: Drag & Drop von Listbox in Explorer
 
Heißt das dass es sowas bei D7PE nicht gibt? das wäre aber sehr schade...

bitsetter 17. Jan 2008 12:29

Re: Drag & Drop von Listbox in Explorer
 
Liste der Anhänge anzeigen (Anzahl: 2)
Habe jetzt nochmal schnell Delphi 7 PE installiert.

Du kannst versuchen dich zu behelfen, indem du direkt auf die Variable eimal mit der rechten Maustaste klickst (im Beispiel i) und dann das Menü Fehlersuche-> Auswerten/Ändern auswählst (mit Strg+F7 geht es ansonsten auch).
Im darauf erscheinenden Fenster kannst du den Inhalt der Variablen sehen.
Ist natürlich ziemlich umständlich aber ansonsten wird es wohl schwierig sein Fehler zu finden.

Ansonsten kannst du noch den Cursor auf die Variable setzen und Strg+F5 drücken.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:25 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