
Je souhaiterai sécuriser la fermeture d'un programme, afin qu'en cliquant sur la croix, un requester avertisse l'utilisateur qu'il peut encore revenir à son travail s'il a malencontreusement décidé de fermer son prog sans l'enregistrer.
J'ai donc fait une petite procédure permettant la chose.
Problème : La fenêtre du programme se ferme quand même après environ 1,5 seconde d'attente. Pas vraiment top.
Voilà le code, si vous voyez où ça coince merci de me le signaler.
Code d'exemple d'un programme qui ne fait rien.
Code : Tout sélectionner
Enumeration
#window = 0
#btn1
#btn2
#Texte
EndEnumeration
Procedure fermeture()
Fermeture = MessageRequester("ENREGISTREMENT AVANT FERMETURE","ASSUREZ-VOUS D'AVOIR ENREGISTRE LES MODIFICATIONS APPORTEES A VOTRE TRAVAIL !"+Chr(13)+""+Chr(13)+"Si vous avez modifié un fichier, enregistrez le avant de le refermer,"+Chr(13)+"sinon les modifications ne seront pas prises en compte."+Chr(13)+""+Chr(13)+"Si vous n'avez rien à enregistrer, cliquez sur OUI"+Chr(13)+""+Chr(13)+"Si vous devez enregistrer des modifications, cliquez sur NON",#MB_ICONEXCLAMATION | #PB_MessageRequester_YesNo)
If Fermeture = 6
a$ + "Yes" :Quit = #True
ElseIf Fermeture = 7
a$ + "No" :Quit = #False
If Quit=#False
EventID = WaitWindowEvent()
EndIf
EndIf
EndProcedure
If OpenWindow(0,100,100,250,150,#PB_Window_SystemMenu| #PB_Window_MinimizeGadget|#PB_Window_TitleBar,"REQUETE DE FERMETURE")
If CreateGadgetList(WindowID(0))
TextGadget(#Texte,20,20,200,40,"J'aimerais bien fermer cette fenêtre qu'après décision sur Requester !",#PB_Text_Center|#PB_Button_MultiLine)
ButtonGadget(#btn1,30,100,60,20,"Bouton 1")
ButtonGadget(#btn2,110,100,60,20,"Bouton 1")
EndIf
EndIf
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_EventGadget
Select EventGadgetID()
Case #btn1; Rien, juste pour exemple
Case #btn2
EndSelect
Case #PB_Event_CloseWindow :fermeture()
EndSelect
Until EventID = #PB_Event_CloseWindow
End