Results 1 to 10 of 10

Thread: Eigen cursor Drop File from Explorer

  1. #1

    Eigen cursor Drop File from Explorer

    Ik heb door WM_DROPFILES op te vangen op 2 listviews de mogelijkheid om bestanden te openen/importeren in mijn applicatie, nu als ik bestanden uit de explorer naar het venster sleep - krijg ik een dragcursor - deze kan niet aangepast worden met de form dragcursor?! Ik denk omdat dat gaat over het draggen vanuit de listview, en niet droppen vanuit de explorer?!

    Nu zou ik graag een soortgelijke cursor maken - waarbij ik met droppen uit de explorer mijn "eigen" cursor kan weergeven. Is zoiets mogelijk zonder alles te moeten omzetten naar een drag/drop suite? Nu gebruik ik gewoon de windows messages, omdat ik die ook opvang ivm draggen van kolomheaders, etc - en het makkelijk was om de drop zo toe te voegen.

  2. #2
    De DragCursor van je component waarop je wilt droppen in OnDragOver goed zetten??

    https://www.thoughtco.com/understand...ations-1058386

  3. #3
    Dat werkt niet - ik krijg een dragcopy cursor - als ik meerdere items sleep naar het venster krijg ik een dragmultiplecopy cursor. Het zijn dus niet de Delphi drag cursors die ik zichtbaar heb, het lijkt op die in Delphi maar het vierkantje gekartelde rand en er staat een plus bij..
    Ik sleep dus ook niet vanuit de applicatie, en doe dit in de formcreate:
    Delphi Code:
    1. DragAcceptFiles(lvStreams.Handle, True);
    die zet ik ook op false bij form destroy. Ik werk dus niet met de delphi drag component, maar vang direct de WM_DROPFILES message op, en haal daarmee de files op -

    ik krijg zoals hier op de afbeelding:
    Name:  cursor.png
Views: 286
Size:  49.8 KB

  4. #4
    Met alleen WM_DROPFILES ben je in ieder geval 'te laat'. Die is voor het droppen zelf.
    En de DragAcceptFiles zorgt ervoor dat het component automatisch reageert op de Drag.
    Daar valt dus verder weinig in te stellen.

    Ik denk inderdaad dat de cursor vanuit de zender komt. Zo heb je zelf wel controle over de cursor als je vanuit je eigen applicatie sleept naar andere applicaties maar dus niet andersom. Ook niet als je zelf IDropTarget implementeert of een drop/drag suite gebruikt.

  5. #5
    oke dat is jammer - ik had op basis van de files die gesleept worden (fileext) een andere cursor willen gebruiken, maar binnen de applicatie slepen kan ik dat inderdaad doen, maar vanuit de explorer niet dus - jammer

  6. #6
    Mmm, ik zie wel dat de explorer een thumbnail meegeeft bij het slepen. Naar Thunderbird zie ik die dan ook als ik daaroverheen sleep. Maar bij een Delphi applicatie niet.

    Dus misschien zijn er toch nog wel wat andere mogelijkheden (zoals weergeven van die thumbnail).

  7. #7
    Niet simpel maar het kan dus wel.

    Je moet echter dus wel IDropTarget implementeren (dat had ik dus al).
    Maar daarna moet je daarbinnen ook werken met IDropTargetHelper om een thumbnail weer te kunnen geven tijdens het slepen.

    ( In mijn eigen drag/drop unit werkt dat goed, hoewel ik hem nog wel even op robuustheid moet controleren voordat ie in productie gaat )

    Name:  k2RI2lk.png
Views: 281
Size:  19.8 KB

  8. #8
    Dat is wel netjes inderdaad - zal eens kijken hoe dat precies zit - dacht dit was een snelle oplossing, omdat ik toch al de messages opving voor de listview omdat ik een aantal kolommen vaste breedte wil geven, en maxwidth helpt niet - dus doe ik dat via messages opvangen dan blijven ze netjes staan dus de dropmessages opvangen was 1 min werk - maar eens kijken hoeveel werk het is voor de IDroptarget te implementeren dan..

    Ik sleep wel playlist bestanden (extentie .m3u en .tv en .txt) zijn allemaal platte utf8 tekst bestanden met een iets ander formatting, maar hoopte voor elke file een eigen cursor/preview/icon te kunnen gebruiken - en gecombineerd ook een andere

  9. #9
    Reader
    Join Date
    May 2002
    Location
    Holland
    Posts
    3,382
    @rvk: drag drop met plaatje vanuit explorer. dat wil ik hebben :-)

  10. #10
    Quote Originally Posted by EricLang View Post
    @rvk: drag drop met plaatje vanuit explorer. dat wil ik hebben :-)
    Makkelijkste is de drag&drop suite gebruiken (oorspronkelijk van Anders Melander maar bijgewerkt tot rio)
    https://github.com/DelphiPraxis/The-...ite-for-Delphi

    Mijn eigen TOleFileDrop (die IDropTarget implemeteert) heb ik dusdanig aangepast dat het nog alleen in mijn programma werkt.
    Als er interesse is kan ik hem binnenkort wel even opschonen en hier plaatsen.

    Oorspronkelijk was het een TOleFileDrop voor alleen het droppen van files vanuit de explorer. Maar ik heb toen wat dingen aangepast om ook een drop vanuit Outlook te accepteren. Dat gaat n.l. niet via files maar rechtstreeks via geheugen. Die sla ik dan bij 'droppen' op in een tijdelijk bestand zodat daarna mijn programma dat weer kan verwerken. (Mooiste zou natuurlijk dan ook direct de stream verwerken zijn maar ik heb het me makkelijk gemaakt )

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •