1. Mise à jour des numeros se fait avec une repetition avant de continuer normalement.
2. Pour supprimer une seule ligne juste apres l'enrgistrement, toutes les autres lignes enregistrées
3. Sont effacées.
4. quand on efface une ligne du milieu les suivantes ne sont pas mises jour(les numeros)
voici mon code:
Code : Tout sélectionner
;-Declarations
; Constantes
#INormal = 0
Enumeration ; Gadgets
#liste
#Numero_Biblio
#NomCD_Biblio
#CategorieCD_Biblio
#MarqueCD_Biblio
#Modifier
#frame
#Bouton_enregistrer
#NomCD
#MarqueCD
#combo
#strG
#strG_2
#quitter
#Quitter_2
#text_NomCD
#text_Categorie
#text_MarqueCD
EndEnumeration
Enumeration ; Menus
#Enregistrer
#Supprimer
#Enregistrement
#Apropos
EndEnumeration
#FICHIER1 = "C:\Test2.bib"
Global n.l
; Structures
Structure Biblio
Numero.s
NomCD.s
CategorieCD.s
MarqueCD.s
EndStructure
; Listes
NewList items.Biblio()
n + 1
;sauvegarde des donneés dans la liste et dans un fichier
Procedure.b Sauver()
If AddElement(items())
items()\Numero=GetGadgetText(#liste)
items()\NomCD=GetGadgetText(#NomCD)
items()\CategorieCD=GetGadgetText(#combo)
items()\MarqueCD=GetGadgetText(#MarqueCD)
AddGadgetItem(#liste,-1,Str(n)+Chr(10)+items()\NomCD+Chr(10)+items()\CategorieCD+Chr(10)+items()\MarqueCD)
EndIf
If CreatePreferences("c:\Test.bib");creation et ecriture dans le ficher "c:\Test.bib"
n = 0
ForEach items()
n + 1
PreferenceComment("enregistrement N°"+ Str(n)) ;puis utiliser cette commande ?
PreferenceComment(" ")
WritePreferenceString(Str(n) + "-Numero", Str(n))
WritePreferenceString(Str(n) + "-NomCD", items()\NomCD)
WritePreferenceString(Str(n) + "-CategorieCD", items()\CategorieCD)
WritePreferenceString(Str(n) + "-MarqueCD", items()\MarqueCD)
PreferenceComment(" ")
Next
ClosePreferences()
EndIf
ProcedureReturn 1
EndProcedure
;pour charger la liste de mes enregistrements
Procedure Charger()
OpenPreferences("c:\Test.bib")
n = 0
Repeat
n + 1
Numero.s = ReadPreferenceString(Str(n) + "-Numero", "")
If Numero
AddElement(items())
items()\Numero = ReadPreferenceString(Str(n)+"-Numero","")
items()\NomCD = ReadPreferenceString(Str(n) + "-NomCD","")
items()\CategorieCD = ReadPreferenceString(Str(n) + "-CategorieCD","")
items()\MarqueCD = ReadPreferenceString(Str(n) + "-MarqueCD","")
AddGadgetItem(#liste,-1,items()\Numero+Chr(10)+items()\NomCD+Chr(10)+items()\CategorieCD+Chr(10)+items()\MarqueCD)
EndIf
Until Numero = ""
ClosePreferences()
EndProcedure
; effacer un element de la liste et du fichier(entre autre reecrire le fichier)
Procedure supprimer()
;n=1
If GetGadgetState(#liste) < 1
SelectElement(items(),GetGadgetState(#liste))
MessageRequester("Erreur","Sélectionner la ligne à effacer avant de cliquer"+Chr(10)+" sur supprimer", #MB_OK|#MB_ICONERROR)
Else
If GetGadgetState(#liste) > -1
SelectElement(items(),GetGadgetState(#liste))
DeleteElement(items())
;LastElement(items())
;Str(items()\Numero - Str(index))
;ResetList(items())
;*ancienneliste=@items()
;a revoir
If CreatePreferences("c:\Test.bib")
n = 0
ForEach items()
n + 1
WritePreferenceString(Str(n) + "-Numero", items()\Numero)
WritePreferenceString(Str(n) + "-NomCD", items()\NomCD)
WritePreferenceString(Str(n) + "-CategorieCD", items()\CategorieCD)
WritePreferenceString(Str(n) + "-MarqueCD", items()\MarqueCD)
;WriteStringN("") puis utiliser cette commande ?
Next
ClosePreferences()
EndIf
ClearGadgetItemList(#liste)
ForEach items()
AddGadgetItem(#liste,-1,items()\Numero+Chr(10)+items()\NomCD+Chr(10)+items()\CategorieCD+Chr(10)+items()\MarqueCD)
Next
EndIf
EndIf
EndProcedure
;procedure pour la modification d'un element
Procedure modifier()
If GetGadgetState(#liste) > -1
SelectElement(items(),GetGadgetState(#liste))
items()\Numero = InputRequester("Numero","Entrez le noveau nom: ",items()\Numero)
items()\NomCD = InputRequester("NomCD","Entrez le noveau nom: ",items()\NomCD)
items()\CategorieCD = InputRequester("CategorieCD","Entrez le noveau nom: ",items()\CategorieCD)
items()\MarqueCD = InputRequester("MarqueCD","Entrez le noveau nom: ",items()\MarqueCD)
SetGadgetItemText(#liste,GetGadgetState(#liste),items()\Numero,0)
SetGadgetItemText(#liste,GetGadgetState(#liste),items()\NomCD,1)
SetGadgetItemText(#liste,GetGadgetState(#liste),items()\CategorieCD,2)
SetGadgetItemText(#liste,GetGadgetState(#liste),items()\MarqueCD,3)
;modification directe dans le fichier "Test.bib"
If CreatePreferences("c:\Test.bib");creation et ecriture dans le ficher "c:\Test.bib"
n = 0
ForEach items()
n + 1
WritePreferenceString(Str(n) + "-Numero", items()\Numero)
WritePreferenceString(Str(n) + "-NomCD", items()\NomCD)
WritePreferenceString(Str(n) + "-CategorieCD", items()\CategorieCD)
WritePreferenceString(Str(n) + "-MarqueCD", items()\MarqueCD)
;WriteStringN("") puis utiliser cette commande ?
Next
ClosePreferences()
EndIf
EndIf
EndProcedure
If OpenWindow(1,0,0,820,500,#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_TitleBar,"CD/DVD-Theque")
CreateGadgetList(WindowID(1))
ListIconGadget(#liste,250,30,565,410,"N°",40,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
AddGadgetColumn(#liste,1,"Nom CD",160)
AddGadgetColumn(#liste,2,"Categorie CD",180)
AddGadgetColumn(#liste,3,"Marque CD",180)
EndIf
index = index + 1
CreateMenu(1,WindowID(1))
MenuTitle("Menu")
MenuItem(#Enregistrer,"Enregistrer")
MenuItem(#Supprimer,"Supprimer")
MenuItem(#Modifier,"Modifier")
MenuItem(#Enregistrement,"Enregistrement")
MenuItem(#Apropos,"A propos")
MenuBar()
MenuItem(#Quitter,"Quitter")
;creation des boutons
TextGadget(#text_NomCD, 10, 105,80,20,"Nom CD")
TextGadget(#text_Categorie, 10, 175,80,20,"Categorie")
TextGadget(#text_MarqueCD, 10, 245,80,20,"Marque CD")
TextGadget(#frame, 20,30,200,35,"Bibliothèque de CDs",#PB_Text_Center|#PB_Text_Border)
ComboBoxGadget(#combo,90,170,150,100)
StringGadget(#NomCD,90, 100,150,20,"Win XP")
StringGadget(#MarqueCD,90, 240,150,20,"Sony")
AddGadgetItem(#combo,00,"Musiques")
AddGadgetItem(#combo,1,"Logiciels")
AddGadgetItem(#combo,2,"Donnees")
AddGadgetItem(#combo,3,"Jeux")
AddGadgetItem(#combo,4,"Film")
AddGadgetItem(#combo,5,"Divers")
SetGadgetState(#combo, 1)
ButtonGadget(#Bouton_enregistrer,10,320,100,20,"Enregistrer")
ButtonGadget(#Modifier,10,370,100,20,"Modifier")
ButtonGadget(#quitter,140,420,100,20,"Quitter")
ButtonGadget(#Supprimer,140,320,100,20,"Supprimer")
ButtonGadget(#Apropos,10,420,100,20,"A propos")
ButtonGadget(#Enregistrement,140,370,100,20,"S'Enregistrer")
Charger()
Repeat
Select WaitWindowEvent()
Case #PB_EventCloseWindow
Sortie = 1
event = 20
;action concernant les menus
Case #PB_EventMenu
Select EventMenuID()
Case #quitter
Sortie = 1
Case#Modifier:modifier()
Case#Enregistrer:Sauver()
Case#Supprimer:supprimer()
Case#Apropos:MessageRequester("A Propos","www.micko159@ifrance.com ", #MB_OK|#MB_ICONINFORMATION)
EndSelect
;action concernant les boutons
Case #PB_Event_Gadget
Select EventGadgetID()
Case#Bouton_enregistrer:Sauver()
Case#Supprimer:supprimer()
Case #quitter
Sortie = 1
Case#Modifier:modifier()
Case#Apropos:MessageRequester("A Propos","www.micko159@ifrance.com ", #MB_OK|#MB_ICONINFORMATION)
Case#PB_EventType_LeftClick
If GetGadgetState(#liste) > -1
SelectElement(items(),GetGadgetState(#liste))
SetGadgetText(#NomCD, ""+items()\NomCD)
SetGadgetText(#combo, ""+items()\CategorieCD)
SetGadgetText(#MarqueCD, ""+items()\MarqueCD)
EndIf
EndSelect
Select EventType()
EndSelect
EndSelect
Until Sortie = 1
ActivateWindow()
CloseWindow(1)
;#######################
;problemes rencontrés ##
;#######################
;1. Mise à jour des numeros se fait avec une repetition avant de continuer normalement.
;2. Pour supprimer une seule ligne juste apres l'enrgistrement, toutes les autres lignes enregistrées
;3. Sont effacées.
;4. quand on efface une ligne du milieu les suivantes ne sont pas mises jour(les numeros)
; ExecutableFormat=Windows
; CursorPosition=94
; FirstLine=79
; EOF