[R] Fonction _GUICtrlMonthCal_GetCurSelStr

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
achile
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mer. 09 avr. 2014 12:01
Status : Hors ligne

[R] Fonction _GUICtrlMonthCal_GetCurSelStr

#1

Message par achile »

Bonjour Tous,

dans une GUI, je fais afficher un calendrier grâce à _GUICtrlMonthCal_Create
je souhaite récupérer la date choisi par l'utilisateur, j'ai trouvé la fonction _GUICtrlMonthCal_GetCurSelStr
par contre la date renvoyé est au format MM/JJ/YYYY :evil:
J'aurais aimé avoir la date au format YYYY/MM/JJ pour pouvoir trier les dates choisis dans une matrice .

dans l'aide de cette fonction il est dit:
_GUICtrlMonthCal_GetCurSelStr ( $hWnd [, $sFormat = "%02d/%02d/%04d"] )
aussi je me dit qu'en "bidouillant" la partie Format on doit pouvoir modifier mais je ne comprends pas les paramètres $sFormat = "%02d/%02d/%04d.

Savez vous quoi mettre pour changer l'order des Mois/Jours/Année ou est ce qu'il y a une autre fonction que je ne connais pas ?

merci de votre aide,

mon code est :

Code : Tout sélectionner

$hCalendrierRappel = _GUICtrlMonthCal_Create($hGUI, @DesktopWidth/2, @DesktopHeight/10)
$BoutonDateDeRappelOk = GUICtrlCreateRadio("Date de Rappel " ,@DesktopWidth/2, @DesktopHeight/14, Default, Default)
While 1
   $idMsg = GUIGetMsg()
        Select
            Case $idMsg = $BoutonDateDeRappelOk And BitAND(GUICtrlRead($BoutonDateDeRappelOk), $GUI_CHECKED) = $GUI_CHECKED
            MsgBox(48,"cal","date choisi" & _GUICtrlMonthCal_GetCurSelStr($hCalendrierRappel,"%02d/%02d/%04d"))
            GUICtrlDelete($BoutonDateDeRappelOk)
            _GUICtrlMonthCal_Destroy($hCalendrierRappel)
            ExitLoop
         EndSelect
WEnd
Modifié en dernier par achile le mer. 04 mars 2015 12:06, modifié 1 fois.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..]fonction _GUICtrlMonthCal_GetCurSelStr

#2

Message par orax »

Clique sur la fonction _GUICtrlMonthCal_GetCurSelStr dans le code et appuie sur CTRL+J pour voir son code dans l'UDF. On voit que le "format" sert juste à formater la chaîne à la manière de StringFormat(). Changer le format n'inversera rien.
Une solution est de créer une nouvelle fonction (__GUICtrlMonthCal_GetCurSelStr par exemple). (Il ne faut pas modifier directement la fonction dans l'UDF, c'est pourquoi j'en ai créée un nouvelle avec un _ en plus.)

Code : Tout sélectionner

Func __GUICtrlMonthCal_GetCurSelStr($hWnd, $sFormat = "%04d/%02d/%02d")
    Local $tBuffer = _GUICtrlMonthCal_GetCurSel($hWnd)
    Return StringFormat($sFormat, DllStructGetData($tBuffer, "Year"), DllStructGetData($tBuffer, "Month"), DllStructGetData($tBuffer, "Day"))
EndFunc   ;==>_GUICtrlMonthCal_GetCurSelStr
Ou sinon une fonction de conversion...

Code : Tout sélectionner

Func _convertirdate($date)
    Return StringRegExpReplace($date,"(\d+)/(\d+)/(\d+)","\3/\1/\2")
EndFunc
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
achile
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mer. 09 avr. 2014 12:01
Status : Hors ligne

Re: [..] Fonction _GUICtrlMonthCal_GetCurSelStr

#3

Message par achile »

Bonjour et merci orax,

je n'arrive pas à faire le CTRL+J ..
mais je vais fabriquer une fonction de conversion même si il va me falloir plusieurs jours pour comprendre ton StringRegExpReplace qui semble très astucieux (moi il me faut 3 lignes à base de stringleft et autre pour arriver à faire ça :roll: )

merci encore,
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [R] Fonction _GUICtrlMonthCal_GetCurSelStr

#4

Message par orax »

achile a écrit :je n'arrive pas à faire le CTRL+J ..
C'est peut-être parce que c'est une version allégée (version Lite ou autre) de SciTE4AutoIt. La version complète n'est pas incluse avec l'installateur AutoIt. Il faut donc la télécharger > https://www.autoitscript.com/site/autoi ... downloads/ (SciTE4AutoIt3.exe)

Pour StringRegExpReplace, tu peux t'aider de ce site pour mieux comprendre https://regex101.com/r/sL9zG6
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
achile
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mer. 09 avr. 2014 12:01
Status : Hors ligne

Re: [R] Fonction _GUICtrlMonthCal_GetCurSelStr

#5

Message par achile »

ok je vais essayer de mettre à jour ma version
merci encore :D
Répondre