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 :

procedure drag and drop


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2009
    Messages : 15
    Points : 13
    Points
    13
    Par défaut procedure drag and drop
    j'ai trouvé un code intéressant dans une partie d'un lst pour faire du drag and drop entre différent type de champ,

    je n'ai pas tout compris, notamment sur comment appeler cette procédure?


    je met tout le code qui est plutôt long

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
     
    PROCEDURE DDrop_Fin(Lacher)// Traitement du "lâcher" sur un champ
    // Lacher est une chaîne qui contient le nom du champ origine et du 
    // champ destination, sous la syntaxe suivante:
    //    origine->destination
    // Par exemple:
    //    "TABLE1->SUPPRIME"
    // Testez cette chaîne pour connaître le traitement à réaliser.
     
    // Attention ! Dans le source ci-après, notez bien les 
    // signes d'indirection '{'  '}'... 
    // sinon le drag and drop ne fonctionne pas !
     
    Source,Dest sont des chaînes
    xTypeChamp est un entier
     
    // Décomposition du champ de Départ et du champ de Destination
    // de la chaîne "Lacher"...
    Source=Milieu(Lacher,1,Position(Lacher,"->")-1)		// Source
    Dest=Milieu(Lacher,Position(Lacher,"->")+2)		// Destination
    ValRécupérée est une chaîne 				// Valeur lue dans le TreeView
    PosTAB est un entier						// pour extraire les tabulations
     
    // Récupération de l'option sélectionnée dans le Tree-View par la valeur de Source
    ValRécupérée = {Source,indVariable}[{Source,indVariable}]	// Attention aux signes d'indirection !
     
    // Note : dans cette procédure, tous les éléments du tree-view sont acceptés.
    // Si vous voulez restreindre le lâché en n'acceptant que les feuilles du
    // tree-view source, vous devez tester si cette source est bien une feuille,
    // avec le code ci-dessous :
    // Si ArbreTypeElement(Source, ValRécupérée) <> aFeuille alors
    //	RETOUR
    // Fin
     
    // Récupération du type du champ Destination...
    xTypeChamp= {Dest,indChamp}..Type
    //    Info(xTypeChamp)
    // Traitement selon le type de champ
    SELON xTypeChamp
    	CAS 4		// Champ Libellé, on remplace les TAB d'origine
    		// par des espaces, pour conserver l'intégralité du noeud et de la feuille
    		ValRécupérée=Remplace(ValRécupérée,TAB," ")
    		{Dest,indChamp}..Libellé=ValRécupérée
    	CAS 11      // Champ Tree-View
    		// Si on a sélectionné un noeud, on l'ajoute avec son contenu...
    		SI ArbreTypeElément(Source,ValRécupérée) <> aFeuille ALORS
    			ArbreAjoute(Dest,ValRécupérée)
    			// on déroule le noeud pour afficher son contenu...
    			ArbreDéroule(Dest,ValRécupérée)
    		SINON	// on ajoute l'item. Si le noeud existe déjà, mais pas la
    			// feuille correspondant à ce noeud, l'item sera ajouté...
    			ArbreAjoute(Dest,ValRécupérée)
    			// on déroule le noeud pour afficher son contenu...
    			ArbreDéroule(Dest,ValRécupérée)
    		FIN
    	CAS 13		// Champ Sélecteur
    		ValRécupérée=Remplace(ValRécupérée,TAB," ")
    		{Dest,indChamp}..Etat=Invisible
    		{Dest,indChamp}[1]..Libellé=ValRécupérée
    		{Dest,indChamp}..Etat=Actif
    	CAS 14		// Champ Interrupteur
    		ValRécupérée=Remplace(ValRécupérée,TAB," ")
    		{Dest,indChamp}..Etat=Invisible
    		{Dest,indChamp}[1]..Libellé=ValRécupérée
    		{Dest,indChamp}..Etat=Actif
    	CAS 16		// Champ Ombre floue
    		ValRécupérée=Remplace(ValRécupérée,TAB," ")
    		{Dest,indChamp}..Libellé=ValRécupérée
    	CAS 256		// Champ Bouton
    		ValRécupérée=Remplace(ValRécupérée,TAB," ")
    		{Dest,indChamp}..Libellé=ValRécupérée
    	CAS 512		// Champ table mémoire, ou un champ de saisie Texte
    		ValRécupérée=Remplace(ValRécupérée,TAB," ")
    		// On différencie le traitement entre la Table et 
    		// le champ de saisie par leurs noms, le traitement
    		// étant différent pour la table et le champ de saisie
    		SI Dest="VEHICULE" 
    		// Ajout d'une ligne vide à la table
    		TableAjoute("TABLE01","")
    		// Récupération de la ligne vide en cours
    		nIndice est un entier =TableOccurrence("TABLE01")
    		TableModifie(Dest,ValRécupérée,nIndice)	
    	SINON		// Champ "SAISIE1"
    		{Dest,indVariable}=ValRécupérée
    FIN
    CAS 1024	// Champ Liste, on remplace les TAB d'origine
    // par des RC pour conserver l'arborescence du TV...
    ValRécupérée=Remplace(ValRécupérée,TAB,RC)			
    ListeAjoute(Dest,ValRécupérée)
    CAS 2048	// Champ Combo, on remplace les TAB d'origine
    // par " - " pour l'affichage dans la combo
    ValRécupérée=Remplace(ValRécupérée,TAB," - ")			
    ListeAjoute(Dest,ValRécupérée)
    {Dest,indChamp}=1
    AUTRES CAS 
    RETOUR
    FIN
    En gros comment je récupère le nom du champ d'origine et celui d'arrivé?

    (je débute depuis très peu en windev, je tiens à le préciser)

  2. #2
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Voila ce que moi j'ai mis en place :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DnDAccepte(dndDéplacer)
     
    Table_Glisser_1..DndCible	= dndProgrammé
    Table_Glisser_2..DndCible	= dndProgrammé
     
    DnDEvénement("Dnd_Lâcher", "Table_Glisser_1", dndLâcher)
    DnDEvénement("Dnd_Survol", "Table_Glisser_1", dndSurvol)
     
    DnDEvénement("Dnd_Lâcher", "Table_Glisser_2", dndLâcher)
    DnDEvénement("Dnd_Survol", "Table_Glisser_2", dndSurvol)
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    PROCEDURE Dnd_Lâcher()
     
    NomTable est une chaîne = _DND.ChampCible
     
    TableAjouteLigne(NomTable,COL_NUM)
     
    SI Dnd_Machine = "" ALORS Dnd_Machine = MACHTETE.MACHINE
    Puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    PROCEDURE Dnd_Survol()
     
    SI COL_Type = "TNO" ALORS RETOUR
     
    SI TableOccurrence(_DND.ChampCible) >= 9 ALORS RETOUR
     
    POUR i = 1 _A_ TableOccurrence(Table_Glisser_1)
    	SI COL_NUM = Table_Glisser_1.COL_GLISSER[i] ALORS RETOUR
    FIN
     
    POUR i = 1 _A_ TableOccurrence(Table_Glisser_2)
    	SI COL_NUM = Table_Glisser_2.COL_GLISSER[i] ALORS RETOUR
    FIN
     
    SI Dnd_Machine <> "" ET  Dnd_Machine <> MACHTETE.MACHINE ALORS RETOUR
     
    HLitRecherchePremier(ORDRES,ORDRE,COL_NUM)
    SI PAS HTrouve() _OU_ ORDRES.ETAT_OF = "E" ALORS RETOUR
     
    DnDAccepte(dndDéplacer)
    Il est surtout important de comprendre que pour que cela fonctionne il faut accepter le lâcher dans la fonction survol puis de faire le déplace/copier dans la fonction lâcher.

    Tu peux voir que tous les tests sont fait dans survol.
    Patrick Catella

    Je ne réponds pas aux messages privés si ceux ci suivent un sujet. Il est préférable pour tous de poursuivre la discussion dans le sujet d'origine.

    Je suis Concepteur développeur Windev (10 ans) et Windev mobile (4 ans) en recherche d'emploi. J'etudie toute proposition

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2009
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    bon je vais faire plus simple, (j'adore me compliquer le code) mais j'ai toujours besoin d'aide :
    dans un arbre avec seulement 3 niveaux (en gros bâtiment,pièce,meuble), comment je fais pour un champ réagisse de façon différente selon le niveau de la branche que j'aurai drag and drop?

  4. #4
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Comme je te l'ai dit il faut que tout ce passe dans la fonction survol : tu peux positionner un flag, autoriser ou refuser le drag&drop et ensuite le faire dans la fonction lâcher.
    Patrick Catella

    Je ne réponds pas aux messages privés si ceux ci suivent un sujet. Il est préférable pour tous de poursuivre la discussion dans le sujet d'origine.

    Je suis Concepteur développeur Windev (10 ans) et Windev mobile (4 ans) en recherche d'emploi. J'etudie toute proposition

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. Procedure Drag and drop multiple !
    Par cincap dans le forum Débuter
    Réponses: 2
    Dernier message: 28/10/2009, 13h15
  3. [VB.NET] Microsoft TreeView drag and drop ?
    Par bigtoof dans le forum ASP.NET
    Réponses: 7
    Dernier message: 24/05/2004, 14h50
  4. [JSP][DRAG AND DROP]
    Par hamed dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 23/01/2004, 17h36
  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