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 WB 28


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 145
    Par défaut Drag and Drop WB 28
    onjours,
    J'ai jeté un oeil sur cet exemple Fournis par WinDev 28.
    Cela correspond parfaitement à ce que je souhaite faire... "Onglet Menus" ... Mais Je ne suis pas très doué voir pas doué du tout

    Mon idée:

    Ajouter modifier, Supprimer dans les trois les trois Arbres, Arbre_Entrées,Arbre_PlatPrincipal et Arbre_Desserts
    Récupérer les données dropées dans la Table "Table_Menus"
    Mes questions
    Mon Idée est-elle réalisable ?
    Pouvez-vous m'aider, me mettre sur la voix
    Connaissez-vousDragAndDrop.zip un bout de code un tuto ou un révérenciel un ouvrage qui pourrait m'aider
    Merci
    Cordialement

  2. #2
    Membre émérite

    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 467
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par MONANGE Voir le message
    onjours,
    J'ai jeté un oeil sur cet exemple Fournis par WinDev 28.
    Cela correspond parfaitement à ce que je souhaite faire... "Onglet Menus" ... Mais Je ne suis pas très doué voir pas doué du tout

    Mon idée:

    Ajouter modifier, Supprimer dans les trois les trois Arbres, Arbre_Entrées,Arbre_PlatPrincipal et Arbre_Desserts
    Récupérer les données dropées dans la Table "Table_Menus"
    Mes questions
    Mon Idée est-elle réalisable ?
    Pouvez-vous m'aider, me mettre sur la voix
    Connaissez-vousDragAndDrop.zip un bout de code un tuto ou un révérenciel un ouvrage qui pourrait m'aider
    Merci
    Cordialement
    Salut,
    Si l'exemple te convient, il suffit de le modifier à ta convenance.
    Ensuite regarde, l'aide fourni sur chaque fonction si tu ne comprends pas le code.
    Je te conseille aussi l'autoformation.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 145
    Par défaut
    Citation Envoyé par popoy Voir le message
    Salut,
    Si l'exemple te convient, il suffit de le modifier à ta convenance.
    Ensuite regarde, l'aide fourni sur chaque fonction si tu ne comprends pas le code.
    Je te conseille aussi l'autoformation.
    Merci de m'avoir répondu
    Bien sûr je comprends Mais je ne sais pas par où commencer
    Comment ajouter des entrées, des plats des desserts ?
    Comment memoriser les données droppées dans la table Menu

  4. #4
    Membre émérite

    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 467
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par MONANGE Voir le message
    Merci de m'avoir répondu
    Bien sûr je comprends Mais je ne sais pas par où commencer
    Comment ajouter des entrées, des plats des desserts ?
    Comment memoriser les données droppées dans la table Menu
    Malheureusement, je n'ai pas la 28 pour te répondre, je suis resté en 25.
    Mais je suppose que les entrées plats et desserts sont dans la base de données
    Pour la table menu, il faut voir comment elle est remplie (liaison etc)
    Fait peut être un pas a pas ou des arrêts dans le code ou du debugage.
    Mais avant tout, regarde l'autoformation.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 145
    Par défaut drag and drop
    Bonjours, Merci de votre patience. Non il n'y a pas de table tout est fait par programmation

    je vous joins une partie du code :

    // Résumé : Initialisation de la table hiérarchique.
    // Syntaxe :
    //TableH_Initialise ()
    //
    // Paramètres :
    // Aucun
    // Valeur de retour :
    // Aucune
    //

    PROCÉDURE TableH_Initialise()

    i est un entier
    ii est un entier

    // Construit la table
    TableAjouteFils(MoiMême, 0, 0, "Menu du jour")

    i = TableAjouteFils(MoiMême, 1, 1, "Entrée chaude")
    TableAjouteFils(MoiMême, i, 2, "Calamar frit ", 3, 12.5)
    TableAjouteFils(MoiMême, i, 2, "Salade chèvre chaud ", 10, 128.63)

    i= TableAjouteFils(MoiMême, 1, 1, "Entrée froide")
    TableAjouteFils(MoiMême, i, 2, "Crudités ", 9, 1533.22)
    TableAjouteFils(MoiMême, i, 2, "Salade de pommes de terre ", 120, 1281.63)
    TableAjouteFils(MoiMême, i, 2, "Salade de pommes de Tomate ", 120, 1281.63)
    TableAjouteFils(MoiMême, i, 2, "Assiette de charcuterie ", 28, 1.33)

    i = TableAjouteFils(MoiMême, 1, 1, "Plat")
    TableAjouteFils(MoiMême, i, 2, "Filet de Colin", 44, 2530.62)
    TableAjouteFils(MoiMême, i, 2, "Entrecôte grillée", 44, 2530.62)

    i = TableAjouteFils(MoiMême, 1, 1, "Dessert")
    TableAjouteFils(MoiMême, i, 2, "Profiteroles", 44, 2530.62)
    TableAjouteFils(MoiMême, i, 2, "Tiramisu", 44, 2530.62)

    i= TableAjouteFils(MoiMême, 0, 0, "Menu découverte")

    ii = TableAjouteFils(MoiMême, i, 1, "Entrée chaude")
    TableAjouteFils(MoiMême, ii, 2, "Foie gras grillé ", 4, 1533.22)
    TableAjouteFils(MoiMême, ii, 2, "Salade chèvre chaud ", 10, 128.63)

    ii= TableAjouteFils(MoiMême, i, 1, "Entrée froide")
    TableAjouteFils(MoiMême, ii, 2, "Crudités// Résumé : Procédure personnalisable appelée par la procédure globale "DND_Lacher". 4 paramètres obligatoires.
    // Syntaxe :
    //TableH_TraiteLacher (<sLigneAtraiter> est chaîne, <nNumligne> est entier, <nNumLigneSelectionné> est entier, <bCTRLEnfoncée> est booléen)
    //
    // Paramètres :
    // sLigneAtraiter (chaîne ANSI) : Chaine de caractère contenant les éléments à copier ou déplacer <niveau>+tab+<Noeud>+rc+<niveau>+tab+<feuille>
    // nNumligne (entier) : indice de la ligne ou on doit insérer la chaine
    // nNumLigneSelectionné (entier) : Indice de la ligne que l'on souhaite déplacer ou copier
    // bCTRLEnfoncée (booléen) : Indique si l'utilisateur maintien la touche XRTL enfoncé pendant le Drag&Drop
    // Valeur de retour :
    // Aucune
    //

    PROCÉDURE TableH_TraiteLacher(LOCAL sLigneAtraiter est une chaîne, LOCAL nNumligne est un entier, LOCAL nNumLigneSelectionné est un entier, LOCAL bCTRLEnfoncée est un booléen)

    nIndice est un entier
    nNumLigneInseré est un entier
    nNiveau est un entier
    nNbOccurrence est un entier
    nNumLigneInseréFils est un entier


    // Initialisation
    nNumLigneInseré = nNumligne

    // En mode déplacement (la touche "Ctrl" n'est pas enfoncée)
    SI PAS bCTRLEnfoncée ALORS

    // Récupère le nombre de RC de la chaîne (correspond au nombre de ligne à lâcher)
    nNbOccurrence = ChaîneOccurrence(sLigneAtraiter, RC)
    // Parcours des lignes qui sont déplacées
    POUR nIndice = (nNumLigneSelectionné + nNbOccurrence) _À_ nNumLigneSelectionné PAS -1
    // Supprime la ligne dans la table
    TableSupprime(TABLEH_TableHierarchique, nIndice)
    FIN

    SI nNumLigneSelectionné < nNumligne ALORS
    // Changement de l'indice de ligne à insérer
    nNumLigneInseré -= nNbOccurrence + 1
    nNumligne = nNumLigneInseré
    FIN

    FIN

    // Parcours des lignes à traiter
    POUR TOUTE CHAÎNE sUnElement DE sLigneAtraiter SÉPARÉE PAR RC
    nIndice++
    SI nIndice = 1 ALORS
    nNumLigneInseré = TableAjouteFils(TABLEH_TableHierarchique, nNumligne, ExtraitChaîne(sUnElement, 1, TAB), ExtraitChaîne(sUnElement, 2, TAB), ExtraitChaîne(sUnElement, 3, TAB), Val(ExtraitChaîne(sUnElement, 4, TAB)))
    SINON
    nNiveau =Val(ExtraitChaîne(sUnElement, 1, TAB))
    SELON nNiveau
    CAS 1
    nNumLigneInseréFils = TableAjouteFils(TABLEH_TableHierarchique, nNumLigneInseré, ExtraitChaîne(sUnElement, 1, TAB), ExtraitChaîne(sUnElement, 2, TAB), ExtraitChaîne(sUnElement, 3, TAB), Val(ExtraitChaîne(sUnElement, 4, TAB)))

    CAS 2
    SI nNumLigneInseréFils = 0 ALORS nNumLigneInseréFils = nNumLigneInseré
    TableAjouteFils(TABLEH_TableHierarchique, nNumLigneInseréFils, ExtraitChaîne(sUnElement, 1, TAB), ExtraitChaîne(sUnElement, 2, TAB), ExtraitChaîne(sUnElement, 3, TAB), Val(ExtraitChaîne(sUnElement, 4, TAB)))

    AUTRE CAS

    FIN
    FIN
    FIN

    // Résumé : Procédure appelée lors du glisser dans la table hiérarchique.
    // Syntaxe :
    //TableH_DND_Glisser ()
    //
    // Paramètres :
    // Aucun
    // Valeur de retour :
    // Aucune

    PROCÉDURE TableH_DND_Glisser()

    sLigne est une chaîne
    nIndiceLigneFils est un entier


    // Indique que le déplacement est autorisé
    DnDAccepte(dndDéplacer)

    // Récupère l'indice de la ligne à déplacer
    gnNumLigneSelectionné = TableSelect(_DND.ChampSource)

    // Si un indice est bien récupéré
    SI gnNumLigneSelectionné <> -1 ALORS
    // Mémorise la ligne complète
    sLigne += [RC] + _TableRecupèreLigneDeTable(_DND.ChampSource, gnNumLigneSelectionné)
    FIN

    // Récupère l'indice de ligne du premier fils trouvé
    nIndiceLigneFils = TableRécupèreFils(_DND.ChampSource, gnNumLigneSelectionné, taPremier)

    // Si l'indice la ligne Fils vaut -1
    SI nIndiceLigneFils = -1 ALORS
    // Dans ce cas, c'est une feuille qui a été sélectionnée qui veut être déplacer
    SINON
    // Dans ce cas, c'est une branche entière qui veut être déplacer
    // Récupère l'indice de ligne du premier fils trouvé
    nIndiceLigneFils = TableRécupèreFils(_DND.ChampSource, gnNumLigneSelectionné, taPremier)
    // Parcours les fils tant qu'il en existe un
    TANTQUE nIndiceLigneFils <> -1
    // Mémorise la ligne de ce fils
    sLigne += [RC] + _TableRecupèreLigneDeTable(_DND.ChampSource, nIndiceLigneFils)
    // Fils suivant
    nIndiceLigneFils = TableRécupèreFils(_DND.ChampSource, gnNumLigneSelectionné, taSuivant)
    FIN
    FIN

    // Indique que les données à déplacer est du texte
    DnDDonne(CF_TEXT, sLigne)
    // Résumé : Procédure appelée lors du lâché dans la table hiérarchique.
    // Syntaxe :
    //TableH_DND_Lacher ()
    //
    // Paramètres :
    // Aucun
    // Valeur de retour :
    // Aucune
    //

    PROCÉDURE TableH_DND_Lacher()

    sLigne est une chaîne
    nNuméroLigneSurvole est un entier
    nPosXTable est un entier
    nPosYTable est un entier
    nCorrection est un entier
    nPositionCurseur est un entier


    // Coordonnées de la table
    nPosXTable = {_DND.ChampCible, indChamp}..X
    nPosYTable = {_DND.ChampCible, indChamp}..Y
    // Correction apportée due à la hauteur de l'entête de la colonne
    nCorrection = 24

    // Pour trouver le numéro de la ligne survolée on a besoin de la
    // Position du curseur dans la fenêtre
    nPositionCurseur = CurseurPos(cpClient)
    SI nPositionCurseur <> -1 ALORS

    // Récupère la ligne déplacée. Le premier élément correspond au numéro de la ligne à déplacer.
    sLigne = DnDRécupère(CF_TEXT)

    // Recherche du numéro de ligne
    nNuméroLigneSurvole = TableInfoXY({_DND.ChampCible, indChamp}, tiNumLigne, PoidsFaible(nPositionCurseur)-nPosXTable, PoidsFort(nPositionCurseur)-nPosYTable-nCorrection)
    SI gnNumLigneSelectionné <> nNuméroLigneSurvole ET nNuméroLigneSurvole < TableOccurrence({_DND.ChampCible, indChamp}) ALORS

    // Une procédure a normalement été définie
    // Traitement de la ligne à insérer
    QUAND EXCEPTION DANS
    TableH_TraiteLacher(sLigne, nNuméroLigneSurvole, gnNumLigneSelectionné, gbCtrlEnfoncé)
    FAIRE
    Erreur("Erreur en exécution de la procédure au lâcher", ExceptionInfo(errMessage))
    FIN
    FIN
    FIN
    // Résumé : Procédure appelée lors du survol dans la table hiérarchique.
    // Syntaxe :
    //TableH_DND_Survol ()
    //
    // Paramètres :
    // Aucun
    // Valeur de retour :
    // Aucune
    //
    PROCÉDURE TableH_DND_Survol()

    // Mémorise si la touche "Ctrl" est enfoncée
    gbCtrlEnfoncé = _DND.CtrlEnfoncé

    // Si la touche "Ctrl" est enfoncée
    SI _DND.CtrlEnfoncé ALORS
    // Accepte en COPIE
    DnDAccepte(dndCopier)
    SINON
    // Accepte en DEPLACEMENT
    DnDAccepte(dndDéplacer)
    FIN
    // Résumé : Récupère les valeurs des cellules d'une ligne de table
    // Syntaxe :
    //[ <Résultat> = ] _TableRecupèreLigneDeTable (<NomTable> est chaîne, <Indice> est entier)
    //
    // Paramètres :
    // NomTable (chaîne ANSI) : Indiquer le nom de la table ou table hiérarchique (chaine de caractère avec guillemet)
    // Indice (entier) : Indice de la ligne de la table ou table hiérarchique
    // Valeur de retour :
    // chaîne ANSI : Liste des valeurs des colonnes de la ligne séparée par TAB
    //
    PROCÉDURE PRIVÉE _TableRecupèreLigneDeTable(LOCAL NomTable est une chaîne, LOCAL Indice est un entier)

    sLigne est une chaîne
    sNomColonne est une chaîne


    // Contrôle l'indice
    SI Indice <= 0 ALORS RENVOYER ""

    // Parcours les colonnes de la table
    POUR i = 1 _À_ TableOccurrence(NomTable, toColonne)
    // Récupère le nom de la ième colonne
    sNomColonne = TableEnumèreColonne(NomTable, i)
    // Mémorise le contenu de cette colonne
    sLigne += [TAB] + {sNomColonne, indChamp}[Indice]
    FIN

  6. #6
    Membre émérite

    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 467
    Billets dans le blog
    1
    Par défaut
    Salut,
    Je ne vois pas où se trouve la difficulté
    Dans TableH_Initialise
    A chaque fois le i et ii sont remplis
    Par exemple
    i = TableAjouteFils(MoiMême, 1, 1, "Entrée chaude")
    Cet entier est ensuite utilisé pour ajouter
    Ici Les entrées
    ii c'est ensuite les sous entrées etc pour les plats et desserts
    Donc rien de très compliqué
    toutes les autres fonctions sont la gestion du dnd

    Personnellement, je créerai une table hfsql qui contiendrait ces données .
    Car il se peut que l'utilisateur veuille en ajouter ou enlever.
    Comme Quoi l'exemple n'est pas si bien que cela.

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, 11h10
  2. "Drag and drop" avec directinput
    Par batosai dans le forum DirectX
    Réponses: 1
    Dernier message: 16/06/2004, 17h48
  3. [VB.NET] Microsoft TreeView drag and drop ?
    Par bigtoof dans le forum ASP.NET
    Réponses: 7
    Dernier message: 24/05/2004, 15h50
  4. [JSP][DRAG AND DROP]
    Par hamed dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 23/01/2004, 18h36
  5. 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