Das ganze ist so einfach gehalten wie möglich, morgen schreib ich noch ein paar Kommentare rein, das ganze hier läuft ohne Array, es wird ein ListIconGadget zum "verwalten" genutzt, morgen schreib ich das ganze dann noch für ein Array um:
Code: Alles auswählen
Enumeration ;Gadgets
#List
#String_Name
#String_Alter
#String_Wohnort
#String_Hobby
#Hinzu
#Save
#Load
#Weg
EndEnumeration
Procedure Save() ; Prozedur zum speichern
If CreateFile(0,"save.csv") ; Speicherdatei erstellen
For id = 0 To CountGadgetItems(#List)-1 ; Jede Zeile einmal durchgehen
WriteStringN(0,GetGadgetItemText(#List,id,0) +";"+GetGadgetItemText(#List,id,1) +";"+GetGadgetItemText(#List,id,2) +";"+GetGadgetItemText(#List,id,3)) ;Die Verschiedenen Reihen durch ; getrennt in die Datei schreiben
Next
CloseFile(0) ; Datei schließen
EndIf
EndProcedure
Procedure Load() ; Prozedur zum laden
ClearGadgetItems(#List) ; Die Liste leeren
If ReadFile(0,"save.csv") ; Die Datei einlesen
While Eof(0) = 0 ; Solange noch Zeilen zum lesen da sind wiederholen
AddGadgetItem(#List,-1,ReplaceString(ReadString(0),";",Chr(10))) ; Zeile Einlesen und alle ; durch Chr(10) ersetzen und zum Gadget hinzufügen
Wend
CloseFile(0) ; Datei schließen
EndIf
EndProcedure
If OpenWindow(0,0,0,440,300,"Nutzerverwaltung",#PB_Window_ScreenCentered |#PB_Window_SystemMenu |#PB_Window_MinimizeGadget) ; Fenster öffnen
ListIconGadget(#List,10,10,320,250,"Name",110,#PB_ListIcon_GridLines |#PB_ListIcon_AlwaysShowSelection |#PB_ListIcon_FullRowSelect) ; ListIconGadget erstellen
AddGadgetColumn(0,1,"Alter",40) ; Spalten erstellen...
AddGadgetColumn(0,2,"Wohnort",70)
AddGadgetColumn(0,3,"Hobby",96)
StringGadget(#String_Name,10,270,110,20,"") ; Strings und Button zum Eingeben erstellen
StringGadget(#String_Alter,130,270,30,20,"")
StringGadget(#String_Wohnort,170,270,60,20,"")
StringGadget(#String_Hobby,240,270,90,20,"")
ButtonGadget(#Hinzu,340,270,90,20,"Hinzufügen")
ButtonGadget(#Save,340,10,90,20,"Speichern") ; Buttons zum Laden/Speichern und Entfernen eine Zeile
ButtonGadget(#Load,340,40,90,20,"Laden")
ButtonGadget(#Weg,340,240,90,20,"Entfernen")
Load() ; Das oben definierte Laden ausführen
Repeat ; Endlos ausführen
event = WaitWindowEvent() ; Auf eine Aktion im Fenster warten
Select event ; Aktion auswerten
Case #PB_Event_Gadget ; Es wurde ein Gadget betätigt
eg = EventGadget() ; Welches Gadget?
Select eg
Case #Hinzu ; Der Button zum Hinzufügen
Name.s = GetGadgetText(#String_Name) : SetGadgetText(#String_Name,"") ; Die Einzelnen Strings auslesen...
Alter.s = GetGadgetText(#String_Alter) : SetGadgetText(#String_Alter,"")
Wohn.s = GetGadgetText(#String_Wohnort) : SetGadgetText(#String_Wohnort,"")
Hobby.s = GetGadgetText(#String_Hobby) : SetGadgetText(#String_Hobby,"")
AddGadgetItem(#List,-1,Name+Chr(10)+Alter+Chr(10)+Wohn+Chr(10)+Hobby) ; Und durch Chr(10) getrennt eintragen
Case #Weg ; Der Button zum entfernen
RemoveGadgetItem(#List,GetGadgetState(#List)) ; Das im #List-Gadget ausgewählte Element entfernen
Case #Save ; Button zum Speichern
Save() ; Speichern...
Case #Load ; Button zum laden
Load() ; Laden...
EndSelect
Case #PB_Event_CloseWindow ; Es wurde das Schließen-X am Fenster gedrückt
Select MessageRequester("Beenden","Soll vor Beenden gespeichert werden?", #PB_MessageRequester_YesNoCancel |#MB_ICONQUESTION) ; Frage ob Gespeichert werden soll oder nicht
Case #PB_MessageRequester_Yes ; Ja es Soll gespeichert werden
Save() ; Speichern...
End ; Ende
Case #PB_MessageRequester_No ; Nein es soll nicht gespeichert werden
End ; Ende
EndSelect
;Falls Abbrechen gedrückt wurde wird keins von beidem ausgeführt und das Programm läuft einfach weiter...
EndSelect
ForEver
EndIf