1. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

WD Gestion "profonde" du champ Calendrier?

Discussion dans 'Windev' créé par kabeda, Déc 25, 2022.

  1. kabeda

    kabeda Active Member

    Inscrit:
    Avr 23, 2018
    Messages:
    173
    J'aime reçus:
    63
    Bonjour,
    Est-il possible de ne permettre la sélection d'un jour sur un champ Calendrier attaché à un champ Date que si c'est un Lundi (par exemple)?
    Pour les besoins d'une application, je ne dois sélectionner que les Lundi, c'est à dire que les autres jours de la semaine ne doivent pas être sélectionnables?

    Je sais que c'est possible de laisser l'utilisateur choisir son jour puis de vérifier si c'est un Lundi. Mais le choix doit être limité qu'aux Lundi dans le Calendrier.

    Merci,
     
    Tags:
  2. Gemini1961

    Gemini1961 Well-Known Member
    MEMBRE WX DUMP TEAM

    Inscrit:
    Jan 2, 2018
    Messages:
    578
    J'aime reçus:
    867
    Bonjour

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Oui, en cas de sélection dans le calendrier si la date saisie n'est pas un 'Lundi' alors forcer le calendrier dans la partie code " A chaque modification du calendrier"
    il faut bien-sûr calculer le nombre de jours à ajouter ou retirer ( au calendrier) selon que l'on veut le lundi suivant ou précédant .
    Bien cordialement
     
  3. Maxence

    Maxence New Member

    Inscrit:
    Jan 27, 2018
    Messages:
    4
    J'aime reçus:
    2
    Bonjour

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Une ébauche de solution en écrivant le code suivant dans le traitement "A chaque modification" du champ de saisie date

    dDate est une Date = MonChamp..Valeur
    SI DateVersJourDeLaSemaine(dDate) <> 1 ALORS
    ToastAffiche("Seul les lundi sont autorisés",toastCourt,cvMilieu,chCentre)
    MonChamp.CalendrierOuvre()
    FIN

    Sinon pour un Champ Calendrier, dans le traitement "Sélection d'un jour", la solution pourrait être de forcer la sélection du premier jour de la semaine du jour sélectionné par l'utilisateur, :

    dDate est un Date = MonChamp..Valeur
    SI DateVersJourDeLaSemaine(dDate) <> 1 ALORS MonChamp..Valeur= PremierJourDeLaSemaine(dDate)

    Bon Dév
     
    #3 Maxence, Déc 25, 2022
    Dernière édition: Déc 25, 2022
  4. kabeda

    kabeda Active Member

    Inscrit:
    Avr 23, 2018
    Messages:
    173
    J'aime reçus:
    63
    Bonjour,
    Merci pour

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    et

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    mais ça je sais le faire.
    Mon véritable but c'est que dans le calendrier, les autres jours que le Lundi ne soient pas actifs (non sélectionnables).
    Je ne sais pas si ça existe vraiment avec windev. Je le faisais sur d'autres "langages" (plugins de Jquery)
     
  5. Isabelle

    Isabelle Active Member

    Inscrit:
    Jan 18, 2018
    Messages:
    358
    J'aime reçus:
    249
    Bonsoir kabeda,

    C'est un peu spécifique comme demande.
    Si PcSoft (qui en fait déjà un peu trop) devait s'adapter au cas par cas, le framework (déjà trop lourd )
    serait monumental.
    D'autant qu'en appliquant les solutions basiques et non moins judicieuses de

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    et

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ,
    ça va te prendre quelques minutes et un pincée de lignes de code.

    Cordialement.
     
    Gemini1961 et Maxence aiment ça.
  6. Maxence

    Maxence New Member

    Inscrit:
    Jan 27, 2018
    Messages:
    4
    J'aime reçus:
    2
    Bonjour

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Dans ce cas je vois deux solutions possibles :
    1. La plus facile : une combo remplie avec tous les lundi possibles sur x mois ou années

    2. Un champ de saisie Date en "Affichage seul" dans lequel il faut gérer le traitement "Bouton gauche enfoncé" ( WM_LBUTTONDOWN )
      Dans ce traitement , ouvrir une fenêtre popup : OuvrePopup(FEN_SelectionLundi)
      A toi de créer la fenêtre popup comme tu le souhaites : les possibilités sont multiples ! (notamment un tableau de 6 lignes par 7 colonnes, dont on gère le clic sur chaque cellule, avec en ligne de titre "lun", "mar", "mer",...)
    Bon dév.
     
    #6 Maxence, Déc 27, 2022
    Dernière édition: Déc 27, 2022
  7. Isabelle

    Isabelle Active Member

    Inscrit:
    Jan 18, 2018
    Messages:
    358
    J'aime reçus:
    249
    Autre solution alambiquée : dupliquer le calendrier et griser tout ce qui n'est pas lundi.;)
     
    #7 Isabelle, Déc 27, 2022
    Dernière édition: Déc 27, 2022
    WX1331 apprécie ceci.
  8. JeAn-PhI

    JeAn-PhI New Member

    Inscrit:
    Juin 17, 2020
    Messages:
    17
    J'aime reçus:
    6
    En utilisant le champ popup prédéfini calendrier et quelques aménagements de code et de style vous devriez pouvoir faire ce que vous souhaitez
     
  9. kabeda

    kabeda Active Member

    Inscrit:
    Avr 23, 2018
    Messages:
    173
    J'aime reçus:
    63
    Bonjour,
    Finalement avec vos idées à tous, j'ai opté pour ajouter à mon projet le FEN_popcalendrier présenté en tant qu'exemple. Je modifie ce que je veux dessus.

    Merci à tous,
     
  10. Gemini1961

    Gemini1961 Well-Known Member
    MEMBRE WX DUMP TEAM

    Inscrit:
    Jan 2, 2018
    Messages:
    578
    J'aime reçus:
    867
    C'est aussi la solution que j'avais adopté, il y a bien des années de cela .. .
    j'y avais même ajouté la gestion numéro de semaine ;-)
    Bien cordialement
     
  11. NinjaCoder

    NinjaCoder New Member

    Inscrit:
    Oct 22, 2019
    Messages:
    24
    J'aime reçus:
    5
    Salut c'est très simple
    à chaque affichage d'un mois dans le calendrier :
    - Parcourir tous les jours affichés
    - Si le jour n'est pas un lundi, griser la case avec la syntaxe : MonCalendrier[LaDateEnQuestion]..grisé = vrai

    Ton calendrier s'affichera uniquement avec les lundis actifs


    ps : "LaDateEnQuestion" doit être sous le format AAAAMMJJ
     
    WX1331 apprécie ceci.
  12. Gemini1961

    Gemini1961 Well-Known Member
    MEMBRE WX DUMP TEAM

    Inscrit:
    Jan 2, 2018
    Messages:
    578
    J'aime reçus:
    867
  13. Gemini1961

    Gemini1961 Well-Known Member
    MEMBRE WX DUMP TEAM

    Inscrit:
    Jan 2, 2018
    Messages:
    578
    J'aime reçus:
    867

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Une date sur un jour barré n'est pas acceptée

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
    WX1331 apprécie ceci.
  14. Gemini1961

    Gemini1961 Well-Known Member
    MEMBRE WX DUMP TEAM

    Inscrit:
    Jan 2, 2018
    Messages:
    578
    J'aime reçus:
    867
    eJoursGrises = _COMBI_JourSem_3_Mercredi + _COMBI_JourSem_4_Jeudi
    dRetourDate est une Date = Ouvre(POP_Calendrier, DateSys(), SourisPosX(spEcran), SourisPosY(spEcran), eJoursGrises, _1_Lundi)
     
    WX1331 apprécie ceci.
  15. kabeda

    kabeda Active Member

    Inscrit:
    Avr 23, 2018
    Messages:
    173
    J'aime reçus:
    63
    Bonjour,

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ta solution me paraît la plus appropriée pour moi.
    J'ai réussi à manipuler mon calendrier pour qu'il ne propose que les Lundi mais (manque de pot?) le client me demande d'avoir un autre champ où les choix ne se font que les Mercredi. ça aussi j'ai su le faire.
    Mais il me demande aussi le numéro de semaine. J'ai vu que tu l'as programmé. Est-ce possible d'obtenir le numéro de semaine variable selon le jour de début de semaine (Lundi ou Mercredi).
    Pour info, je suis en version 23 de windev. J'ai déjà programmé une procédure pour le numéro de semaine "standard" à partir de dimanche.
     
  16. Gemini1961

    Gemini1961 Well-Known Member
    MEMBRE WX DUMP TEAM

    Inscrit:
    Jan 2, 2018
    Messages:
    578
    J'aime reçus:
    867
    Bonjour

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Avec la fonction PremierJourDeLaSemaine + Décalage (*) , tu devrais pouvoir répondre à la demande de ton client ...
    (*) Décalage étant le nombre de jour entre un Lundi et un Mercredi

    Bien cordialement
     
  17. kabeda

    kabeda Active Member

    Inscrit:
    Avr 23, 2018
    Messages:
    173
    J'aime reçus:
    63
    Bonjour,

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    , je sais que c'est trop demander mais je n'arrive pas à récupérer le bon n° de semaine.
    Pour janvier 2023

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Decembre 2022

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Novembre 2022

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Tu remarques l'incohérence des n° entre la première semaine de décembre 2022 et la dernière de novembre 2022.

    Mon approche (assez bizarre) a été de récupérer le premier mercredi de janvier de l'année puis de récupérer la partie entière de la division par 7 de la différence entre le 1er du mois et le premier mercredi de janvier. J'ai déjà dis que c'est bizarre.

    Peux-tu m'aider à progresser à récupérer le n° de semaine en sachant que mes semaines commencent le mercredi? Désolé d'insister mais c'est un point sur lequel je bugue et je commence à me faire taper sur les doigts par mon boss pour faire avance le programme.

    Entre-temps, j'avance sur le reste sur la gestion de stock.

    Merci
     
  18. Yusep

    Yusep Active Member
    DUMP TEAM

    Inscrit:
    Jan 3, 2018
    Messages:
    226
    J'aime reçus:
    160
    Bonjour
    Utilisez

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    puis un "SI" pour trouver le mercredi.
     
  19. kabeda

    kabeda Active Member

    Inscrit:
    Avr 23, 2018
    Messages:
    173
    J'aime reçus:
    63
    Bonjour,

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    NuméroDeSemaine fait un 'calcul' selon une norme internationale qui je ne vois pas comment pourrait correspondre à ce que Mercredi soit considéré comme début de semaine.
     
  20. Dandypunk

    Dandypunk Well-Known Member

    Inscrit:
    Nov 28, 2019
    Messages:
    598
    J'aime reçus:
    328
    Code (Text):
    NoSemaine:=NuméroDeSemaine
    SI JourSemaine <Mercredi
         NoSemaine:=NoSemaine-1
         TraiterSemaineNulle
    FINSI
     
    Gemini1961 apprécie ceci.

Partager cette page

Chargement...