|
Modifier la couleur d'une date dans le Calendrier d'une zone répétée |
Iniciado por Jennifer, fev., 14 2025 4:24 PM - 5 respostas |
| |
| | | |
|
| |
Membro registado 17 mensagems |
|
Publicado em fevereiro, 14 2025 - 4:24 PM |
Bonjour,
J'utilise actuellement la version 2024 de Windev.
J'aimerai afficher plusieurs calendriers (affichant chacun un mois différent) sur un même écran et sur chaque calendrier mettre sur couleur de fond différente certaines dates.
1ère solution : Je crée une zone répétée et j'insère un champ calendrier dans les répétitions. En utilisant les propriétés BorneMin et BorneMax du champ Calendrier, chaque calendrier affiche le mois souhaité.

Je voudrais sur chaque calendrier mettre en évidence différentes dates en utilisant la propriété CouleurFond. Côté code je n'ai pas d'erreur, par contre à l'exécution j'ai le message :
ZR_SansNom2[1].CAL_SansNom1[dDate]..CouleurFond = RougePastel
Le champ ZR_SansNom2.[1].CAL_SansNom1 ne supporte pas l'opérateur [ ].
2e solution : Je crée une zone répétée que j'alimente par une fenêtre interne. J'arrive à avoir les calendriers sur des mois différents et sur chacun d'eux des dates différentes sélectionnées mais je me retrouve avec un seul calendrier par ligne car l'utilisation de fenêtre interne nécessite d'activer l'option "Utiliser une Fenêtre interne par ligne".
Quelqu'un a-t-il déjà eu ce souci, si oui comment l'a t-il résolu ?
Merci de votre aide.
Jennifer |
| |
| |
| | | |
|
| | |
| |
Publicado em fevereiro, 17 2025 - 1:50 PM |
Bonjour
Je vois votre problème, vous souhaitez colorier une date dans un calendrier ensuite dans une zone répétée, ce n'est pas une bonne pratique, j'ai une solution pour vous
1. Vous devrez supprimer le champ zone répétée si possible, ensuite vous ajoutez 12 champ calendrier, vous devrez utiliser les ancrages pour chaque calendrier, le mieux c'est de mettre en 3 colonne et 4 ligne pour synchroniser avec l'ancrage de WLangage
Pour ce cas lors de la coloriage d'une date dans un calendrier, ce sera pratique de programmer // EDD (02/25) : voilà un programme dynamique pour vous // EDD (02/25) : créer un champ bouton et copier ce programme dans l'évènement du clique du bouton LOCAL cCalendrier is ClCalendrier_Couleur cCalendrier:m_sChamp = "CAL_Template" cCalendrier:m_dDate = "20250228" // EDD (02/25) : si la date se situe la date aujourd'hui alors il n'y a pas de changement de couleur de fond cCalendrier:m_cCouleur = RougePastel // EDD (02/25) : dans le cas d'un couleur invalide alors le couleur noir est le par défaut cCalendrier:Validation() IF cCalendrier:m_bRetour = True THEN cCalendrier:Lancement() END
// EDD (02/25) : créer un nouveau classe ClCalendrier_Couleur est une Classe m_bRetour is booléen m_dDate is Date m_cCouleur is Couleur m_sChamp is string FIN
// EDD (02/25) : créer deux méthodes dans la classe ClCalendrier_Couleur PROCÉDURE Validation() :m_bRetour = True IF DateValide(:m_dDate) = False THEN :m_bRetour = False Info("Merci de vérifier la date.") ELSE IF NoSpace(:m_sChamp) = "" THEN :m_bRetour = False Info("Merci de remplir le champ calendrier.") ELSE IF ChampExiste(:m_sChamp) = False THEN :m_bRetour = False Info("Merci de vérifier le champ calendrier.") END
PROCÉDURE Lancement() {:m_sChamp, indChamp}[:m_dDate]..CouleurFond = :m_cCouleur
NB : dans le cas ou il y aura plusieurs calendrier, il suffit de remplacer les valeurs des variables :m_sChamp | :m_dDate | :m_cCouleur vous avez le choix des valeurs
Cordialement Mr.RATSIMANDRESY Niry Aina Eddy |
| |
| |
| | | |
|
| | |
| |
Publicado em fevereiro, 17 2025 - 4:45 PM |
Bonjour Mr.RATSIMANDRESY Niry Aina Eddy,
Merci beaucoup pour ta réponse. Assez complète et effectivement assez éloignée de ce vers quoi j'étais partie.
J'ai ajouté la classe et les deux méthodes suggérées. Je pense avoir compris le principe. Pour l'instant je n'ai pas su répondre à tous les besoins : - comment faire pour forcer par programmation les bornes min et max de chaque calendrier de sorte à ne pas avoir les 12 calendriers sur le même mois ? Je pensais faire quelques chose comme ceci mais j'ai un message d'erreur :
{:m_sChamp, indChamp}.BorneMin = :m_dBorneMin
Erreur :'BorneMin' est inconnu pour cet élément.
- Comment faire dans le cas où j'aurais besoin de plus de 12 calendriers étant donné que je dois les insérer manuellement dans l'interface graphique ?
Merci beaucoup de votre aide, |
| |
| |
| | | |
|
| | |
| |
Membro registado 949 mensagems |
|
Publicado em fevereiro, 18 2025 - 12:25 AM |
Bonjour, Si ça peut vous aider : Créer 12 calendrier directement sur une fenêtre (Calendrier1, Calendrier2, ... , Calendrier12)
Dans le code d'initialisation de la fenêtre :
sYear est un entier = 2025
POUR i = 1 _À_ 12
MonJourDebut est une Date MonJourDebut = PremierJourDuMois(sYear, i) MonJourFin est une Date MonJourFin = DernierJourDuMois(sYear, i) sCalend est une chaîne = "Calendrier" + i {sCalend, indChamp}..BorneMin = MonJourDebut {sCalend, indChamp}..BorneMax = MonJourFin FIN
Dans le code d'un bouton sur la fenêtre :
sCalend est une chaîne sCalend = "Calendrier" + 1
{sCalend, indChamp}[20250112]..CouleurFond = RougeClair {sCalend, indChamp}[20250125]..CouleurFond = RougeClair
sCalend = "Calendrier" + 3 {sCalend, indChamp}[20250320]..CouleurFond = RougeClair
Cdlt |
| |
| |
| | | |
|
| | |
| |
Publicado em fevereiro, 18 2025 - 11:50 AM |
Bonjour Cédric_34,
Merci beaucoup pour votre aide. Je n'avais pas pensé à utiliser .. pour accéder à BorneMin et BorneMax. J'avoue ne pas très bien comprendre dans quels cas il faut mettre . et dans quels cas il faut mettre .. Toujours est-il que j'ai maintenant quelque chose qui fonctionne comme je le souhaite. Pour ne pas laisser des calendriers fantômes dans l'écran, je les rend invisible si je n'ai aucune date à leur sélectionner. Ainsi j'obtiens ceci :

|
| |
| |
| | | |
|
| | |
| |
Membro registado 4.256 mensagems |
|
Publicado em fevereiro, 18 2025 - 6:37 PM |
Bonjour, Jennifer a écrit :
J'avoue ne pas très bien comprendre dans quels cas il faut mettre . et dans quels cas il faut mettre ..
L'accès aux propriété via . (un point) ou .. (2 points) sont équivalents depuis la version 25 (ou 24.) Auparavant, on ne pouvait accéder au propriétés que par .. (2 points.) Par acquis de conscience (et par habitude en ce qui me concerne) les "anciens" continuent souvent à utiliser la notation .. (2 points.)
-- Il y a peut être plus simple, mais, ça tourne Quand tout a échoué, utilise l'option RTFM |
| |
| |
| | | |
|
| | | | |
| | |
|