Discussion: Drag & Drop

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    janvier 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2005
    Messages : 367
    Points : 93
    Points
    93

    Par défaut Drag & Drop

    Bonjour a tous,

    Je souhaiterai utiliser la fonction drag & drop de windev mais j'ai quelque problème de compréhension avec ce mécanisme.

    Dans une fenêtre j'ai une liste image qui m'affiche toutes les images présente dans un répertoire à la racine du projet, la liste est ma source.
    Dans la description de la liste j'ai coché sous détail "est source " , "est cible"
    Dans cette même fenêtre, j'ai une zone IMG_image qui va être la cible.

    Dans l'initialisation de la fenêtre j'ai ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    LSI_Librairie..DndSource = dndProgrammé
    IMG_ZoneDessin..DndCible = dndProgrammé
    DnDEvénement(DébutGLisser,IMG_ZoneDessin,dndDébutGlisser)
    DnDEvénement(Survol,IMG_ZoneDessin,dndSurvol)
    DnDEvénement(Lacher,IMG_ZoneDessin,dndLâcher)
    La procédure DébutGlisser ()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DnDDonne(CF_BITMAP,LSI_Librairie[gsImageSource])
    Procédure Survol()
    Procédure Lacher()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DnDRécupère(CF_BITMAP)
    dCopie(_DND.ChampSource ,_DND.ChampCible,copieSrcCopie,gvcSourisDepart.x,gvcSourisDepart.y,SourisPosX(),SourisPosY())
    lorsque j'exécute le projet j'ai le message d'erreur suivant
    Erreur à la ligne 19 du traitement Procédure locale Lacher.
    Vous avez appelé la fonction dCopie.
    Le passage du paramètre 1 a provoqué une erreur.
    Un élément de type 'chaîne ANSI' ne peut pas être converti vers le type 'image'.
    Le problème viens du coté de la source mais je ne trouve pas comment faire pour résoudre mon problème de champs source.

    Merci pour votre aide

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2013
    Messages : 1 060
    Points : 2 240
    Points
    2 240

    Par défaut

    On va tatonner un peu
    Dans le "lacher" , essaie des choses comme info(_DND.ChampSource) ou peut être info(_DND.ChampSource..type) ...ça peut t'aiguiller vers le résultat.

    Peut-être que la solution est : dcopie ( {_DND.ChampSource, indchamp} , etc etc ) ????

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    janvier 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2005
    Messages : 367
    Points : 93
    Points
    93

    Par défaut

    merci pour ta réponse mais ça fonctionne pas l'indirection du champs ça me génère une erreur
    Erreur à la ligne 21 du traitement Procédure locale Lacher.
    Vous avez appelé la fonction dCopie.
    Le passage du paramètre 1 a provoqué une erreur.
    Un élément de type 'entier' ne peut pas être converti vers le type 'avancé'.
    la commande info(_DND.ChampSource) me retour le nom de mon champs (LSI_Librairie) et pour info(_DND.ChampSource..type) ça n'existe pas

    Ca ne proviendrait pas de ma déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LSI_Librairie..DndSource = dndProgrammé
    qui me poserai problème car c'est pas la liste qui est la source mais les éléments qui la compose ?

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2013
    Messages : 1 060
    Points : 2 240
    Points
    2 240

    Par défaut

    _DND.ChampSource te donne donc le nom du champ source (c'est ce qui est écrit dans la doc) ... mais il ne te donne pas le n°de ligne, ou dans le cas d'une table, il ne te donne pas le n° de la colonne.
    _DND.Champsource permet de traiter les cas où tu peux faire des DragDrop à partir de différents champs de ta fenêtre : il te permet d'avoir un traitement ad-hoc selon le champ source.

    Quand tu fais le DND_DebutGlisser() , tu appelles une fonction DNDDonne() : cette fonction met en mémoire ce que tu veux manipuler.
    Mais ensuite, tu n'utilises pas ce buffer.
    DNDDonne() va de pair avec DNDRécupère() ; DNDDonne() est systématiquement suivi d'un DNDRécupère(). Eventuellement, si le DragDrop se fait de ton appli vers une autre appli, c'est l'autre appli qui fera un appel du type DNDRécupère(). Et dans ce cas, tu n'auras pas de DNDRécupère dans ton code.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    janvier 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2005
    Messages : 367
    Points : 93
    Points
    93

    Par défaut

    ok merci c'est un peu plus clair, je vais mettre en application vos conseils et je reviens vous dire ce que ça donne. Enfin si je m'en sors ou pas


    Nickel, merci beaucoup pour votre aide

    Par contre si je veux déplacer l'image que je viens de déposer dans la zone cible, vous n'auriez pas un conseil s'il vous plait car si je veux déplacer l'image je dois visé l'angle supérieur gauche chose qui n'est pas évident, sinon l'image est tronqué.

Discussions similaires

  1. Drag and drop "de l'extérieur"
    Par Kaji dans le forum C++Builder
    Réponses: 11
    Dernier message: 14/11/2008, 12h43
  2. [JSP][DRAG AND DROP]
    Par hamed dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 23/01/2004, 18h36
  3. drag and drop
    Par jujuesteban dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/06/2003, 10h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo