C'est vrai que parfois j'ai envie de le bourrer de coups de cuiller à pot, mais bon mon Windows me sert encore, alors...
Il est possible que j'ai mal mis, au mauvais endroit, un EndSelect mais je n'en sais rien.
Code : Tout sélectionner
;- constantes;
Enumeration
#WindowWidth = 700
#WindowHeight = 500
#Fenetre_principale = 0
#gadget_editeur = 1
#bouton_imprimer
#bouton_creer
#bouton_copier
#bouton_coller
#bouton_couper
#bouton_annuler
#bouton_refaire
#bouton_aide
#bouton_quitter
#bouton_effacer
#bouton_nouveau
#nombre_MC
#sauvegarde
EndEnumeration
Procedure Compter_MC(Dossier.s)
If ExamineDirectory(n, Dossier, "*.txt") : nb=0
Repeat
Filetype = NextDirectoryEntry()
If FileType = 1 : Nb + 1
EndIf
Until FileType = 0
EndIf
ProcedureReturn Nb
EndProcedure
Procedure sauvegarde_MC()
RepertoireSource$ = "C:\WINDOWS\Bureau\Src\Main-Courante\"
RepertoireDestination$ = "A:\Sauvegarde Main-Courante"
Resultat = CopyDirectory(RepertoireSource$, RepertoireDestination$,"")
If Resultat = 0
MessageRequester("IMPOSSIBLE DE COPIER","LA SAUVEGARDE DES MAIN-COURANTES A ECHOUE !",#MB_ICONWARNING | #PB_MessageRequester_ok )
Else
If Resultat = 1
MessageRequester("Création d'une disquette de sauvegarde","LA SAUVEGARDE DES MAIN-COURANTES A REUSSI !",#MB_ICONINFORMATION | #PB_MessageRequester_ok )
EndIf
EndIf
EndProcedure
Procedure imprimer()
If PrintRequester()
If StartPrinting("Main-Courante")
If StartDrawing(PrinterOutput())
DrawingFont(LoadFont(2, "Comic Sans MS", 30) )
For n=1 To CountGadgetItems(1)
Locate(100, 100 * n ) : DrawText(GetGadgetItemText(1,n-1,0))
Next
StopDrawing()
EndIf
StopPrinting()
EndIf
EndIf
EndProcedure
Procedure Ouvre_Fenetre_principale()
If OpenWindow(0,100,100, #WindowWidth, #WindowHeight, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_WindowCentered |#PB_Window_TitleBar, "COMPTE RENDU - MAIN-COURANTE")And CreateGadgetList(WindowID(0))
If LoadFont(0,"Times New Roman",10)
SetGadgetFont(#Gadget_editeur,FontID())
EndIf
If CreateGadgetList(WindowID())
ButtonGadget(#bouton_couper,580,40,80,20,"COUPER")
GadgetToolTip(#bouton_couper,"Enlève le texte sélectionné")
ButtonGadget(#bouton_copier,580,65,80,20,"COPIER")
GadgetToolTip(#bouton_copier,"Le texte sélectionné est placé dans le presse-papier")
ButtonGadget(#bouton_coller,580,90,80,20,"COLLER")
GadgetToolTip(#bouton_coller,"Le texte copié dans le presse-papier est collé à l'endroit du curseur")
ButtonGadget(#bouton_annuler,580,115,80,20,"ANNULER")
GadgetToolTip(#bouton_annuler,"Annule la dernière opération effectuée")
ButtonGadget(#bouton_refaire,580,140,80,20,"REFAIRE")
GadgetToolTip(#bouton_refaire,"Recommence la dernière opération effectuée")
ButtonGadget(#bouton_effacer,580,165,80,20,"Page blanche")
GadgetToolTip(#bouton_effacer,"Je préfère travailler sur une page blanche")
ButtonGadget(#bouton_nouveau,580,190,80,20,"Nouvelle M.C.")
GadgetToolTip(#bouton_nouveau,"Commencer une nouvelle Main-Courante")
ButtonGadget(#bouton_imprimer,580,230,80,30,"Imprimer la M.C.")
GadgetToolTip(#bouton_imprimer,"Imprime le texte tel que sur l'écran")
ButtonGadget(#bouton_creer, 580, 265, 80, 40, "Editer la main courante",#PB_Button_MultiLine)
GadgetToolTip(#bouton_creer,"Envoie la MC créée dans le Bloc-notes")
ButtonGadget(#bouton_aide,580,315,80,20,"AIDE")
GadgetToolTip(#bouton_aide,"Voir comment utiliser le doc. pré-établi")
ButtonGadget(#bouton_quitter,580,340,80,20,"QUITTER")
GadgetToolTip(#bouton_quitter,"Ferme le registre de Main-courante")
Frame3DGadget(0,560,25,120,430,"",#PB_Frame3D_Single)
ButtonGadget(#sauvegarde,580,380,80,60,"Créer une disquette de sauvegarde",#PB_Button_MultiLine )
GadgetToolTip(#sauvegarde,"Insérez une disquette dans le lecteur (A:) et sauvegardez vos M.C.")
If LoadFont(0, "Times New Roman", 10, #PB_Font_Bold)
TextGadget(#nombre_MC, 200, 450, 300, 20, "INVENTAIRE => Nombre de M.C.enregistrées : " + Str(Compter_MC("C:\WINDOWS\Bureau\Src\Main-Courante\")))
SetGadgetFont(#nombre_MC, FontID())
EditorGadget(#gadget_editeur, 10, 30, 530, 400, Text1)
AddGadgetItem(#Gadget_editeur, 0, " COMPTE RENDU D'INTERVENTION")
AddGadgetItem(#Gadget_editeur, 1, "MAIN-COURANTE n° : ")
AddGadgetItem(#Gadget_editeur, 2, "Journée du : ")
AddGadgetItem(#Gadget_editeur, 3, "Heure : ")
AddGadgetItem(#Gadget_editeur, 4, "Agents intervenus : ")
AddGadgetItem(#Gadget_editeur, 5, "Requérant(s) : ")
AddGadgetItem(#Gadget_editeur, 6, "Raison : ")
AddGadgetItem(#Gadget_editeur, 7, "Objet : ")
AddGadgetItem(#Gadget_editeur, 8, "--------------------------------------------------------------------------- LES FAITS ----------------------------------------------------------------------")
AddGadgetItem(#Gadget_editeur, 9, "Ce jour, ")
AddGadgetItem(#Gadget_editeur, 10, "")
AddGadgetItem(#Gadget_editeur, 11, "")
AddGadgetItem(#Gadget_editeur, 12, "")
AddGadgetItem(#Gadget_editeur, 13, "")
AddGadgetItem(#Gadget_editeur, 14, "")
AddGadgetItem(#Gadget_editeur, 15, "Rédacteur :")
AddGadgetItem(#Gadget_editeur, 16, "Date et heure de clôture :")
Frame3DGadget(0,3,10,695,460,"Rédaction du compte rendu")
EndIf
EndIf
If CreateMenu(0,WindowID())
MenuTitle("Fichier")
MenuItem(1,"Quitter")
MenuTitle("Info")
MenuItem(2,"A propos")
MenuBar()
MenuItem(3,"Licence")
EndIf
EndIf
EndProcedure
Procedure Creation_Fichier_Texte()
Nombre_de_ligne = CountGadgetItems(#Gadget_editeur)
If CreateFile(0, "Main Courante.txt")
For n = 0 To Nombre_de_ligne - 1
Texte.s = GetGadgetItemText(#Gadget_editeur,n,0)
WriteStringN(Texte)
Next
CloseFile(0)
EndIf
RunProgram("Main Courante.txt")
EndProcedure
;- Debut du programme
Ouvre_Fenetre_principale()
Repeat : Event = WaitWindowEvent()
If Event = #PB_EventGadget
Select EventGadgetID()
Case #bouton_creer
Creation_Fichier_Texte()
Case #bouton_couper
Vide$ = ""
SendMessage_(GadgetID(#gadget_editeur),#EM_GETSEL,@StartSel,@EndSel)
Buffer$ = Space(EndSel-StartSel)
SendMessage_(GadgetID(#gadget_editeur),#EM_GETSELTEXT,0,@Buffer$)
ClearClipboard()
SetClipboardText(Buffer$)
SendMessage_(GadgetID(#gadget_editeur),#EM_REPLACESEL,#True,@Vide$)
Case #bouton_copier
SendMessage_(GadgetID(#gadget_editeur),#EM_GETSEL,@StartSel,@EndSel)
Buffer$ = Space(EndSel-StartSel)
SendMessage_(GadgetID(#gadget_editeur),#EM_GETSELTEXT,0,@Buffer$)
ClearClipboard()
SetClipboardText(Buffer$)
Case #bouton_coller
Buffer$ = GetClipboardText()
SendMessage_(GadgetID(#gadget_editeur),#EM_REPLACESEL,#True,@Buffer$)
Case #bouton_annuler
SendMessage_(GadgetID(#gadget_editeur),#EM_UNDO,0,0)
Case #bouton_refaire
SendMessage_(GadgetID(#gadget_editeur),#EM_REDO,0,0)
Case #bouton_quitter
CloseWindow(0)
Case #bouton_aide
MessageRequester("UTILISATION de la MAIN-COURANTE","POUR CE QUI EST DES BOUTONS IL SUFFIT DE PASSER LE CURSEUR DESSUS POUR OBTENIR L'INFO. - DANS L'EDITEUR, A GAUCHE, REMPLIR LES PARTIES VOULUES (SACHANT QU'IL N'Y A PAS DE RETOUR AUTOMATIQUE IL FAUT PASSER A LA LIGNE SUIVANTE AVEC LA TOUCHE ENTREE ET CECI A CHAQUE FOIS QUE VOUS ARRIVEZ EN BOUT DE LIGNE AFIN DE MAINTENIR UNE FORME QUI SERA FACILEMENT IMPRIMABLE. LORSQUE VOUS AVEZ TERMINE VOTRE M.C., CLIQUEZ SUR [Editer la main courante], ALLEZ DANS [Fichier] PUIS [Enregistrer sous...]. NOMMEZ VOTRE M.C. PUIS SELECTIONNEZ LE DOSSIER [Main-courante]. CLIQUEZ ENSUITE SUR [Enregistrer]. REFERMER LA FENETRE DU BLOC-NOTES EN CLIQUANT SUR LA CROIX EN HAUT A DROITE. POUR IMPRIMER UNE M.C.DEJA ENREGISTREE, UTILISEZ LE TABLEAU DE CONSULTATION POUR OUVRIR VOTRE MC OU PLUSIEURS PUIS CLIQUEZ SUR [Imprimer] ",#PB_MessageRequester_Ok | #MB_ICONINFORMATION)
Case #sauvegarde
MessageRequester("VERIFICATION AVANT COPIE","ASSUREZ-VOUS D'AVOIR INSERE UNE DISQUETTE DANS LE LECTEUR AVANT D'APPUYER SUR OK !",#MB_ICONEXCLAMATION | #PB_MessageRequester_Ok)
sauvegarde_MC()
Case #bouton_imprimer
imprimer()
Case #bouton_effacer
ClearGadgetItemList(#gadget_editeur)
Case #bouton_nouveau
CloseWindow(0)
Ouvre_Fenetre_principale()
EndSelect
EndIf
;-fonctions du menu
Select Event : Case #PB_EventMenu
Select EventMenuID()
Case 1;Item>Quitter
CloseWindow(0)
Case 2;Item> A propos
MessageRequester("A PROPOS","Utilitaire de Main-courante, version 1 ",#MB_ICONINFORMATION | #PB_MessageRequester_Ok)
Case 3;Item>Licence
MessageRequester("Licence d'utilisation à :","Vous pouvez utiliser ce programme gratuitement sans limitation de durée. Tous droits réservés à l'auteur",#MB_ICONINFORMATION | #PB_MessageRequester_Ok)
EndSelect
;-Fermeture du programme
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
End
Il s'agit d'une partie d'une suite d'applications un peu du même genre, dont chacune a un document pré-établi (compte rendu; courrier à untel; note à l'attention; etc...) et toutes sortes de documents que l'on ne trouve généralement que sous forme papier.
de faire plein de petits exécutables grâce à ce merveilleux outil qu'est pureBasic.
Donc pour en revenir au sujet, voyez-vous dans ce code la raison pour laquelle Windows retient l'application (avec ses petits bras musclés) en utilisation continue malgré la fermeture ?
j'avoue ne pas être assez doué pour le voir.
jacobus.