Je veux aussi utiliser un listicongadget pour indiquer les évènements à venir (allumage de lampe à 7h, volet roulant XX à 7h15,...) et comme je veux pouvoir changer cette programmation, un double-clic sur cette liste doit faire quelque chose : idéalement, éditer le champ sélectionné (mais la programmation employée sur les différents post me rebute un peu par la complexité et surtout le risque de non-compatibilité Win/linux) ou bien ouvrir une boite de dialogue.
Là, ça devient un peu moche car soit je rajoute mes constantes dans mon encart ENUM (ça commence à faire des constantes nombreuses), soit je peux utiliser des valeurs locales à ma procédure d'édition...
Enfin, durant mon édition, je souhaite que ce ne soit pas bloquant pour l'ensemble du programme (qui effectue des relevés de température par exemple, ou stocke les messages en provenance du BUS) : comment dois-je gérer cela ?
Actuellement, j'utilise des eventtimer
Code : Tout sélectionner
If EventID=#PB_Event_Timer
Select EventTimer()
Case 100
WriteTempFile()
GraphTemp()
Case 101
VelbusBPCalc()
Case 102
ClearOldMsg(4)
EndSelect
EndIf

Pour le moment, j'ai une procédure qui est lancée en cas de double-clic pour afficher la fenêtre d'édition (très basique) :
Code : Tout sélectionner
Procedure EditEvent(ligne)
OpenWindow(#EE_Window,50,50,200,120,"Editer événement",#PB_Window_ScreenCentered|#PB_Window_Normal)
StringGadget(#EE_StrHM, 100, 10, 80, 18, GetGadgetItemText(#Editor_Reveil,ligne,2))
StringGadget(#EE_StrDay, 100, 30, 80, 18, GetGadgetItemText(#Editor_Reveil,ligne,1))
StringGadget(#EE_StrAdr, 100, 50, 80, 18, GetGadgetItemText(#Editor_Reveil,ligne,4))
StringGadget(#EE_StrMod, 100, 70, 80, 18, GetGadgetItemText(#Editor_Reveil,ligne,5))
ButtonGadget(#EE_ButtonOK,70,90,80,18,"OK")
EndProcedure
Puis dans ma boucle principale, je surveille le bouton
Code : Tout sélectionner
Case #EE_ButtonOK
ligne = GetGadgetState(#Editor_Reveil)
SetGadgetItemText(#Editor_Reveil,ligne,GetGadgetText(#EE_StrHM),2)
SetGadgetItemText(#Editor_Reveil,ligne,GetGadgetText(#EE_StrDay),1)
SetGadgetItemText(#Editor_Reveil,ligne,GetGadgetText(#EE_StrAdr),4)
SetGadgetItemText(#Editor_Reveil,ligne,GetGadgetText(#EE_StrMod),5)
CloseWindow(#EE_Window)
EndSelect

Merci