|
Iniciado por philippe_hig, 26,nov. 2004 15:16 - 1 respuesta |
| |
| | | |
|
| |
Publicado el 26,noviembre 2004 - 15:16 |
Bonjour,
Je voudrais savoir s'il est possible d'effectuer un drag and drop d'une ligne appartenant à une table dans la fenêtre A sur une une autre table apparetenant à la fenêtre B Merci |
| |
| |
| | | |
|
| | |
| |
Publicado el 26,noviembre 2004 - 19:04 |
Bonjour, Tout à fait possible en utilisant les fonctions Dndxxx ainsi que les procédures associées à DnDEvénement Comme je suppose que cette réponse serait insuffisante, voici le code permettant de réaliser ce que tu veux
Cet exemple fonctionne sur une fenêtre principale ouvrant une soeur. La table de la fenêtre source est une table mémoire alimentée par un fichier Elle est la source du DnD pour la seconde fenêtre
La table de la fenêtre cible a la même structure que la table source La ou les tables cibles peuvent elles-même être sources s'il y a plusieurs tables dans la fenêtre cible et que l'on souhaite faire du DnD dans cette fenêtre (ce qui est mon cas), il suffit de rajouter les tables et recopier le code d'initialisation de la fenêtre cible pour les autres tables, et ajouter les CAS correspondant. Les tables sont multisélection Les fonctions Dnd comportent les procédures ProcSurvol, ProcLâcher et ProcSortiedechamp On utilise les indirections dans le cas ou il y aurait plusieurs tables cibles afin de réduire les lignes de code notamment
La fenêtre source doit comporter les procédures ProcLâcher et ProcSortiedechamp La fenêtre cible comporte la procédure ProcSurvol
Nota : Je n'ai pas mis ici les fonctions permettant de conrtrôler que les lignes cibles existent déjà dans la table cible et les fonctions permettant la suppression des lignes en cas de drop malencontreux, mais ce n'est pas le plus difficile à réaliser L'essentiel étant de comprendre le principe de fonctionnement
Bon week-end et bon développement....
// 1 - Code Initialisation de la fenêtre Source
Table_Source..DndSource=dndProgrammé NomFenCible est une chaîne = "FenetreCible" // ouvre la seconde fenêtre à l'endroit voulu (10,20 ici) OuvreSoeur(NomFenCible,10 ,20)
DnDEvénement("ProcSortieChamp",Table_Source,dndSortieChamp) {NomFenCible+"."+"Table_CIBLE"}..DndCible=dndProgrammé
DnDEvénement("ProcLâcher",{NomFenCible+"."+"Table_CIBLE"},dndLâcher) DnDEvénement("ProcSortieChamp",Table_Source,dndSortieChamp) DnDEvénement("ProcSortieChamp",NomFenCible+"."+"Table_CIBLE"},dndSortieChamp)
// Remplir la table source avec le contenu d'un fichier POUR TOUT Fichier SUR cle TableAjoute(Table_Source,Fichier.Zone1 +TAB+ Fichier.Zonex) FIN
// Procédure utilisée par le DnD - Lâcher PROCEDURE ProcLâcher()
DnDAccepte(dndDéfaut) NomColonne1, Nomcolonne2 est une chaîne reschamp est une chaîne = _DND.FenSource+"."+_DND.ChampSource
i,y est un entier NomColonne1 = "Intitulé col 1" Nomcolonne2 = "Intitulé col 2"
SELON reschamp CAS _DND.FenSource+"."+"Table_Source",... _DND.FenSource+"."+"Table_Cible" ,... NbSelectionne est un entier = TableSelectOccurrence(reschamp) // premier élément sélectionné POUR i=1 A NbSelectionne y = TableSelect(reschamp,i) SI y > 0 ALORS TableAjouteLigne(_DND.ChampCible, ... {reschamp+"."+NomColonne1}[y],... {reschamp+"."+Nomcolonne2}[y]) Fin
// Procédure utilisée par le DnD - Sortie de Champ // On réinitialise la barre de message de la fenêtre PROCEDURE ProcSortieChamp() Message()
// 2 - Code d'initialisation de la fenetre cible // La table cible peut-être source, s'il y a plusieurs tables dans cette fenêtre Table_Cible..DndSource=dndProgrammé DnDEvénement("ProcSurvol",Table_Cible,dndSurvol)
// Procédure utilisée par le DnD - Survol
PROCEDURE ProcSurvol() // Procédure appelée lorsque l'utilisateur survole le champ cible DnDAccepte(dndDéfaut) // on modifie le curseur DnDCurseur(dndCopier) // on affiche un message en fonction du champ survolé SELON _DND.ChampCible CAS "Table_Cible" Message("Vous allez ajouter dans la table cible : "+ExtraitChaîne(_DND.ChampCible,1,"_",DepuisFin)) FIN
"Philippe" <philippe_hig@yahoo.fr> a écrit dans le message de news: 41a722d9@news.pcsoft.fr...
Bonjour,
Je voudrais savoir s'il est possible d'effectuer un drag and drop d'une ligne appartenant à une table dans la fenêtre A sur une une autre table apparetenant à la fenêtre B Merci
|
| |
| |
| | | |
|
| | | | |
| | |
|