In my code, I seek to know if we can put the elements of my list in alphabetical order?
Thnak you
Code: Select all
; Mes contact version 01
; écris par jbernard - copyright 2007
; Les constantes
; Fenetres
Enumeration
#Fenetre_main
#Fenetre_ajouter
EndEnumeration
;Gadgets
Enumeration
#Liste_amie
#Bouton_nouveau
#Bouton_sauver
#bouton_effacer
#bouton_info
#cadre
#text_pseudo
#champ_pseudo
#text_prenom
#champ_prenom
#text_age
#champ_age
#text_ville
#champ_ville
#text_mail
#champ_mail
#bouton_ajouter
#bouton_annule
#file
#BarreEtat
EndEnumeration
;procedure pour ajouter un ou une ami(e) à la liste
Structure Gestion
Pseudo.s
Prenom.s
Age.s
Ville.s
Email.s
EndStructure
Global NewList Amis.Gestion()
Procedure.b Effacer_liste()
ClearList(Amis())
ProcedureReturn l
EndProcedure
; Creation de la liste chainée
Procedure.b ajoute_amis()
LastElement(Amis())
If AddElement(Amis())
Amis()\Pseudo=GetGadgetText(#champ_pseudo)
Amis()\Prenom=GetGadgetText(#champ_prenom)
Amis()\Age=GetGadgetText(#champ_age)
Amis()\Ville=GetGadgetText(#champ_ville)
Amis()\Email=GetGadgetText(#champ_mail)
AddGadgetItem(#Liste_amie,-1,Amis()\pseudo+Chr(10)+Amis()\Prenom+Chr(10)+Amis()\age+Chr(10)+Amis()\ville+Chr(10)+Amis()\Email)
Resultat = CountGadgetItems(#Liste_amie)
StatusBarText(#BarreEtat, 0, "nombre de contacte: "+Str(Resultat))
EndIf
ProcedureReturn l
EndProcedure
;Procedure d'effacement d'un nom de la liste
Procedure Supprimer_nom()
Protected i,total_item.l
total_item=CountGadgetItems(#Liste_amie)-1
For i=total_item To 0 Step -1
If GetGadgetItemState(#Liste_amie,i)&#PB_ListIcon_Checked
RemoveGadgetItem(#Liste_amie,i)
SelectElement(Amis(),i)
DeleteElement(Amis())
EndIf
Next i
Resultat = CountGadgetItems(#Liste_amie);<---------------------------- ici --------------------------
StatusBarText(#BarreEtat, 0, "nombre de contacte: "+Str(Resultat));<---------------------------- ici --------------------------
EndProcedure
; procedure de sauvegarde du fichier
Procedure sauver()
ResetList(Amis())
CreateFile(#file,"Contact.dat")
ForEach Amis()
WriteStringN(#file,Amis()\Pseudo)
WriteStringN(#file,Amis()\Prenom)
WriteStringN(#file,Amis()\Age)
WriteStringN(#file,Amis()\Ville)
WriteStringN(#file,Amis()\Email)
Next
CloseFile(#file)
EndProcedure
;Procedure des fenetres
; Fenetre principale
Procedure main()
If OpenWindow(#Fenetre_main,0,0,640,350," Mes Contacts version 01-2007",#PB_Window_MinimizeGadget|#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_TitleBar)
If CreateGadgetList(WindowID(#Fenetre_main))
ListIconGadget(#Liste_amie,10,50,620,280,"Pseudo :",150,#PB_ListIcon_GridLines|#PB_ListIcon_CheckBoxes)
AddGadgetColumn(#Liste_amie,1,"Prénom:",100)
AddGadgetColumn(#Liste_amie,2,"Age:",50)
AddGadgetColumn(#Liste_amie,3,"Ville:",195)
AddGadgetColumn(#Liste_amie,4,"Email:",200)
ButtonGadget(#Bouton_nouveau,10,10,120,30,"Ajouter un contact")
ButtonGadget(#Bouton_sauver,150,10,120,30,"Sauver la liste")
ButtonGadget(#Bouton_effacer,290,10,120,30,"Effacer un contact")
ButtonGadget(#bouton_info,435,10,120,30,"Information")
CreateStatusBar(#BarreEtat, WindowID(#Fenetre_main))
Resultat = CountGadgetItems(#Liste_amie)
StatusBarText(#BarreEtat, 0, "nombre de contacte: "+Str(Resultat))
EndIf
EndIf
EndProcedure
;Fenetre ajouter un ami ou une amie
Procedure ajouter()
If OpenWindow(#Fenetre_ajouter,0,0,320,340,"Ajouter un nouveau contact",#PB_Window_TitleBar|#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(#Fenetre_ajouter))
Frame3DGadget(#cadre,10,10,300,280,"")
TextGadget(#text_pseudo,90,25,120,30,"Pseudo :",#PB_Text_Center)
StringGadget(#champ_pseudo ,45,45,220,20,"")
TextGadget(#text_prenom,90,75,120,30,"Prenom :",#PB_Text_Center)
StringGadget(#champ_prenom,45,95,220,20,"")
TextGadget(#text_age,90,125,120,30,"Age :",#PB_Text_Center)
StringGadget(#champ_age,135,145,25,20,"",#PB_String_Numeric)
TextGadget(#text_ville,90,175,120,30,"Ville :",#PB_Text_Center)
StringGadget(#champ_ville,45,195,220,20,"")
TextGadget(#text_mail,90,225,120,30,"Email :",#PB_Text_Center)
StringGadget(#champ_mail,45,245,220,20,"")
ButtonGadget(#bouton_ajouter,20,300,120,30,"Ajouter")
ButtonGadget(#bouton_annule,180,300,120,30,"Annuler")
ProcedureReturn #True
EndIf
EndIf
EndProcedure
;Boucle du programme
main()
;Chargement de la liste au demarrage du programme
If OpenFile(#file,"Contact.dat")<>0
ResetList(Amis())
OpenFile(#file,"Contact.dat")
While Eof(#file)=0
If AddElement(Amis())
Amis()\Pseudo=ReadString(#file)
Amis()\Prenom=ReadString(#file)
Amis()\Age=ReadString(#file)
Amis()\Ville=ReadString(#file)
Amis()\Email=ReadString(#file)
AddGadgetItem(#Liste_amie,-1,Amis()\pseudo+Chr(10)+Amis()\Prenom+Chr(10)+Amis()\age+Chr(10)+Amis()\ville+Chr(10)+Amis()\Email)
Resultat = CountGadgetItems(#Liste_amie)
StatusBarText(#BarreEtat, 0, "nombre de contacte: "+Str(Resultat))
EndIf
Wend
CloseFile(#file)
EndIf
; programation de la gestion des evenements des fenetres
Repeat
Select WaitWindowEvent ()
Case #PB_Event_Gadget
Select EventGadget()
Case #Bouton_nouveau:ajouter()
Case#bouton_sauver:sauver()
Case #bouton_effacer:Supprimer_nom()
Case #bouton_info:MessageRequester("Information","Contact crée par Jbernard copyright 2007",#PB_MessageRequester_Ok)
Case #bouton_ajouter:ajoute_amis()
CloseWindow(#Fenetre_ajouter)
Case #bouton_annule
CloseWindow(#Fenetre_ajouter)
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Fenetre_main
Quit=#True
EndSelect
EndSelect
Until Quit
End