j'aimerais faire un programme qui calcule l'heure de fuseaux horaires sélectionné qui afficherait automatiquement dans le combo, le fuseau affiché par Windows 10.
C'est pour cette raison que je viens encore solliciter votre aide bienveillante et je vous en remercie par avance.
Code : Tout sélectionner
;Calculatrice Micoute (Fuseaux horaires)
Enumeration
#Fenetre_Fuseaux
EndEnumeration
Enumeration
#Ctn_Fuseaux
#Txt_Comparer
#Txt_Fuseau_base
#Txt_Heure_base
#Str_Heure_base
#Cmb_FH_base
#Spn_H_FH
#Spn_Mn_FH
#Spn_S_FH
#Cmb_Fuseau_1
#Cmb_Fuseau_2
#Cmb_Fuseau_3
#Cmb_Fuseau_4
#Str_Fuseau_1
#Str_Fuseau_2
#Str_Fuseau_3
#Str_Fuseau_4
#Timer_FH
EndEnumeration
Enumeration Police
#Police_1
#Police_2
EndEnumeration
Structure sFuseau
Decalage.s
Lieux.s
EndStructure
Structure sDecal
Heure.i
Minute.i
EndStructure
LoadFont(#Police_1, "Arial", 8, #PB_Font_HighQuality)
LoadFont(#Police_2, "Arial", 12, #PB_Font_Bold)
Declare Lire_Donnees()
Declare Ouvrir_Fenetre_Fuseaux()
Global Evenement, Dim Fuseaux.sFuseau(119), Dim HeureFuseau.i(119), Dim MinuteFuseau.i(119), I, ID
Global Dim JS.s(6), Dim NomMois.s(11)
JS(0) = "Dimanche" : JS(1) = "Lundi" : JS(2) = "Mardi" : JS(3) = "Mercredi" : JS(4) = "Jeudi" : JS(5) = "Vendredi" : JS(6) = "Samedi"
NomMois(0) = "janvier" : NomMois(1) = "février" : NomMois(2) = "mars" : NomMois(3) = "avril" : NomMois(4) = "mai" : NomMois(5) = "juin"
NomMois(6) = "juillet" : NomMois(7) = "août" : NomMois(8) = "septembre" : NomMois(9) = "octobre" : NomMois(10) = "novembre" : NomMois(11) = "décembre"
Procedure Lire_Donnees()
Protected.s Dec, Lieu
Restore Debut
For i = 0 To ArraySize(Fuseaux())
Read.s dec
Fuseaux(i)\Decalage = "UTC"+Dec
Read.s Fuseaux(i)\Lieux
Next i
EndProcedure
Procedure Ouvrir_Fenetre_Fuseaux()
If OpenWindow(#Fenetre_Fuseaux, 450, 200, 570, 250, "Fuseaux horaires", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
SetGadgetFont(#PB_Default, FontID(#Police_1))
ContainerGadget(#Ctn_Fuseaux, 0, 0, 570, 250, #PB_Container_Raised)
TextGadget(#Txt_Fuseau_base, 10, 0, 120, 30, "Fuseau horaire de base", #PB_Text_Right|#SS_CENTERIMAGE)
ComboBoxGadget(#Cmb_FH_base, 140, 0, 420, 30)
For i = 0 To ArraySize(Fuseaux())
AddGadgetItem(#Cmb_FH_base, i, Fuseaux(i)\Decalage + " " + Fuseaux(i)\Lieux)
Next i
TextGadget(#Txt_Heure_base, 10, 40, 120, 30, "Heure de base", #PB_Text_Right|#SS_CENTERIMAGE)
StringGadget(#Str_Heure_base, 140, 40, 220, 30, "")
SpinGadget(#Spn_H_FH, 380, 40, 60, 30, 0, 100, #PB_Spin_Numeric)
SpinGadget(#Spn_Mn_FH, 440, 40, 60, 30, 0, 100, #PB_Spin_Numeric)
SpinGadget(#Spn_S_FH, 500, 40, 60, 30, 0, 100, #PB_Spin_Numeric)
TextGadget(#Txt_Comparer, 10, 70, 120, 30, "Comparer avec", #SS_CENTERIMAGE)
ComboBoxGadget(#Cmb_Fuseau_1, 10, 100, 460, 30)
StringGadget(#Str_Fuseau_1, 480, 100, 80, 30, "", #PB_String_ReadOnly)
For i = 0 To ArraySize(Fuseaux())
AddGadgetItem(#Cmb_Fuseau_1, i, Fuseaux(i)\Decalage + " " + Fuseaux(i)\Lieux)
Next i
ComboBoxGadget(#Cmb_Fuseau_2, 10, 135, 460, 30)
StringGadget(#Str_Fuseau_2, 480, 135, 80, 30, "", #PB_String_ReadOnly)
For i = 0 To ArraySize(Fuseaux())
AddGadgetItem(#Cmb_Fuseau_2, i, Fuseaux(i)\Decalage + " " + Fuseaux(i)\Lieux)
Next i
ComboBoxGadget(#Cmb_Fuseau_3, 10, 170, 460, 30)
StringGadget(#Str_Fuseau_3, 480, 170, 80, 30, "", #PB_String_ReadOnly)
For i = 0 To ArraySize(Fuseaux())
AddGadgetItem(#Cmb_Fuseau_3, i, Fuseaux(i)\Decalage + " " + Fuseaux(i)\Lieux)
Next i
ComboBoxGadget(#Cmb_Fuseau_4, 10, 205, 460, 30)
StringGadget(#Str_Fuseau_4, 480, 205, 80, 30, "", #PB_String_ReadOnly)
For i = 0 To ArraySize(Fuseaux())
AddGadgetItem(#Cmb_Fuseau_4, i, Fuseaux(i)\Decalage + " " + Fuseaux(i)\Lieux)
Next i
CloseGadgetList()
For i = #Str_Heure_base To #Str_Fuseau_4
SetGadgetFont(i, FontID(#Police_2))
Next i
AddWindowTimer(#Fenetre_Fuseaux, #Timer_FH, 1000)
EndIf
EndProcedure
Lire_Donnees()
Ouvrir_Fenetre_Fuseaux()
Procedure Calcul(Id)
HeureFuseau(ID) = (Val(Mid(GetGadgetText(Id), 4, 4))%24)+Hour(Date()) - 1
MinuteFuseau(ID) = (Val(Mid(GetGadgetText(Id), 8, 4))%60)+Minute(Date())
If MinuteFuseau(ID) > 60
While MinuteFuseau(ID) >= 60
MinuteFuseau(ID) - 60
HeureFuseau(ID) + 1
Wend
EndIf
EndProcedure
Procedure Calcul_Fuseau(n)
Global heureFuseau = (Val(Mid(Fuseaux(n)\Decalage, 4, 4))%24)+Hour(Date()) - 1
Global minuteFuseau = (Val(Mid(Fuseaux(n)\Decalage, 8, 4))%60)+Minute(Date())
If minuteFuseau > 60
minuteFuseau - 60
heureFuseau + 1
EndIf
EndProcedure
;- Boucle
Repeat
Evenement = WaitWindowEvent()
Select Evenement
Case #PB_Event_Timer
Select EventTimer()
Case #Timer_FH
Calcul(#Cmb_FH_base)
If GetGadgetText(#Cmb_FH_base)
SetGadgetText(#Str_Heure_base, JS(DayOfWeek(Date()))+" "+Str(Day(Date()))+" "+NomMois(Month(Date()))+" "+Str(Year(Date())))
SetGadgetText(#Spn_H_FH, RSet(Str(HeureFuseau(#Cmb_FH_base)), 2, "0"))
SetGadgetText(#Spn_Mn_FH, RSet(Str(MinuteFuseau(#Cmb_FH_base)), 2, "0"))
SetGadgetText(#Spn_S_FH, RSet(Str(Second(Date())),2,"0"))
EndIf
If GetGadgetText(#Cmb_Fuseau_1)
Calcul(#Cmb_Fuseau_1)
SetGadgetText(#Str_Fuseau_1, RSet(Str(HeureFuseau(#Cmb_Fuseau_1)%24), 2, "0")+":"+RSet(Str(MinuteFuseau(#Cmb_Fuseau_1)%60), 2, "0") + ":" + RSet(Str(Second(Date())), 2, "0"))
EndIf
If GetGadgetText(#Cmb_Fuseau_2)
Calcul(#Cmb_Fuseau_2)
SetGadgetText(#Str_Fuseau_2, RSet(Str(HeureFuseau(#Cmb_Fuseau_2)%24), 2, "0")+":"+RSet(Str(MinuteFuseau(#Cmb_Fuseau_2)%60), 2, "0") + ":" + RSet(Str(Second(Date())), 2, "0"))
EndIf
If GetGadgetText(#Cmb_Fuseau_3)
Calcul(#Cmb_Fuseau_3)
SetGadgetText(#Str_Fuseau_3, RSet(Str(HeureFuseau(#Cmb_Fuseau_3)%24), 2, "0")+":"+RSet(Str(MinuteFuseau(#Cmb_Fuseau_3)%60), 2, "0") + ":" + RSet(Str(Second(Date())), 2, "0"))
EndIf
If GetGadgetText(#Cmb_Fuseau_4)
Calcul(#Cmb_Fuseau_4)
SetGadgetText(#Str_Fuseau_4, RSet(Str(HeureFuseau(#Cmb_Fuseau_4)%24), 2, "0")+":"+RSet(Str(MinuteFuseau(#Cmb_Fuseau_4)%60), 2, "0") + ":" + RSet(Str(Second(Date())), 2, "0"))
EndIf
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case #Cmb_FH_base
SetGadgetState(#Spn_H_FH, Val(Mid(GetGadgetText(#Cmb_FH_base), 4, 4))+Hour(Date()) - 1)
SetGadgetState(#Spn_Mn_FH, Val(Mid(GetGadgetText(#Cmb_FH_base), 8, 4))+Minute(Date()))
SetGadgetState(#Spn_S_FH, Second(Date()))
Case #Cmb_Fuseau_1
Calcul(#Cmb_Fuseau_1)
SetGadgetText(#Str_Fuseau_1, RSet(Str(HeureFuseau(#Cmb_Fuseau_1)%24), 2, "0")+":"+RSet(Str(MinuteFuseau(#Cmb_Fuseau_1)%60), 2, "0") + ":" + RSet(Str(Second(Date())), 2, "0"))
Case #Cmb_Fuseau_2
Calcul(#Cmb_Fuseau_2)
SetGadgetText(#Str_Fuseau_2, RSet(Str(HeureFuseau(#Cmb_Fuseau_2)%24), 2, "0")+":"+RSet(Str(MinuteFuseau(#Cmb_Fuseau_2)%60), 2, "0") + ":" + RSet(Str(Second(Date())), 2, "0"))
Case #Cmb_Fuseau_3
Calcul(#Cmb_Fuseau_3)
SetGadgetText(#Str_Fuseau_3, RSet(Str(HeureFuseau(#Cmb_Fuseau_3)%24), 2, "0")+":"+RSet(Str(MinuteFuseau(#Cmb_Fuseau_3)%60), 2, "0") + ":" + RSet(Str(Second(Date())), 2, "0"))
Case #Cmb_Fuseau_4
Calcul(#Cmb_Fuseau_4)
SetGadgetText(#Str_Fuseau_4, RSet(Str(HeureFuseau(#Cmb_Fuseau_4)%24), 2, "0")+":"+RSet(Str(MinuteFuseau(#Cmb_Fuseau_4)%60), 2, "0") + ":" + RSet(Str(Second(Date())), 2, "0"))
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Fenetre_Fuseaux
CloseWindow(#Fenetre_Fuseaux)
Break
EndSelect
EndSelect
ForEver
;- données
DataSection
Debut:
Data.s " 00:00", "Casablanca"
Data.s " 00:00", "Dublin, Edimbourg, Lisbonne, Londres"
Data.s " 00:00", "Monrovia, Reyjavik"
Data.s "+01:00", "Affrique centrale - ouest"
Data.s "+01:00", "Belgrade, Bratislava, Budapest, Ljubjana, Prague"
Data.s "+01:00", "Bruxelles, Copenhague"
Data.s "+01:00", "Madrid, Paris"
Data.s "+01:00", "Sarajeva, Skpje, Varsovie, Zagreb"
Data.s "+01:00", "Windhoek"
Data.s "+02:00", "Amman"
Data.s "+02:00", "Athènes, Bucarest"
Data.s "+02:00", "Beyrouth"
Data.s "+02:00", "Chisinau"
Data.s "+02:00", "Damas"
Data.s "+02:00", "Gaza, Hébron"
Data.s "+02:00", "Hrare, Pretoria"
Data.s "+02:00", "Helsinki, Kiev, Riga, Sofia, Tallin, Vilnius"
Data.s "+02:00", "Jérusalem"
Data.s "+02:00", "Kaliningrad"
Data.s "+02:00", "Le Caire"
Data.s "+02:00", "Tripoli"
Data.s "+03:00", "Bagdad"
Data.s "+03:00", "Istanbul"
Data.s "+03:00", "Koweit, Riyad"
Data.s "+03:00", "Misnk"
Data.s "+03:00", "Moscou, Saint-Petersbourg, Volgograd"
Data.s "+03:00", "Nairobi"
Data.s "+03:30", "Téhéran"
Data.s "+04:00", "Abu Dhabi, Muscat"
Data.s "+04:00", "Astrajhan, Oulianovsk"
Data.s "+04:00", "Bakou"
Data.s "+04:00", "Erevan"
Data.s "+04:00", "Izhevsk, Samara"
Data.s "+04:00", "Port Louis"
Data.s "+04:00", "Saratov"
Data.s "+04:00", "Tbilissi"
Data.s "+04:30", "Kaboul"
Data.s "+05:00", "Achgabat, Tachkent"
Data.s "+05:00", "Iekaterinbourg"
Data.s "+05:00", "Islamabad, Karachi"
Data.s "+05:30", "Chennai, Kolkata, Mumbai, New Delhi"
Data.s "+05:30", "Sri Jayawardenepura"
Data.s "+05:45", "Katmandou"
Data.s "+06:00", "Astana"
Data.s "+06:00", "Dhaka"
Data.s "+06:00", "Omsk"
Data.s "+06:30", "Rangoon"
Data.s "+07:00", "Bangkok, Hanoi, Djakarta"
Data.s "+07:00", "Barnaoul, Gorno-Altaïsk"
Data.s "+07:00", "Hovd"
Data.s "+07:00", "Krasnoïarsk"
Data.s "+07:00", "Novosibirsk"
Data.s "+07:00", "Tomsk"
Data.s "+08:00", "Pékin, Chongqing, Hong Kong, Urumqi"
Data.s "+08:00", "Irkoutsk"
Data.s "+08:00", "Kuala Lumpur, Singapour"
Data.s "+08:00", "Oulan-Bator"
Data.s "+08:00", "Perth"
Data.s "+08:00", "Taipei"
Data.s "+08:30", "Pyongyang"
Data.s "+08:45", "Eucla"
Data.s "+09:00", "Chita"
Data.s "+09:00", "Iakoutsk"
Data.s "+09:00", "Osaka, Sapporo, Tokyo"
Data.s "+09:00", "Séoul"
Data.s "+09:30", "Adélaïde"
Data.s "+09:30", "Darwin"
Data.s "+10:00", "Brisbane"
Data.s "+10:00", "Canberra, Melbourne, Sydney"
Data.s "+10:00", "Guam, Port Moresby"
Data.s "+10:00", "Hobort"
Data.s "+10:00", "Vladivostok"
Data.s "+10:30", "Île Lord Howe"
Data.s "+11:00", "Chokurdakh"
Data.s "+11:00", "Madagan"
Data.s "+11:00", "Sakhaline"
Data.s "+11:00", "Île Bougainville"
Data.s "+11:00", "Île Norfolk"
Data.s "+11:00", "Îles Salomon, Nouvelle-Calédonie"
Data.s "+12:00", "Anadyr, Petropavlovsk-Kamtchatski"
Data.s "+12:00", "Auckland, Wellington"
Data.s "+12:00", "Fidji"
Data.s "+12:45", "Îles Chatham"
Data.s "+13:00", "Nuku'alofa"
Data.s "+13:00", "Samoa"
Data.s "+14:00", "Île Kiritimati"
Data.s "-01:00", "Îles du Cap-Vert"
Data.s "-01:00", "Les Açores"
Data.s "-03:00", "Araguaina"
Data.s "-03:00", "Brasilia"
Data.s "-03:00", "Buenos Aires"
Data.s "-03:00", "Cayenne, Fortaleza"
Data.s "-03:00", "Groenland"
Data.s "-03:00", "Montevideo"
Data.s "-03:00", "Punta Arenas"
Data.s "-03:00", "Saint-Pierre-et-Miquelon"
Data.s "-03:00", "Salvador"
Data.s "-03:00", "Terre-Neuve-et-Labrador"
Data.s "-04:00", "Asuncion"
Data.s "-04:00", "Caracas"
Data.s "-04:00", "Cuiaba"
Data.s "-04:00", "Georgetown, La Paz, Manaus, San Juan"
Data.s "-04:00", "Santiago"
Data.s "-04:00", "Îles Turques-et-Caïques"
Data.s "-05:00", "Bogota, Lima, Quito, Rio Branco"
Data.s "-05:00", "La Havane"
Data.s "-05:00", "Haïti"
Data.s "-06:00", "Île de Pâques"
Data.s "-06:00", "Guadalajara, Mexico, Monterrey"
Data.s "-06:00", "Saskatchewan"
Data.s "-06:00", "Amérique centrale"
Data.s "-07:00", "Arizona"
Data.s "-07:00", "Chihuahua, Mazatlan"
Data.s "-07:00", "Montagnes Rocheuses"
Data.s "-08:00", "Basse Californie"
Data.s "-08:00", "Pacifique, E.U., Canada"
Data.s "-09:00", "Alaska"
Data.s "-09:30", "Îlse Marquises"
Data.s "-10:00", "Îles Aléoutiennes"
Data.s "-10:00", "Hawaii"
Data$ "Fin", ""
Fin:
EndDataSection