|
| Position dans un digramme de Gantt |
| Iniciado por Jeremy ZUCCARELLI, 21,ago. 2020 10:04 - 3 respuestas |
| |
| | | |
|
| |
Miembro registrado 3 mensajes |
|
| Publicado el 21,agosto 2020 - 10:04 |
Bonjour,
Je souhaite crée un planning de taches avec des liens entre elles. J'ai créer une table hiérarchique avec une colonne de Gantt. J'ai une liste de tâches à effectuer sur le coté et je voudrai pouvoir faire un glisser déposer sur le diagramme de Gantt pour près remplir la tâches. J'arrive à trouver le numéro de la ligne avec un TableInfoXY(), mais je n'arrive pas à trouver la fonction pour savoir sur quel jour le glisser déposé à été lâché.
Existe t'il une fonction pour trouver ce jour? |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 499 mensajes |
|
| Publicado el 21,agosto 2020 - 20:29 |
Bonsoir Jérémy,
Il n'existe pas de fonction pour savoir à quel jour/heure se trouve le curseur actuel. Il faut donc le calculer, en partant de la date de début affichée, qui peut être connue avec PlanningPositionDateHeure(CHAMP_GANTT, plnDateDébut).
En pseudo code cela ressemble un peu à ça :
nPositionReelleX est un entier = (_DND.SourisPosX) - COL_RESSOURCE..Largeur
dhDebutTache est une dateheure = PlanningPositionDateHeure(CHAMP_GANTT, plnDateDébut) + "000000"
dhDebutTache..Jours += (nPositionReelleX / CHAMP_GANTT.COL_GANTT..LargeurJour)
J'ai volontairement dit "pseudo-code" car il peut y avoir un certain nombre d'adaptations à faire : - Si vous avez défilé le champ gantt à la molette, il faudra prendre en compte la position de l'ascenseur pour avoir une nPositionReelleX correcte. - Si votre amplitude horaire affichée n'est pas de 24h, il faudra adapter la dernière ligne pour prendre en compte ce fait - Si vous déposez votre tâche sur une ressource en congé, la date de début de la tâche ne sera pas celle réellement précisée, mais démarrera après le congé.
J'espère que cela vous donnera une première piste, bon courage pour la suite  |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 3 mensajes |
|
| Publicado el 07,septiembre 2020 - 14:51 |
Bonjour,
Merci je vais voir pour tester ceci. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 3 mensajes |
|
| Publicado el 25,septiembre 2020 - 11:08 |
Bonjour,
J'ai enfin réussi à tester votre solution.
J'ai simplifier le code à cause d'un soucie de WINDEV (si je tente de fixer une ou plusieurs colonne par programmation la colonne de Gantt viens se superposer sur les colonne fixe quand j'utilise l'ascenseur horizontal.), J'ai donc deux tableaux lier avec les traitements et j'utilise ce code pour avoir le jour au niveau du pointeur de la souris.
Procedure lpGanttInfoXY(pTable est un Champ) : DateHeure pX est un entier = SourisPosX(spChamp)
dhDebutTache est une DateHeure = PlanningPositionDateHeure(pTable.COL_Gantt, plnDateDébut) + "000000" dhDebutTache..Jour += ArrondiInférieur((pX + AscenseurPosition(pTable, ascHorz)) / pTable.COL_Gantt..LargeurJour)
RENVOYER dhDebutTache |
| |
| |
| | | |
|
| | | | |
| | |
|