DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Champs, pages et fenêtres / Fonctions Drag and Drop
  • Présentation
  • Exemple de Drag and Drop entre un champ Liste et un champ Bouton
  • Exemple de Drag and Drop entre un champ Arbre et un champ Table hiérarchique
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Présentation
Cette page d'aide présente deux exemples de Drag and Drop programmé réalisés dans une application WINDEV :
Exemple de Drag and Drop entre un champ Liste et un champ Bouton
Le code suivant permet de supprimer des données contenues dans un champ Liste par couper/coller ("Drag and Drop") vers un bouton graphique contenant une poubelle. Seul le déplacement (couper/coller) est autorisé. Le curseur de déplacement est affiché lors du déplacement (couper/coller) entre le champ Liste et le bouton "Poubelle".
  1. Définition de la source : le champ Liste
    //- - Initialisation du champ Liste
    LISTE_Liste.DndSource = dndProgrammé
  2. Définition de la cible : le bouton BTN_Poubelle. Dans le code d'initialisation du bouton, les procédures de gestion du Drag and Drop sont également appelées grâce à la fonction DndEvénement.
    Dans cet exemple :
    • l'événement dndSurvol permet de changer le curseur de la souris (procédure "SurSurvol").
    • l'événement dndLâcher permet de programmer le traitement de gestion du lâcher. Dans notre cas, ce traitement correspond à la suppression de l'élément du champ Liste (procédure "SurLâcher").
    //- - Initialisation bouton BTN_Poubelle
    BTN_Poubelle.DndCible = dndProgrammé
     
    // Appel de la procédure SurLâcher lorsque le bouton gauche
    // de la souris est relâché sur le bouton BTN_Poubelle
    DnDEvénement("SurLâcher", BTN_Poubelle, dndLâcher)
     
    // Appel de la procédure SurSurvol lorsque le curseur de la souris
    // se déplace entre la liste source et le bouton BTN_Poubelle
    DnDEvénement("SurSurvol", BTN_Poubelle, dndSurvol)
  3. Définition des procédures :
    PROCÉDURE SurSurvol()
    // Curseur indiquant le déplacement
    DnDCurseur(dndDéplacer)

    PROCÉDURE SurLâcher()
    // Seul le déplacement est autorisé (pas le copier)
    DnDAccepte(dndDéplacer)
    // Suppression de l'élément dans le champ source
    ListeSupprime(_DND.ChampSource)
Exemple de Drag and Drop entre un champ Arbre et un champ Table hiérarchique
La fenêtre contient :
  • un champ Arbre par programmation.
  • un champ Table hiérarchique par programmation.
L'exemple suivant permet de déplacer un élément d'un champ Arbre (ou une branche et ses fils) dans un champ Table hiérarchique. Les deux méthodes de Drag and Drop programmé sont présentées.
Méthode 1: Mode programmé complet
  1. Définition du champ source : le champ Arbre :
    // -- Code Initialisation champ ARBRE_MENU
    ArbreAjoute(ARBRE_MENU, "ENTREES")
    ArbreAjoute(ARBRE_MENU, "ENTREES" + TAB + "Crudités")
    ArbreAjoute(ARBRE_MENU, "ENTREES" + TAB + "Charcuterie")
    ArbreAjoute(ARBRE_MENU, "ENTREES" + TAB + "Avocats")
    ArbreAjoute(ARBRE_MENU, "PLATS")
    ArbreAjoute(ARBRE_MENU, "PLATS" + TAB + "Poulet curry")
    ArbreAjoute(ARBRE_MENU, "PLATS" + TAB + "Sole meunière")
    ArbreAjoute(ARBRE_MENU, "PLATS" + TAB + "Tagliatelle au saumon")
    ArbreAjoute(ARBRE_MENU, "PLATS" + TAB + "Tagliatelle carbonara")
    ArbreAjoute(ARBRE_MENU, "PLATS" + TAB + "Entrecôte")
    ArbreAjoute(ARBRE_MENU, "DESSERTS")
    ArbreAjoute(ARBRE_MENU, "DESSERTS" + TAB + "Crème brûlée")
    ArbreAjoute(ARBRE_MENU, "DESSERTS" + TAB + "Mousse chocolat")
    ArbreAjoute(ARBRE_MENU, "DESSERTS" + TAB + "Tiramisu")
    ArbreAjoute(ARBRE_MENU, "DESSERTS" + TAB + "Glace")
    ArbreAjoute(ARBRE_MENU, "DESSERTS" + TAB + "Tarte pomme")
     
    // Activation du Drag and Drop programmé
    ARBRE_MENU.DndSource = dndProgrammé
  2. Définition de la cible : le champ Table hiérarchique. Dans le code d'initialisation du champ Table hiérarchique, les procédures de gestion du Drag and Drop sont appelées grâce à la fonction DndEvénement.
    Dans cet exemple :
    • l'événement dndSurvol permet de changer le curseur de la souris (procédure "pSurvol").
    • l'événement dndLâcher permet de programmer le traitement de gestion du lâcher. Dans notre cas, ce traitement correspond à la copie des éléments du champ Arbre dans le champ Table hiérarchique (procédure "pLâcher").
      // -- Initialisation du champ Table hiérarchique
      TABLEH_MENU.DndCible = dndProgrammé
       
      DnDEvénement(pSurvol, TABLEH_MENU, dndSurvol)
      DnDEvénement(pLacher, TABLEH_MENU, dndLâcher)
  3. Définition des procédures :
    PROCÉDURE pSurvol()
     
    // Curseur indiquant le déplacement
    DnDCurseur(dndDéplacer)

    PROCÉDURE pLacher()
     
    // Seul le déplacement est autorisé (pas le copier)
    DnDAccepte(dndDéplacer)
     
    sRacine est une chaîne
    sFeuille est une chaîne
    sElement est une chaîne
    sFils est une chaîne
     
    sElement = ArbreSelect(ARBRE_MENU)
    sRacine = ExtraitChaîne(sElement, 1, TAB, DepuisDébut)
    sFeuille = ExtraitChaîne(sElement, 1, TAB, DepuisFin)
     
    SI sFeuille = sRacine ALORS
    SI TableChercheFils(COL_ARBRE, sRacine) = -1 ALORS
    TableAjouteFils(TABLEH_MENU, 0, sRacine)
    FIN
     
    sFils = ArbreRécupèreFils(ARBRE_MENU, sRacine, aPremier)
    TANTQUE sFils <> ""
    TableAjouteFils(TABLEH_MENU, sRacine, sFils)
    sFils = ArbreRécupèreFils(ARBRE_MENU, sRacine, aSuivant)
    FIN
    SINON
    SI TableChercheFils(COL_ARBRE, sRacine) = -1 ALORS
    TableAjouteFils(TABLEH_MENU, 0, sRacine)
    FIN
    TableAjouteFils(TABLEH_MENU, sRacine, sFeuille)
    FIN
Méthode 2: Mode programmé simplifié
  1. Définition du champ source : le champ Arbre.
    ArbreAjoute(ARBRE_MENU1, "ENTREES")
    ArbreAjoute(ARBRE_MENU1, "ENTREES" + TAB + "Crudités")
    ArbreAjoute(ARBRE_MENU1, "ENTREES" + TAB + "Charcuterie")
    ArbreAjoute(ARBRE_MENU1, "ENTREES" + TAB + "Avocats")
    ArbreAjoute(ARBRE_MENU1, "PLATS")
    ArbreAjoute(ARBRE_MENU1, "PLATS" + TAB + "Poulet curry")
    ArbreAjoute(ARBRE_MENU1, "PLATS" + TAB + "Sole meunière")
    ArbreAjoute(ARBRE_MENU1, "PLATS" + TAB + "Tagliatelle au saumon")
    ArbreAjoute(ARBRE_MENU1, "PLATS" + TAB + "Tagliatelle carbonara")
    ArbreAjoute(ARBRE_MENU1, "PLATS" + TAB + "Entrecôte")
    ArbreAjoute(ARBRE_MENU1, "DESSERTS")
    ArbreAjoute(ARBRE_MENU1, "DESSERTS" + TAB + "Crème brûlée")
    ArbreAjoute(ARBRE_MENU1, "DESSERTS" + TAB + "Mousse chocolat")
    ArbreAjoute(ARBRE_MENU1, "DESSERTS" + TAB + "Tiramisu")
    ArbreAjoute(ARBRE_MENU1, "DESSERTS" + TAB + "Glace")
    ArbreAjoute(ARBRE_MENU1, "DESSERTS" + TAB + "Tarte pomme")
    // Activation du Drag and Drop programmé
    ARBRE_MENU1..DndSource = dndProgrammé
  2. Définition de la cible : Table hiérarchique
    // -- Initialisation du champ Table hiérarchique
    TABLEH_MENU1.DndCible = dndProgrammé
  3. Ajout des événements spécifiques au Drag and Drop dans le code du champ cible (code du champ Table hiérarchique).
    • Affichez les événements du champ Table hiérarchique (option "Code" du menu contextuel du champ).
    • Affichez la fenêtre des événements optionnels : cliquez sur le lien "Ajouter d'autres événements" situé à la fin des événements du champ.
    • Dans notre exemple, les événements à ajouter sont :
      • Survol en Glisser / Déplacer cible (dndSurvol).
      • Lâcher en Glisser / Déplacer cible (dndLâcher).
  4. Saisissez le code correspondant aux actions à réaliser :
    • Evénement Lâcher en Glisser / Déplacer cible (dndLâcher)
      // Seul le déplacement est autorisé (pas le copier)
      DnDAccepte(dndDéplacer)
       
      sRacine est une chaîne
      sFeuille est une chaîne
      sElement est une chaîne
      sFils est une chaîne
       
      sElement = ArbreSelect(ARBRE_MENU1)
      sRacine = ExtraitChaîne(sElement, 1, TAB, DepuisDébut)
      sFeuille = ExtraitChaîne(sElement, 1, TAB, DepuisFin)
       
      SI sFeuille = sRacine ALORS
      SI TableChercheFils(COL_ARBRE1, sRacine) = -1 ALORS
      TableAjouteFils(TABLEH_MENU1, 0, sRacine)
      FIN
       
      sFils = ArbreRécupèreFils(ARBRE_MENU1, sRacine, aPremier)
      TANTQUE sFils <> ""
      TableAjouteFils(TABLEH_MENU1, sRacine, sFils)
      sFils = ArbreRécupèreFils(ARBRE_MENU1, sRacine, aSuivant)
      FIN
      SINON
      SI TableChercheFils(COL_ARBRE1, sRacine) = -1 ALORS
      TableAjouteFils(TABLEH_MENU1, 0, sRacine)
      FIN
      TableAjouteFils(TABLEH_MENU1, sRacine, sFeuille)
      FIN
    • Evénement Survol en Glisser / Déplacer cible (dndSurvol)
      // Curseur indiquant le déplacement
      DnDCurseur(dndDéplacer)
Liste des exemples associés :
Drag and drop Exemples unitaires (WINDEV) : Drag and drop
[ + ] Utilisation du Drag & Drop (Glisser & Déposer) avec les fonctions WLangage.

Dans cet exemple, nous abordons deux thèmes principaux :
1/ Comment gérer le Drag&Drop entre champs WINDEV
2/ Comment gérer le Drag&Drop de l'Explorateur de fichiers de Windows vers un champ WINDEV

Le Drag & Drop permet de déplacer des objets par l'intermédiaire de la souris. Lorsqu'on clique sur un objet, puis qu'on déplace la souris tout en maintenant le bouton gauche enfoncé, il s'agit du "Drag". Lorsqu'on relâche le bouton gauche, il s'agit du "Drop".
Le Drag & Drop est utilisable avec WINDEV sur  les champs Liste, Arbre, Table et Image.
Version minimum requise
  • Version 17
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale