Seite 1 von 1

[Mini-Tut] Simple Nutzerverwaltung

Verfasst: 19.04.2009 03:03
von KeyKon
Also, da es in einem anderen Thread gefragt wurde und ich sowas schonmal vor Ewigkeiten geschrieben hab, hab ich das ganze mal auf den neusten Stand gebracht.

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

Verfasst: 19.04.2009 19:19
von Andesdaf
schön :allright: