Accueil > > > HOLIDAYS SCHOOL
HOLIDAYS SCHOOL
Information sur la source
Description
Beaucoup de personnes, m'ont demandés par email, si il était possible de concevoir sur un calendrier les vacances scolaires sans controls supplémentaires. C'est fait, et c'est un cadeau de fin d'année pour tous ceux qui souhaitent apportrer à leurs projets, un petit plus. Attention, il n'est pas opptimisé mais fonctionnelle à 100%. J'ai repris le code de maskedit de Yoman que je remercie au passage. Il n'y a rien de compliqué au contraire.
Source
- 'La premiere phrase du mois debute à 27 pxls de pic()
- 'Une lettre mesure ici 7 pxls, normal Fontsize=7
- 'donc pour la 1ere ligne on a : Point Haut de lettre= 27; bas de lettre=27+7=34 pxls
- 'ecart entre chaque ligne suivant le type de police: ici= 5pxls
- 'donc chaque hauteur de ligne est décalée de 12 pxls
- ' chaque bas de ligne est décalée de 12 pxls
- 'a partir de cela on traite cette info
-
- 'pour avoir chaque hauteur ou le Y sur chaque hauteur de ligne,
- 'on recupere la date en format 10/01/2004
- '10 => servira à Y
- '01 => l'index pour chaque Pic (pictureBox pour chaque mois)
- '2004 => l'année pour save fichier
-
- '//recupere et convertir le n° du jour en position Y Haut de lettre ici ex:= le 10è jour de Janvier 2004
- 'On retranche -1 à ce jour car on travail en base 0
- 'donc 10-1=9 puis, on le multiplie par 12 (car 12 est l'ecart entre chaque ligne) et enfin on rajoute la position
- 'initiale de 27 qui est le debut de la premiere ligne.
- 'donc 10-1=9 *12 +27
-
- 'c'est donc le role de PosDebDate
-
- 'Ca va pas trop compliqué pour l'instant?
-
- 'pour le bas de lettre idem mais il faut rajouter en plus la hauteur de lettre donc 7 pxls
- 'donc 10-1=9 *12 +27 et enfin +7
- 'c'est donc le role de PosEndDate
-
- 'si vous changer de police modifier la hauteur de lettre ici=7
- ' et l'écart entre chaque ligne ici=12
-
- Private Function PosDebDate(DebDate As Integer) As Integer
- On Error Resume Next
- Dim s%
- If DebDate = 0 Then
- s% = DebDate * 12 + (27 - 12)
- PosDebDate = s%
- Else
- DebDate = DebDate - 1
- s% = DebDate * 12 + 27
- PosDebDate = s%
- End If
- If Err Then Exit Function
- End Function
-
- '//recupere et convertir le n° du jour en position Y bas de lettre
- Private Function PosEndDate(EndDate As Integer) As Integer
- On Error Resume Next
- Dim s%
- If EndDate = 0 Then
- s% = EndDate * 12 + (34 - 12)
- PosEndDate = s%
- Else
- EndDate = EndDate - 1
- s% = EndDate * 12 + 34
- PosEndDate = s%
- End If
- If Err Then Exit Function
- End Function
-
- '//Dessine les lines des zones sur les picturebox
- Private Sub DrawHolidays(DebZoneA$, EndZoneA$, colors&, Zones&)
- On Error Resume Next
- Dim DebA$, EndA$
- Dim DebMois$, EndMois$
- Dim DebPosA%, EndPosA%
- Dim moisA%, moisB%
- Dim WidthLine&
-
- '//on recupere les 2 premiers chiffres de la date pour la position haute de Y
- DebA$ = Mid$(DebZoneA$, 1, 2) '//=> 10 day
- '//on recupere les 2 premiers chiffres de la date pour la position basse de Y
- EndA$ = Mid$(EndZoneA$, 1, 2) ' //=> 26 day
-
- '//on recupere les 2 chiffres du milieu de la date pour les index
- DebMois$ = Mid$(DebZoneA$, 4, 2) '//=> 01 mois
- EndMois$ = Mid$(EndZoneA$, 4, 2) '//=> 03 mois
- moisA% = CInt(DebMois$) '//les convertis en integer
- moisB% = CInt(EndMois$) '//les convertis en integer
-
- DebPosA% = PosDebDate(CInt(DebA$)) '//convertis le N° du jour en Position haute Y
- EndPosA% = PosEndDate(CInt(EndA$)) '//convertis le N° du jour en Position basse Y
-
- '//suivant la zone a,b ou c, on place chaque bande a un endroit
- Select Case Zones
- Case 1: WidthLine& = 113 '//-->118
- Case 2: WidthLine& = 120 '//-->125
- Case 3: WidthLine& = 127 '//-->132
- End Select
-
- If DebMois$ = EndMois$ Then '//vacance sur le meme mois
- '//donc sur 1 mois entier
- FCals.Pic(moisA%).Line (WidthLine&, DebPosA%)-(WidthLine& + 5, EndPosA%), colors&, BF
- Else '//sur plusieurs mois
- If DebMois$ <> EndMois$ Then '//vacance sur le meme mois
- '// on demarre à la position voulue jusqu'au bas de la derniere ligne(ici 394 pxls)
- FCals.Pic(moisA%).Line (WidthLine&, DebPosA%)-(WidthLine& + 5, 394), colors&, BF
-
- '// et on reprend en haut de la premiere ligne(ici 27 pxls) jusqu'à la position basse voulue
- FCals.Pic(moisB%).Line (WidthLine&, 27)-(WidthLine& + 5, EndPosA%), colors&, BF
- End If
- End If
- End Sub
-
'La premiere phrase du mois debute à 27 pxls de pic()
'Une lettre mesure ici 7 pxls, normal Fontsize=7
'donc pour la 1ere ligne on a : Point Haut de lettre= 27; bas de lettre=27+7=34 pxls
'ecart entre chaque ligne suivant le type de police: ici= 5pxls
'donc chaque hauteur de ligne est décalée de 12 pxls
' chaque bas de ligne est décalée de 12 pxls
'a partir de cela on traite cette info
'pour avoir chaque hauteur ou le Y sur chaque hauteur de ligne,
'on recupere la date en format 10/01/2004
'10 => servira à Y
'01 => l'index pour chaque Pic (pictureBox pour chaque mois)
'2004 => l'année pour save fichier
'//recupere et convertir le n° du jour en position Y Haut de lettre ici ex:= le 10è jour de Janvier 2004
'On retranche -1 à ce jour car on travail en base 0
'donc 10-1=9 puis, on le multiplie par 12 (car 12 est l'ecart entre chaque ligne) et enfin on rajoute la position
'initiale de 27 qui est le debut de la premiere ligne.
'donc 10-1=9 *12 +27
'c'est donc le role de PosDebDate
'Ca va pas trop compliqué pour l'instant?
'pour le bas de lettre idem mais il faut rajouter en plus la hauteur de lettre donc 7 pxls
'donc 10-1=9 *12 +27 et enfin +7
'c'est donc le role de PosEndDate
'si vous changer de police modifier la hauteur de lettre ici=7
' et l'écart entre chaque ligne ici=12
Private Function PosDebDate(DebDate As Integer) As Integer
On Error Resume Next
Dim s%
If DebDate = 0 Then
s% = DebDate * 12 + (27 - 12)
PosDebDate = s%
Else
DebDate = DebDate - 1
s% = DebDate * 12 + 27
PosDebDate = s%
End If
If Err Then Exit Function
End Function
'//recupere et convertir le n° du jour en position Y bas de lettre
Private Function PosEndDate(EndDate As Integer) As Integer
On Error Resume Next
Dim s%
If EndDate = 0 Then
s% = EndDate * 12 + (34 - 12)
PosEndDate = s%
Else
EndDate = EndDate - 1
s% = EndDate * 12 + 34
PosEndDate = s%
End If
If Err Then Exit Function
End Function
'//Dessine les lines des zones sur les picturebox
Private Sub DrawHolidays(DebZoneA$, EndZoneA$, colors&, Zones&)
On Error Resume Next
Dim DebA$, EndA$
Dim DebMois$, EndMois$
Dim DebPosA%, EndPosA%
Dim moisA%, moisB%
Dim WidthLine&
'//on recupere les 2 premiers chiffres de la date pour la position haute de Y
DebA$ = Mid$(DebZoneA$, 1, 2) '//=> 10 day
'//on recupere les 2 premiers chiffres de la date pour la position basse de Y
EndA$ = Mid$(EndZoneA$, 1, 2) ' //=> 26 day
'//on recupere les 2 chiffres du milieu de la date pour les index
DebMois$ = Mid$(DebZoneA$, 4, 2) '//=> 01 mois
EndMois$ = Mid$(EndZoneA$, 4, 2) '//=> 03 mois
moisA% = CInt(DebMois$) '//les convertis en integer
moisB% = CInt(EndMois$) '//les convertis en integer
DebPosA% = PosDebDate(CInt(DebA$)) '//convertis le N° du jour en Position haute Y
EndPosA% = PosEndDate(CInt(EndA$)) '//convertis le N° du jour en Position basse Y
'//suivant la zone a,b ou c, on place chaque bande a un endroit
Select Case Zones
Case 1: WidthLine& = 113 '//-->118
Case 2: WidthLine& = 120 '//-->125
Case 3: WidthLine& = 127 '//-->132
End Select
If DebMois$ = EndMois$ Then '//vacance sur le meme mois
'//donc sur 1 mois entier
FCals.Pic(moisA%).Line (WidthLine&, DebPosA%)-(WidthLine& + 5, EndPosA%), colors&, BF
Else '//sur plusieurs mois
If DebMois$ <> EndMois$ Then '//vacance sur le meme mois
'// on demarre à la position voulue jusqu'au bas de la derniere ligne(ici 394 pxls)
FCals.Pic(moisA%).Line (WidthLine&, DebPosA%)-(WidthLine& + 5, 394), colors&, BF
'// et on reprend en haut de la premiere ligne(ici 27 pxls) jusqu'à la position basse voulue
FCals.Pic(moisB%).Line (WidthLine&, 27)-(WidthLine& + 5, EndPosA%), colors&, BF
End If
End If
End Sub
Conclusion
Seul bug connu si on veut, est la ligne du 25 Mars qui est un peut trop long Il suffit de changer les largeurs des contenaires suivant votre largeur de screen
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Forum
LIST GENERICS 2LIST GENERICS 2 par JLuc01
Cliquez pour lire la suite par JLuc01
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|