|
Planning Windev |
|
Stagiaire WDF
Inscrit: 28/09/2005 19:26
Post(s): 7
|
Bonjour
j'ai un besoin super urgent, sur un point très critique : le planning.
L'ex de Windev ne me convient pas. Voila mes besoins:
en lignes, les tranches horaires (à la 1/2 h près). Les horaires affichés doivent etre flexibles selon l'utilisateur.
En colonne, x colonnes par Jour avec x < 10. Affichage sur une semaine, mais possibilité sur deux afin de basculer des taches d'une semaine sur la suivante.
Pouvez vous m'aider? j'ai vu le projet de KPiTn, mais je n'y comprends rien, et je ne suis pas sur qu'il me convienne.
Pouvez vous m'aider? merci
et bon dév.
Contribution le : 16/05/2006 14:24
|
|
|
Re: Planning Windev |
|
Utilisateur WDF
Inscrit: 06/02/2003 08:38
De Bourgogne
Post(s): 88
|
Bonjour, J'ai développé un planning horaire ,sur la base de l'exemple windev. Pour y arriver il faut juste se plonger dedans un ou deux jour, après on fait a peut près ce que l'on veut quand on a compris le principe . ce qui ma mis sur la voie c'est ce post trouvé sur le newsgroup pcSoft. (meric à Christian) Cordialement, JYM Citation : Salut Je te conseille d'analyser l'exemple fourni par windev, il est très bien fait.
Pour tracer les heures dans la journée: Dans la classe :TraceCadres A la fin de ta classe remplace l'existant par :
// Séparateur demi-journées ou les heures dans la journée SI :AfficheMidi ALORS SI :bNoirEtBlanc ALORS dStylo(iNoir, 2) SINON dStylo(:CoulHeures, 2) // selon (DateVersEntier(au)-DateVersEntier(du)) SELON :NombreColonnes CAS <=:NombreJourAfficheHeures //on divise la journée en heures POUR i=0 A :NombreColonnes-1 // On trace un séparateur en pointillés à moitié de chaque jour // x = (:LargeurMarge+(i * :LargeurColonne)) + (:LargeurColonne/2) POUR j=0 A (Val(FinJournée) - Val(DebutJournée))-1 x=:LargeurMarge + :LargeurColonne*i+ (:LargeurColonne*j)/(Val(FinJournée)-Val(DebutJournée)) SI j=0 ALORS SI i<>0 ALORS //la première ligne de séparation n'est pas affichée SI :bNoirEtBlanc ALORS dStylo(iNoir, 2) SINON dStylo(:CoulHeures, 0) dLigne( x, (:HauteurEntête*2)/3+1, x, :HauteurChamp ) FIN SINON SI :bNoirEtBlanc ALORS dStylo(iNoir, 2) SINON dStylo(:CoulHeures, 2) dLigne( x, (:HauteurEntête*2)/3+1, x, :HauteurChamp ) FIN
FIN FIN AUTRE CAS POUR i=0 A :NombreColonnes-1 // On trace un séparateur en pointillés à moitié de chaque jour // x = (:LargeurMarge+(i * :LargeurColonne)) + (:LargeurColonne/2) x = (:LargeurMarge+(i * :LargeurColonne)) + (:LargeurColonne*(12-Val(DebutJournée))/(Val(FinJournée)-Val(DebutJournée))) dLigne( x, :HauteurEntête+1, x, :HauteurChamp ) FIN FIN
FIN
Explication: :NombreJourAfficheHeures est un entier. Le principe est que si le nombre de jours affichés est inférieur à une certiane valeur, on affiche la séparation des heures Pour tes tests, tu peux remplacer :NombreJourAfficheHeures avec 3
DébutJournée et FinJournée sont des entiers. Par exemple DébutJournée peut être à 7 et FinJournée peut être à 20 Ainsi il va afficher les heures entre 7h00 et 20h00
///////////////////////////////////////////////////////////////////////////// ////// Pour afficher le libellé des heures
C'est la classe TraceJours Je te l'ai mis en entier, tu peux donc comparer ce qui existe avec ce qui est nouveau ....
PROCEDURE TraceJours()
// Pour parcourir chaque colonne i est un entier sHeureJournée est un entier sHeureAffichée est un entier sChaineHeure est une chaîne // Pour le calcul de la position horizontale xJour, xMois sont des entiers yJour, yHeures sont des entiers xHeure est un entier // Date à afficher lDate est un entier // Pour construire la chaîne affichée sChaineJour est une chaîne // Numéro de jour du mois sJour est une chaîne
//selon (DateVersEntier(au)-DateVersEntier(du)) SELON :NombreColonnes CAS <=:NombreJourAfficheHeures yJour= :HauteurEntête-2-(:HauteurEntête/3) yHeures=:HauteurEntête-2 AUTRE CAS yJour= :HauteurEntête-2 yHeures=-1 FIN
// On dessine le jour pour chaque colonne POUR i = 0 A :NombreColonnes lDate = :DateCourante + i
// Lettre du jour sChaineJour = Gauche(EntierVersJourEnLettre(lDate),1)
// Numéro de jour sJour = Droite(EntierVersDate(lDate),2) sChaineJour += " "+sJour
// Position horizontale en prenant en compte la marge xJour = :MargeEnteteX + :LargeurMarge+(i * :LargeurColonne)
// On sélectionne la police verticale dPolice(:NomPoliceJour, :HauteurPoliceJour, :AttrPoliceJour, 90) SI EntierVersJour(lDate)=6 OU EntierVersJour(lDate)=7 ALORS // Samedi-Dimanche SI :bNoirEtBlanc ALORS dTexte( xJour, yJour, sChaineJour, iNoir ) SINON dTexte( xJour, yJour, sChaineJour, :CoulNumJour ) SINON SI EstFerie(lDate) ALORS // Jour férié SI :bNoirEtBlanc ALORS dTexte( xJour, yJour, sChaineJour, iNoir ) SINON dTexte( xJour, yJour, sChaineJour, :CoulNumJour ) SINON // Autres jour : couleur par défaut SI :bNoirEtBlanc ALORS dTexte( xJour, yJour, sChaineJour, iNoir ) SINON dTexte( xJour, yJour, sChaineJour, :CoulNumJour ) FIN FIN
SI yHeures<>-1 ALORS // On sélectionne la police verticale dPolice(:NomPoliceJour, :HauteurPoliceJour, :AttrPoliceJour, 90) //on écrit les heures xHeure=xJour POUR sHeureJournée=0 A (Val(FinJournée)-Val(DebutJournée))-1 sHeureAffichée=sHeureJournée+Val(DebutJournée) sChaineHeure=Droite("0"+sHeureAffichée+":00",5) xHeure=xJour+(:LargeurColonne)/(Val(FinJournée)-Val(DebutJournée))*sHeureJ ournée dTexte( xHeure, yHeures, sChaineHeure, :CoulNumJour ) FIN FIN
// On change de mois alors on trace une séparation et on affiche le nom du mois SI sJour = "01" ALORS xMois = :LargeurMarge + (i * :LargeurColonne) SI :bNoirEtBlanc ALORS dLigne( xMois, 0, xMois, :PositionJours, iNoir ) SINON dLigne( xMois, 0, xMois, :PositionJours, :CoulCadres ) // On sélectionne la police horizontale dPolice(:NomPoliceJour, :HauteurPoliceJour+2, :AttrPoliceJour, 0) SI :bNoirEtBlanc ALORS dTexte( xMois+:MargeEnteteX, :MargeEnteteY, EntierVersMoisEnLettre(lDate), iNoir ) SINON dTexte( xMois+:MargeEnteteX, :MargeEnteteY, EntierVersMoisEnLettre(lDate), :CoulMois ) FIN FIN
// On sélectionne la police horizontale dPolice(:NomPoliceJour, :HauteurPoliceJour+2, :AttrPoliceJour, 0) // On affiche le mois et l'année SI :bNoirEtBlanc ALORS dTexte( :MargeEnteteX, :MargeEnteteY, Gauche(EntierVersDate(:DateCourante),4), iNoir ) dTexte( :MargeEnteteX+:LargeurMarge, :MargeEnteteY , EntierVersMoisEnLettre(:DateCourante), iNoir ) SINON dTexte( :MargeEnteteX, :MargeEnteteY, Gauche(EntierVersDate(:DateCourante),4), :CoulMois ) dTexte( :MargeEnteteX+:LargeurMarge, :MargeEnteteY , EntierVersMoisEnLettre(:DateCourante), :CoulMois ) FIN
Voilà, j'espère que ca va t'aider.
A+
-- Bon développement à tous Christian
Contribution le : 16/05/2006 18:30
|
|
|
Re: Planning Windev |
|
Stagiaire WDF
Inscrit: 28/09/2005 19:26
Post(s): 7
|
Bonjour J'avais vu ce bout de code, sur le forum de pcsoft, on m'a indique le lien suivant: http://www.daussy.org/windev/qui contient les sources d'un planning horaire qui me convient pas mal. Merci de votre soutien
Contribution le : 18/05/2006 09:06
|
|
|
Re: Planning Windev |
|
Stagiaire WDF
Inscrit: 22/03/2010 17:35
Post(s): 3
|
merci JYM quelques heures à mettre en place est c'est ok pyd
Contribution le : 19/08/2011 14:01
|
|
Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.
|
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
|