IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Drag and drop en dehors d'un champ


Sujet :

WinDev

  1. #1
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut Drag and drop en dehors d'un champ
    Bonjour

    J'ai une fenêtre avec de nombreux drag and drop entre plusieurs tables.
    Jusqu'à la tout va bien.

    Par contre pour une table je voudrais pouvoir supprimer les lignes en les attrapant puis en les relâchant en dehors de la table (et pas sur une autre table).

    Le problème est que je ne peut pas déclarer la fenêtre comme cible (puisqu'elle n'est pas un champ). Donc je ne sais pas gérer le relâché sur la fenêtre quand le clic de départ a été fait sur un champ...

    Y-a-t-il une possibilité d'obtenir le comportement que je veux ?
    Merci d'avance
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 251
    Points : 98
    Points
    98
    Par défaut
    Bonjour Laurent.

    Je ne sais pas si tu peux déclarer une image comme cible, une poubelle par exemple?
    Si non, tu peux déclarer un champ avec le visu réduit au mini pour simuler un bouton par exemple! et droper dessus
    Je ne sais pas non plus si en mettant ce champ en arrière plan et une image poubelle, ou libellé au premier plan le drop fonctionne sur le champ?

    C'est plus facile de draguer que de droper

  3. #3
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Je ne sais pas si tu peux déclarer une image comme cible, une poubelle par exemple?
    Si non, tu peux déclarer un champ avec le visu réduit au mini pour simuler un bouton par exemple! et droper dessus
    Je ne sais pas non plus si en mettant ce champ en arrière plan et une image poubelle, ou libellé au premier plan le drop fonctionne sur le champ?
    En attendant de trouver une solution j'avais déclaré un bouton corbeille comme cible pour pouvoir exécuter le traitement.
    Le petit, tout petit, inconvénient c'est qu'il faut viser le bouton pour droper...
    En tout cas merci pour l'idée de l'image sans image en arrière plan qui occupe tout l'écran, ça marche...

    Pour info je suis sur un écran assez compliqué avec 6 tables et des drag and drop possibles un peut dans tous les sens.

    J'ai des Drag and drop
    - d'une source vers plusieurs cibles
    - d'une source vers elle même (déplace l'ordre des lignes)
    - de plusieurs sources vers une cible (c'est la 1ère fois que j'ai à faire ça et y-a des choses à savoir)

    le tout est très facile avec les fonctions et les propriétés prévues dans windev

    - Définition des sources
    MaTable_source..DndSource = dndProgrammé

    - Définition des cibles
    MaTable_cible..DndCible = dndProgrammé

    - Changement du curseur en survol de la cible
    DnDEvénement(ProcSurvolq,MaTable_cible,dndSurvol)

    avec :
    PROCEDURE ProcSurvol()
    DnDCurseur(dndCopier)

    - Exécution du traitement d'une procédure quand on lâche
    DnDEvénement(Proc_lache_MaTable_Cible,MaTable_cible,dndLâcher)

    le traitement du laché est à programmé dans la procédure Proc_lache_MaTable_Cible

    Jusqu'à là hyper facile

    Maintenant la particularité quand on a plusieurs sources possibles pour une cible.
    Pour gérer le lâché sur une cible, on vient de le voir ci-dessus. La difficulté est de savoir de quelle source on arrive.
    Pour cela windev a tout prévu avec des variables de gestion du drag and drop
    http://doc.pcsoft.fr/fr-fr/?3030016

    en l’occurrence dans la procédure Proc_lache_MaTable_Cible il suffit de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    PROCEDURE Proc_lache_MaTable_Cible()
     
    SELON _DND.ChampSource
    	CAS "MaTable_source1"
    		// traitement 1
    	CAS "MaTable_source2"
    		// traitement 2
    	CAS "MaTable_source3"
    		// traitement 3
    	CAS ...
     
    FIN
    très facile et très pratique...
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  4. #4
    Membre éprouvé

    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 402
    Points : 915
    Points
    915
    Par défaut
    j'ai bien une idée en passant :
    si tu cherches le résultat de ChampSurvol() au moment de ton laché de table et que la chaine en retour est le nom de la fenêtre c'est que ton utilisateur l'a laché dans le vide.

  5. #5
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    j'ai bien une idée en passant :
    si tu cherches le résultat de ChampSurvol() au moment de ton laché de table et que la chaine en retour est le nom de la fenêtre c'est que ton utilisateur l'a laché dans le vide.
    Quand je clique sur une ligne d'une table (source) et que je lache sur la fenêtre ni le code de "Bouton gauche relâché de la table" ni le code de "Bouton gauche relâché de la fenêtre" n'est exécuté.
    Donc je n'est pas d'événement pour exécuter un code. Je l'aurait si je pouvais déclarer la fenêtre comme cible avec un DnDEvénement().

    Mais ce n'est pas possible, dommage...

    Ceci dit ce n'est pas grave puisque j'ai trouvé un palliatif en plaçant une image transparente en fond et en m'en servant comme cible. Ça marche très bien...

    D'ailleurs je m’empresse de cocher résolu
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Drag and drop "de l'extérieur"
    Par Invité dans le forum C++Builder
    Réponses: 12
    Dernier message: 31/03/2020, 10h10
  2. [WD20] Problème Drag and Drop sur champ table
    Par lololebricoleur dans le forum WinDev
    Réponses: 2
    Dernier message: 13/07/2015, 20h25
  3. [WD17] Drag and Drop depuis une table vers un champ de saisie
    Par Dramon dans le forum WinDev
    Réponses: 0
    Dernier message: 24/02/2015, 16h36
  4. [WD15] Drag and Drop champs d'une même table
    Par fasyr dans le forum WinDev
    Réponses: 1
    Dernier message: 03/02/2011, 10h18
  5. drag and drop
    Par jujuesteban dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/06/2003, 09h23

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