[Mini-Tut] Simple Nutzerverwaltung

Hier kannst du häufig gestellte Fragen/Antworten und Tutorials lesen und schreiben.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

[Mini-Tut] Simple Nutzerverwaltung

Beitrag 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
(\/) (°,,,°) (\/)
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

schön :allright:
Win11 x64 | PB 6.20
Antworten