Code : Tout sélectionner
Un petit répertoire que chacun ... moyennant quelques aménagements pourra adapter à ses désirs.
;----------------------------------
; Répertoire ...
; Paul(PE)
; 08-09-2017
; PureBasic 5.60 (Linux - x64)
;-------------------------------
Declare contact_fenetre(Fen)
Declare contact_nouveau()
Declare quitter(Fen)
Declare contact_chargement()
Declare enregistrer_contact_nouveau()
Declare changement_dans_liste()
Declare touche_entree()
Declare contact_sauvegarde()
Declare contact_consulter ()
Declare contact_supprimer ()
Declare contact_lister()
Declare contact_modifier()
Declare contact_modification()
Enumeration Fenetres
#Fenetre_Contact
#Fenetre_Nouveau
#Fenetre_Consulter
#Fenetre_Modifier
#Fenetre_lister
EndEnumeration
Enumeration Gadgets
#Contact_Cont1
#Lib_Contact_Lib1
#Bou_Contact_Consulter
#Bou_Contact_Modifier
#Bou_Contact_Supprimer
#Bou_Contact_Neant4
#Bou_Contact_Nouveau
#Bou_Contact_Fermer
#Contact_combo
#Contact_Cont2
#Contact_Calendrier
#Nouveau_Nom
#Nouveau_Prenom
#Nouveau_Info1
#Nouveau_Info2
#Nouveau_Info3
#Nouveau_Info4
#Bou_Nouveau_enregistrer
#Bou_Nouveau_sortir
#Consulter_Nom
#Consulter_Prenom
#Consulter_Info1
#Consulter_Info2
#Consulter_Info3
#Consulter_Info4
#Bou_Consulter_retour
#Modifier_Nom
#Modifier_Prenom
#Modifier_Info1
#Modifier_Info2
#Modifier_Info3
#Modifier_Info4
#Bou_Modifier_Valider
#Bou_Modifier_Retour
#Bou_Contact_liste
#Contact_lister_liste
#Bou_contact_lister_Retour
EndEnumeration
Enumeration
#Return
EndEnumeration
Structure identite
Nom$
Prenom$
Info1$
Info2$
Info3$
Info4$
EndStructure
Global NewMap Contact1.identite()
Global n$, p$, v1$, v2$, v3$, v4$
Global selection$, filename$
filename$ = "repertoire.txt"
Procedure quitter(Fen)
CloseWindow(Fen)
End
EndProcedure
Procedure contact_chargement()
If ReadFile(0, filename$)
While Eof(0) = 0
n$=ReadString(0)
p$=ReadString(0)
v1$=ReadString(0)
v2$=ReadString(0)
v3$=ReadString(0)
v4$=ReadString(0)
a$ = n$+" "+p$
Contact1(a$)\Nom$ = n$
Contact1(a$)\Prenom$ = p$
Contact1(a$)\Info1$ = v1$
Contact1(a$)\Info2$ = v2$
Contact1(a$)\Info3$ = v3$
Contact1(a$)\Info4$ = v4$
Wend
Else
If CreateFile(0, filename$)
EndIf
EndIf
CloseFile(0)
ProcedureReturn
EndProcedure
Procedure contact_sauvegarde()
If CreateFile(0, filename$)
ForEach Contact1()
WriteStringN(0, (Contact1()\Nom$))
WriteStringN(0, (Contact1()\Prenom$))
WriteStringN(0, (Contact1()\Info1$))
WriteStringN(0, (Contact1()\Info2$))
WriteStringN(0, (Contact1()\Info3$))
WriteStringN(0, (Contact1()\Info4$))
Next
CloseFile(0)
EndIf
ProcedureReturn
EndProcedure
Procedure enregistrer_contact_nouveau()
n$ = (GetGadgetText(#Nouveau_Nom))
p$ = (GetGadgetText(#Nouveau_Prenom))
v1$ = (GetGadgetText(#Nouveau_Info1))
v2$ = (GetGadgetText(#Nouveau_Info2))
v3$ = (GetGadgetText(#Nouveau_Info3))
v4$ = (GetGadgetText(#Nouveau_Info4))
SetGadgetText(#Nouveau_Nom, "")
SetGadgetText(#Nouveau_Prenom, "")
SetGadgetText(#Nouveau_Info1, "")
SetGadgetText(#Nouveau_Info2, "")
SetGadgetText(#Nouveau_Info3, "")
SetGadgetText(#Nouveau_Info4, "")
a$ = n$+" "+p$
Contact1(a$)\Nom$ = n$
Contact1(a$)\Prenom$ = p$
Contact1(a$)\Info1$ = v1$
Contact1(a$)\Info2$ = v2$
Contact1(a$)\Info3$ = v3$
Contact1(a$)\Info4$ = v4$
SetActiveGadget(#Nouveau_Nom)
contact_sauvegarde()
ProcedureReturn
EndProcedure
Procedure contact_consulter()
CloseWindow(#Fenetre_Contact)
If OpenWindow(#Fenetre_Consulter, 480, 160, 250, 250, "Contact", #PB_Window_SystemMenu )
StringGadget(#Consulter_Nom, 10, 10, 230, 30, Contact1(selection$)\Nom$)
StringGadget(#Consulter_Prenom, 10, 40, 230, 30, Contact1(selection$)\Prenom$)
StringGadget(#Consulter_Info1, 10, 80, 230, 30, Contact1(selection$)\Info1$)
StringGadget(#Consulter_Info2, 10, 110, 230, 30, Contact1(selection$)\Info2$)
StringGadget(#Consulter_Info3, 10, 140, 230, 30, Contact1(selection$)\Info3$)
StringGadget(#Consulter_Info4, 10, 170, 230, 30, Contact1(selection$)\Info4$)
;ButtonGadget(#Bou_Nouveau_enregistrer, 10, 210, 112, 20, "Ok")
ButtonGadget(#Bou_Consulter_retour, 10, 210, 230, 20, "Retour")
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #Bou_Consulter_retour
contact_fenetre(#Fenetre_Consulter)
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
EndProcedure
Procedure contact_modification()
DeleteMapElement(Contact1(), selection$)
n$ = (GetGadgetText(#Modifier_Nom))
p$ = (GetGadgetText(#Modifier_Prenom))
v1$ = (GetGadgetText(#Modifier_Info1))
v2$ = (GetGadgetText(#Modifier_Info2))
v3$ = (GetGadgetText(#Modifier_Info3))
v4$ = (GetGadgetText(#Modifier_Info4))
a$ = n$+" "+p$
Contact1(a$)\Nom$ = n$
Contact1(a$)\Prenom$ = p$
Contact1(a$)\Info1$ = v1$
Contact1(a$)\Info2$ = v2$
Contact1(a$)\Info3$ = v3$
Contact1(a$)\Info4$ = v4$
contact_sauvegarde()
contact_fenetre(#Fenetre_Modifier)
EndProcedure
Procedure contact_modifier()
CloseWindow(#Fenetre_Contact)
If OpenWindow(#Fenetre_Modifier, 480, 160, 250, 250, "Contact", #PB_Window_SystemMenu )
StringGadget(#Modifier_Nom, 10, 10, 230, 30, Contact1(selection$)\Nom$)
StringGadget(#Modifier_Prenom, 10, 40, 230, 30, Contact1(selection$)\Prenom$)
StringGadget(#Modifier_Info1, 10, 80, 230, 30, Contact1(selection$)\Info1$)
StringGadget(#Modifier_Info2, 10, 110, 230, 30, Contact1(selection$)\Info2$)
StringGadget(#Modifier_Info3, 10, 140, 230, 30, Contact1(selection$)\Info3$)
StringGadget(#Modifier_Info4, 10, 170, 230, 30, Contact1(selection$)\Info4$)
ButtonGadget(#Bou_Modifier_Valider, 10, 210, 112, 20, "Modifier")
ButtonGadget(#Bou_Modifier_Retour, 127, 210, 112, 20, "Annuler")
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #Bou_Modifier_Valider
contact_modification()
Case #Bou_Modifier_Retour
contact_fenetre(#Fenetre_Modifier)
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
EndProcedure
Procedure contact_lister()
If OpenWindow(#Fenetre_lister, 530, 205, 195, 200, "listing", #PB_Window_SystemMenu )
ListViewGadget(#Contact_lister_liste,10,10,175,150)
NewList listing1.s()
ForEach Contact1()
AddElement(listing1())
listing1() = (MapKey (Contact1()))
Next
SortList( listing1(), #PB_Sort_Ascending )
ForEach listing1()
AddGadgetItem(#Contact_lister_liste, -1, listing1())
Next
ButtonGadget(#Bou_contact_lister_Retour, 10, 165, 175, 25, "Annuler")
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #Bou_contact_lister_Retour
CloseWindow(#Fenetre_lister)
ProcedureReturn
Case #Contact_lister_liste
Select EventType()
Case #PB_EventType_LeftClick
changement_dans_liste()
CloseWindow(#Fenetre_lister)
ProcedureReturn
EndSelect
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
EndProcedure
Procedure contact_supprimer()
DeleteMapElement(Contact1(), selection$)
contact_sauvegarde()
contact_fenetre(#Fenetre_Contact)
EndProcedure
Procedure changement_dans_liste()
selection$ = (GetGadgetText(#Contact_lister_liste))
DisableGadget(#Bou_Contact_Consulter, #False)
DisableGadget(#Bou_Contact_Modifier, #False)
DisableGadget(#Bou_Contact_Supprimer, #False)
ProcedureReturn
EndProcedure
Procedure touche_entree()
Nb.i = GetActiveGadget()
Select Nb
Case #Nouveau_Nom
SetActiveGadget(#Nouveau_Prenom)
Case #Nouveau_Prenom
SetActiveGadget(#Nouveau_Info1)
Case #Nouveau_Info1
SetActiveGadget(#Nouveau_Info2)
Case #Nouveau_Info2
SetActiveGadget(#Nouveau_Info3)
Case #Nouveau_Info3
SetActiveGadget(#Nouveau_Info4)
Case #Nouveau_Info4
enregistrer_contact_nouveau()
EndSelect
ProcedureReturn
EndProcedure
Procedure contact_nouveau()
CloseWindow(#Fenetre_Contact)
If OpenWindow(#Fenetre_Nouveau, 480, 160, 250, 250, "Nouveau Contact", #PB_Window_SystemMenu )
StringGadget(#Nouveau_Nom, 10, 10, 230, 30, "Nom")
StringGadget(#Nouveau_Prenom, 10, 40, 230, 30, "Prenom")
StringGadget(#Nouveau_Info1, 10, 80, 230, 30, "Info1")
StringGadget(#Nouveau_Info2, 10, 110, 230, 30, "Info2")
StringGadget(#Nouveau_Info3, 10, 140, 230, 30, "Info3")
StringGadget(#Nouveau_Info4, 10, 170, 230, 30, "Info4")
ButtonGadget(#Bou_Nouveau_enregistrer, 10, 210, 112, 20, "Enregistrer")
ButtonGadget(#Bou_Nouveau_sortir, 127, 210, 112, 20, "Annuler")
AddKeyboardShortcut(#Fenetre_Nouveau, #PB_Shortcut_Return, #Return)
SetActiveGadget(#Nouveau_Nom)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #Bou_Nouveau_enregistrer
enregistrer_contact_nouveau()
Case #Bou_Nouveau_sortir
contact_fenetre(#Fenetre_Nouveau)
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case #Return
touche_entree()
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
EndProcedure
Procedure contact_fenetre(Fen)
CloseWindow(Fen)
contact_chargement()
colorContact = $87C1A3
If OpenWindow(#Fenetre_Contact, 380, 160, 510, 400, "Répertoire", #PB_Window_SystemMenu )
If LoadFont(0, "Arial", 13)
SetGadgetFont(#PB_Default, FontID(0)) ; la police par défaut est remplacée par celle chargée (Arial 16)
EndIf
TextGadget(#Lib_Contact_Lib1, 180, 10,130,20," REPERTOIRE ",#PB_Text_Center | #PB_Text_Border)
SetGadgetColor(#Lib_Contact_Lib1, #PB_Gadget_BackColor, colorContact)
SetGadgetFont(#PB_Default, #PB_Default) ; remet la police par défaut originale (standard)
ButtonGadget(#Bou_Contact_Consulter, 10, 45, 130, 30, "Consulter")
DisableGadget(#Bou_Contact_Consulter, #True)
ButtonGadget(#Bou_Contact_Modifier, 10, 77, 130, 30, "Modifier")
DisableGadget(#Bou_Contact_Modifier, #True)
ButtonGadget(#Bou_Contact_Supprimer, 10, 109, 130, 30, "Supprimer")
DisableGadget(#Bou_Contact_Supprimer, #True)
ButtonGadget(#Bou_Contact_Nouveau, 355, 45, 135, 30, "Nouveau")
ButtonGadget(#Bou_Contact_Fermer, 355, 77, 135, 30, "Fermer")
ButtonGadget(#Bou_Contact_Neant4, 355, 109, 135, 30, "")
ContainerGadget(#Contact_Cont2, 50, 150, 400, 30, #PB_Container_Double)
SetGadgetColor(#Contact_Cont2, #PB_Gadget_BackColor, colorContact)
CloseGadgetList()
ButtonGadget(#Bou_Contact_liste, 150, 45, 195, 20, "listing")
CalendarGadget(#Contact_Calendrier, 100, 190, 300, 170)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #Bou_Contact_Consulter : contact_consulter()
Case #Bou_Contact_Modifier : contact_modifier()
Case #Bou_Contact_Supprimer : contact_supprimer()
Case #Bou_Contact_liste : contact_lister()
Case #Bou_Contact_Nouveau
contact_nouveau()
Case #Bou_Contact_Fermer
quitter(#Fenetre_Contact)
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
EndProcedure
contact_fenetre(-1)