Datei von Desktop per Drag and Drop in FileListBox kopieren



  • Hallo,

    wie kann man eine Datei z.B. vom Desktop in eine FileListBox per Drag und Drop kopieren???



  • Hallo,

    Vielleicht hilft das ja.
    http://www.bytesandmore.de/rad/cpp/snipp/sc03026.php
    Ist zwar nich vom Desktop in eine Filelistbox, sollte aber trotzdem gehen.



  • Hallo,

    ich habe den Code von Bytes & More mal ausprobiert.
    Für Drag&Drop auf das Programmfenster oder das Programm ICon funktioniert das sehr gut.

    Allerdings habe ich ein Problem damit - denke ich.
    In meinem Programm habe ich ein paar Dialoge (weitere Forms).
    Wenn ich diese per Schließen-Button in der Titelleiste schließe
    wird in meinem Programm die Datei zusätzlich geöffnet, die zuletzt von der Drag&Drop Funktion geöffnet wurde. (Mein Programm kannmehrere Datein öffnen, deren Inhalt dann in TabSheets dargestellt wird.)
    Interessanterweise tritt das Problem anscheinend nicht auf, wenn man das Programm startet und dann über den Öffnendialog eine Datei öffnet.
    Werden nachfolgen Dateien per drag&drop geöffnet erscheint nicht das o.g. Verhalten.

    Edit:
    Habe den Verursacher und eine Lösung gefunden.

    oid __fastcall TFormMain::FormActivate(TObject *Sender)
    { //open file with mouse button right click (new instance of PLCEdit will be opend)
    
      if (ParamStr(1) != "" && startup)               //open calling file
        OpenHandle(ParamStr(1));
    }
    

    Der Dateiname bleibt in ParamStr(1) erhalten und wenn die Form dann wieder aktiviert wird, nachdem eine andere geschlossen wurde, wird der obige Code halt wieder ausgeführt.
    Die Funktion öffnet eine Datei die per Rechte Maustaste und Öffnen mit... geöffnet werden soll. Wie das mit dem Drag&Drop zusammen spielt kann ich nicht sagen, jedenfalls sind die Zeilen der wahre Fehler.
    Hätte ich auch gleich drauf kommen können.
    Eine Lösung ist die wiederholte Ausführung durch eine Abfrage zu vermeiden, so wie geschehen mit dem Zusatz in der if-Abfrage mit "&& startup".

    Ich lass das ganze hier mal so stehen, falls mal jmd. einen ähnlichen Fehler zu haben meint.

    MfG Martin


Anmelden zum Antworten