[resolu] Récupération du Nième jour de l'année.

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

[resolu] Récupération du Nième jour de l'année.

Message par Ar-S »

Me revoilà avec un nouveau petit projet pour m'entrainer à gérer les date.

Mais kékiveut lui ??
Et bien c'est simple.
Je voudrais faire en sorte que mon programme qui utilise un calendrier affiche le Nieme jour de l'année dans l'editor qui se trouve au dessous.

Ex : si je clique sur 15 fevrier 2007, j'aimerai voir apparaitre dans l'editor
Le 15 fevrier 2007 sera le 47eme jour de l'année.

Voilà à quoi ressemble l'interface :

Code : Tout sélectionner

; Nieme jour de l'année par Ar-S PB 4
;{- Enumerations / DataSections
;{ Windows
Enumeration
  #Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
  #Calendar_0
  #Text_1
  #Editor_2
EndEnumeration
;}
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
;}
Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 524, 210, 191, 400, "Ar-S Nieme jour", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    If CreateGadgetList(WindowID(#Window_0))
      CalendarGadget(#Calendar_0, 0, 0, 190, 180)
      TextGadget(#Text_1, 0, 180, 190, 50, "Choisissez une date et voyez à quel nombre de jour de l'année elle correspond")
      EditorGadget(#Editor_2, 10, 255, 155, 115, #PB_Editor_ReadOnly)
    EndIf
  EndIf
EndProcedure

OpenWindow_Window_0()

;{- Event loop
Repeat
  Event = WaitWindowEvent()
  Select Event
    ; ///////////////////
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      If EventGadget = #Calendar_0
      ElseIf EventGadget = #Text_1
      ElseIf EventGadget = #Editor_2
      EndIf
    ; //////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect
ForEver
;
;}
Comment récupérer la date selectionnée sur le calendargadget ?
Comment ensuite la convertir (ajout des mois puis du nombre de jours) et l'afficher dans l'editeurgadget ?

J'ai reussi à faire un prog similaire en PHP mais sans calendar, juste en déclarant nbr_jour_janvier=31, nbr_jour_fevrier=28 etc... et apres une ribambelle de IF pour traiter tout ça. ça marchait mais c'est pas propre.
J'aimerai donc pouvoir gérer ça en PB avec le calendar. 8O
Dernière modification par Ar-S le dim. 20/mai/2007 11:45, modifié 1 fois.
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Message par minirop »

GetGadgetState(#Calendar)
renvoie le nombre de seconde depuis 1970 je crois.

donc suffit de faire ceci MOINS Date(1 janvier 2007)
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

DayOfYear ?

Dri
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Comme le dit si bien Dr. Dri :

J'ai juste ajouté la procédure AfficheJour()

Code : Tout sélectionner

; Nieme jour de l'année par Ar-S PB 4
;{- Enumerations / DataSections
;{ Windows
Enumeration
  #Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
  #Calendar_0
  #Text_1
  #Editor_2
EndEnumeration
;}
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
;}
Procedure AfficheJour()
  date =  GetGadgetstate(#Calendar_0)
  If formatdate("%DD",date)="01"
    SJ.s = "er"
  Else
    SJ.s = "ème"
  EndIf
  SetGadgetText(#Editor_2, "Le :"+formatdate("%DD/%MM/%YYYY ",date)+chr(13)+"est le "+str(dayofyear(date))+SJ+ " jour de l'année")
EndProcedure

Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 524, 210, 191, 400, "Ar-S Nieme jour", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    If CreateGadgetList(WindowID(#Window_0))
      CalendarGadget(#Calendar_0, 0, 0, 190, 180)
      TextGadget(#Text_1, 0, 180, 190, 50, "Choisissez une date et voyez à quel nombre de jour de l'année elle correspond")
      EditorGadget(#Editor_2, 10, 255, 155, 115, #PB_Editor_ReadOnly)
      AfficheJour()
    EndIf
  EndIf
EndProcedure

OpenWindow_Window_0()

;{- Event loop
Repeat
  Event = WaitWindowEvent()
  Select Event
    ; ///////////////////
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      If EventGadget = #Calendar_0
        AfficheJour()
      ElseIf EventGadget = #Text_1
      ElseIf EventGadget = #Editor_2
      EndIf
      ; //////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect
ForEver
;
;
Dernière modification par brossden le dim. 20/mai/2007 18:44, modifié 1 fois.
Denis

Bonne Jounée à tous
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Rhooo mais c'est énorme :)

Y'a même la gestion des er/ème

Code : Tout sélectionner

SJ.s = "er"
  Else
SJ.s = "ème"
Merci beaucoup !
:D :D :D :D
Répondre