Daten in eine Datenbank eingeben,ausgeben,ändern und löschen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
tobe
Beiträge: 146
Registriert: 14.09.2006 17:33
Wohnort: Oktoberfest

Beitrag von tobe »

hi HemSA,

ich hab mir das auch mal kurz angekuckt.
zu deinem ersten und dritten problem, du musst die listen der fenster nach dem öffnen auch füllen sonst sieht man natürlich nix ;)
ich hab dir hier mal zu beispiel 3 procs umgebaut:

Code: Alles auswählen

Procedure lig_Fuellen(lig.l)
  If ReadFile(1,"termin.dat")
    laengel.l= Lof(1)
    zeilenanzahlw.w=laengel.l/52
    For iw.w=0 To zeilenanzahlw.w
      FileSeek(1,iw.w*52)                                       
      wert2s.s=ReadString(1)
      datums.s=Left(wert2s.s,10)
      terminarts.s=Mid(wert2s.s,11, 15)
      names.s=Mid(wert2s.s,26, 25)
      AddGadgetItem(lig, -1,datums.s+Chr(10)+terminarts.s+Chr(10)+names.s)
    Next iw.w
    CloseFile(1)
  EndIf  
EndProcedure

Procedure Open_Datenausgabe()
  If OpenWindow(#Datenausgabe, 100, 100, 355, 200, "Datenausgabe", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar| #PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(#Datenausgabe))
      ListIconGadget(#Datenausgabe_lig, 5, 5, 345, 190, "Datum", 80,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
      AddGadgetColumn(#Datenausgabe_lig, 1, "Terminart", 90)
      AddGadgetColumn(#Datenausgabe_lig, 2, "Name", 150)
    EndIf
    lig_Fuellen(#Datenausgabe_lig)
  EndIf
EndProcedure
 
Procedure Open_Datenloeschungauswahl()
  If OpenWindow(#Datenloeschungauswahl, 100, 100, 355, 275, "Datenlöschung", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar| #PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(#Datenloeschungauswahl))
      ListIconGadget(#Datenloeschungauswahl_lig, 5, 35, 345, 200, "Datum", 80,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
      AddGadgetColumn(#Datenloeschungauswahl_lig, 1, "Terminart", 90)
      AddGadgetColumn(#Datenloeschungauswahl_lig, 2, "Name", 150)
      TextGadget(#Datenloeschungauswahl_lblDatensatz_markieren, 5,  10, 250, 20, "Bitte den Datensatz markieren")
      ButtonGadget(#Datenloeschungauswahl_cmdWeiter, 5, 245, 70, 20, "Weiter")
    EndIf
    lig_Fuellen(#Datenloeschungauswahl_lig)
  EndIf 
EndProcedure
 
Procedure Open_Datenloeschungbestaetigung() 
  If OpenWindow(#Datenloeschungbestaetigung,216,0,380,250,"Datenlöschungsfenster",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar| #PB_Window_ScreenCentered )
    If CreateGadgetList(WindowID(#Datenloeschungbestaetigung))
      TextGadget(#Datenloeschungbestaetigung_lblDatenloeschungsfenster, 20, 20, 150, 20, "Datenlöschungsfenster")
      TextGadget(#Datenloeschungbestaetigung_lblDatum, 20, 60, 40, 20, "Datum")                       
      StringGadget(#Datenloeschungbestaetigung_txtDatum, 80, 60, 60, 20, "")                           
      TextGadget(#Datenloeschungbestaetigung_lblTerminart, 20, 100, 50, 20, "Terminart")
      StringGadget(#Datenloeschungbestaetigung_txtTerminart, 80, 100, 100, 20, "")
      TextGadget(#Datenloeschungbestaetigung_lblName, 20, 140, 60, 20, "Name")
      StringGadget(#Datenloeschungbestaetigung_txtName, 80, 140, 150, 20, "")     
      ButtonGadget(#Datenloeschungbestaetigung_cmdDaten_loeschen, 20, 180, 230, 30, "Daten löschen ( sind sie sich wirklich sicher?)")
      ButtonGadget(#Datenloeschungbestaetigung_cmdAbbrechen, 270, 180, 100, 30, "Abbrechen")
    EndIf
    If ReadFile(1,"termin.dat")
      FileSeek(1,wertw.w*52)                                       
      wert2s.s=ReadString(1)
      datums.s=Left(wert2s.s,10)
      terminarts.s=Mid(wert2s.s,11, 15)
      names.s=Mid(wert2s.s,26, 25)
      SetGadgetText(#Datenloeschungbestaetigung_txtDatum, datums.s)
      SetGadgetText(#Datenloeschungbestaetigung_txtTerminart, terminarts.s)
      SetGadgetText(#Datenloeschungbestaetigung_txtName, names.s)
      CloseFile(1)
    EndIf
  EndIf
EndProcedure
die füllroutinen bei den events kannst du dann löschen, weil sonst füllt sich bei jedem klicken alles doppelt und dreifach.

so jetzt muss ich aber in betti ;)
PureBasic 4.40 (Windows - x86)
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Beitrag von HemSA »

Hallo Kiffi und tobe,
vielen Dank noch euch beiden. Jetzt hat es hingehauen was das Programm angeht, und es geht so wie ich es mir vorgestellt habe ( wie bei der "GOTO" Lösung ). Davon abgesehen hätte ich nie gedacht, dass das ohne ein "GOTO" geht. Es sind eben doch noch andere Denkmuster, die man da anwenden muss. Und dank Kiffi habe ich ja sozusagen ein gutes Beispiel bekommen wie man so etwas aufbaut, dass man mehrere Programme sehr gut unter einen "Hut" bekommt. Ich hatte dann noch ein paar Probleme mit der ganzen Umsetzung, und da hat mich tobe mit seinen Beispielen noch auf den richtigen Weg gebracht.
Das mit dem Hauptfenster schließen beim Aufrufen von den Teilprogrammen ( schreibt man das jetzt mit "ß" oder "ss"? Ich bin da im Süden doch etwas weit weg was die Rechtschreibreform angeht? ) und wieder anzeigen nach dem Schließen von den Teilprogrammen habe ich über den "HideWindow(#Window, Status)" Befehl gemacht.

Code: Alles auswählen

Enumeration ; Windows 
  #Hauptfenster 
  #Termineingabefenster
  #Datenausgabe
  #Datenloeschungauswahl
  #Datenloeschungbestaetigung
  #Datenaenderungauswahl
  #Datenaenderungbestaetigung
  #Terminausgabe
EndEnumeration 

Enumeration ; Gadgets 
  
  ; Hauptfenster 
  #Hauptfenster_lblInfo 
  #Hauptfenster_cmdTermineingabe 
  #Hauptfenster_cmdDatenausgabe 
  #Hauptfenster_cmdDatenloeschung 
  #Hauptfenster_cmdDatenaenderung 
  #Hauptfenster_cmdTerminausgabe 
  #Hauptfenster_cmdBeenden 
  
  ; Termineingabefenster 
  #Termineingabefenster_lblInfo 
  #Termineingabefenster_lblDatum 
  #Termineingabefenster_txtDatum 
  #Termineingabefenster_lblTerminart 
  #Termineingabefenster_txtTerminart 
  #Termineingabefenster_lblName 
  #Termineingabefenster_txtName 
  #Termineingabefenster_cmdHinzufuegen 
  #Termineingabefenster_cmdBeenden 
  #Termineingabefenster_lblDatum2 
  #Termineingabefenster_lblTerminart2 
  #Termineingabefenster_lblName2 
  
  ;Datenausgabe
  #Datenausgabe_lig
  
  ;Datenloeschungauswahl
  #Datenloeschungauswahl_lig
  #Datenloeschungauswahl_lblDatensatz_markieren
  #Datenloeschungauswahl_cmdWeiter
  
  ;Datenloeschungbestaetigung
  #Datenloeschungbestaetigung_lblDatenloeschungsfenster
  #Datenloeschungbestaetigung_lblDatum
  #Datenloeschungbestaetigung_txtDatum
  #Datenloeschungbestaetigung_lblTerminart
  #Datenloeschungbestaetigung_txtTerminart
  #Datenloeschungbestaetigung_lblName
  #Datenloeschungbestaetigung_txtName
  #Datenloeschungbestaetigung_cmdDaten_loeschen
  #Datenloeschungbestaetigung_cmdAbbrechen
  
  ;Datenaenderungauswahl
  #Datenaenderungauswahl_lig
  #Datenaenderungauswahl_lblDatensatz_markieren
  #Datenaenderungauswahl_cmdWeiter
  
  ;Datenaenderungbestaetigung
  #Datenaenderungbestaetigung_lblDatenaenderungsfenster
  #Datenaenderungbestaetigung_lblDatum
  #Datenaenderungbestaetigung_txtDatum
  #Datenaenderungbestaetigung_lblTerminart
  #Datenaenderungbestaetigung_txtTerminart
  #Datenaenderungbestaetigung_lblName
  #Datenaenderungbestaetigung_txtName
  #Datenaenderungbestaetigung_cmdDaten_abspeichern
  #Datenaenderungbestaetigung_cmdAbrechen
  #Datenaenderungbestaetigung_lbl10_Zeichen
  #Datenaenderungbestaetigung_lbl15_Zeichen
  #Datenaenderungbestaetigung_lbl25_Zeichen
  
  ;Terminausgabe
  #Terminausgabe_lig
  
EndEnumeration 



Procedure Open_Hauptfenster() 
  If OpenWindow(#Hauptfenster,216,0,320,250,"Terminprogramm HemSA - 10/2006",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar ) 
    If CreateGadgetList(WindowID(#Hauptfenster)) 
      TextGadget  (#Hauptfenster_lblInfo, 70, 20, 200, 30, "Wählen Sie bitte Ihre Anwendung aus") 
      ButtonGadget(#Hauptfenster_cmdTermineingabe, 30, 50, 100, 30, "Termineingabe") 
      ButtonGadget(#Hauptfenster_cmdDatenausgabe, 180, 50, 100, 30, "Datenausgabe") 
      ButtonGadget(#Hauptfenster_cmdDatenloeschung, 30, 100, 100, 30, "Datenlöschung") 
      ButtonGadget(#Hauptfenster_cmdDatenaenderung, 180, 100, 100, 30, "Datenänderung") 
      ButtonGadget(#Hauptfenster_cmdTerminausgabe, 30, 150, 100, 30, "Terminausgabe") 
      ButtonGadget(#Hauptfenster_cmdBeenden, 30, 200, 250, 30, "Beenden") 
    EndIf 
  EndIf 
EndProcedure  

Procedure Open_Termineingabefenster() 
  If OpenWindow(#Termineingabefenster,216,0,500,300,"Termineingabefenster",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar ) 
    If CreateGadgetList(WindowID(#Termineingabefenster)) 
      TextGadget  (#Termineingabefenster_lblInfo, 20, 20, 150, 20, "Dateneingabefenster") 
      TextGadget  (#Termineingabefenster_lblDatum, 20, 60, 40, 20, "Datum")                        
      StringGadget(#Termineingabefenster_txtDatum, 80, 60, 60, 20, "")                          
      TextGadget  (#Termineingabefenster_lblTerminart, 20, 100, 50, 20, "Terminart") 
      StringGadget(#Termineingabefenster_txtTerminart, 80, 100, 100, 20, "") 
      TextGadget  (#Termineingabefenster_lblName, 20, 140, 60, 20, "Name") 
      StringGadget(#Termineingabefenster_txtName, 80, 140, 150, 20, "")      
      ButtonGadget(#Termineingabefenster_cmdHinzufuegen, 60, 200, 100, 30, "Daten hinzufügen") 
      ButtonGadget(#Termineingabefenster_cmdBeenden, 200, 200, 100, 30, "Beenden") 
      TextGadget  (#Termineingabefenster_lblDatum2, 150, 60, 380, 20, "Nur die ersten 10 Zeichen werden übernommen") 
      TextGadget  (#Termineingabefenster_lblTerminart2, 190, 100, 380, 20, "Nur die ersten 15 Zeichen werden übernommen") 
      TextGadget  (#Termineingabefenster_lblName2, 240, 140, 380, 20, "Nur die ersten 25 Zeichen werden übernommen") 
    EndIf 
  EndIf 
EndProcedure 
 
Procedure lig_Fuellen(lig.l)           ;lig=#Datenausgabe_lig??
  If ReadFile(1,"termin.dat")           ;Prozedur für das Füllen des ListIconGadget
    laengel.l= Lof(1)                   ;von Datenausgabe, Löschungs-und Änderungsauswahl,
    zeilenanzahlw.w=laengel.l/52 
    For iw.w=0 To zeilenanzahlw.w 
      FileSeek(1,iw.w*52)                                        
      wert2s.s=ReadString(1) 
      datums.s=Left(wert2s.s,10) 
      terminarts.s=Mid(wert2s.s,11, 15) 
      names.s=Mid(wert2s.s,26, 25) 
      AddGadgetItem(lig.l, -1,datums.s+Chr(10)+terminarts.s+Chr(10)+names.s);lig=#Datenausgabe_lig??
    Next iw.w 
    CloseFile(1) 
  EndIf  
EndProcedure 
 
Procedure Open_Datenausgabe() 
  If OpenWindow(#Datenausgabe, 100, 100, 355, 200, "Datenausgabe", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar| #PB_Window_ScreenCentered) 
    If CreateGadgetList(WindowID(#Datenausgabe)) 
      ListIconGadget(#Datenausgabe_lig, 5, 5, 345, 190, "Datum", 80,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection) 
      AddGadgetColumn(#Datenausgabe_lig, 1, "Terminart", 90) 
      AddGadgetColumn(#Datenausgabe_lig, 2, "Name", 150) 
    EndIf 
    lig_Fuellen(#Datenausgabe_lig) 
  EndIf 
EndProcedure  

Procedure Open_Datenloeschungauswahl() 
  If OpenWindow(#Datenloeschungauswahl, 100, 100, 355, 275, "Datenlöschung", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar| #PB_Window_ScreenCentered) 
    If CreateGadgetList(WindowID(#Datenloeschungauswahl)) 
      ListIconGadget(#Datenloeschungauswahl_lig, 5, 35, 345, 200, "Datum", 80,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection) 
      AddGadgetColumn(#Datenloeschungauswahl_lig, 1, "Terminart", 90) 
      AddGadgetColumn(#Datenloeschungauswahl_lig, 2, "Name", 150) 
      TextGadget(#Datenloeschungauswahl_lblDatensatz_markieren, 5,  10, 250, 20, "Bitte den Datensatz markieren") 
      ButtonGadget(#Datenloeschungauswahl_cmdWeiter, 5, 245, 70, 20, "Weiter") 
    EndIf 
    lig_Fuellen(#Datenloeschungauswahl_lig) 
  EndIf 
EndProcedure 
 
Procedure Open_Datenloeschungbestaetigung(wertw.w) 
  If OpenWindow(#Datenloeschungbestaetigung,216,0,380,250,"Datenlöschungsfenster",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar| #PB_Window_ScreenCentered ) 
    If CreateGadgetList(WindowID(#Datenloeschungbestaetigung)) 
      TextGadget(#Datenloeschungbestaetigung_lblDatenloeschungsfenster, 20, 20, 150, 20, "Datenlöschungsfenster") 
      TextGadget(#Datenloeschungbestaetigung_lblDatum, 20, 60, 40, 20, "Datum")                        
      StringGadget(#Datenloeschungbestaetigung_txtDatum, 80, 60, 60, 20, "")                            
      TextGadget(#Datenloeschungbestaetigung_lblTerminart, 20, 100, 50, 20, "Terminart") 
      StringGadget(#Datenloeschungbestaetigung_txtTerminart, 80, 100, 100, 20, "") 
      TextGadget(#Datenloeschungbestaetigung_lblName, 20, 140, 60, 20, "Name") 
      StringGadget(#Datenloeschungbestaetigung_txtName, 80, 140, 150, 20, "")      
      ButtonGadget(#Datenloeschungbestaetigung_cmdDaten_loeschen, 20, 180, 230, 30, "Daten löschen ( sind sie sich wirklich sicher?)") 
      ButtonGadget(#Datenloeschungbestaetigung_cmdAbbrechen, 270, 180, 100, 30, "Abbrechen") 
    EndIf 
    If ReadFile(1,"termin.dat") 
       FileSeek(1,wertw.w*52)                                        
       wert2s.s=ReadString(1) 
       datums.s=Left(wert2s.s,10)    
       terminarts.s=Mid(wert2s.s,11, 15) 
       names.s=Mid(wert2s.s,26, 25) 
       SetGadgetText(#Datenloeschungbestaetigung_txtDatum, datums.s) 
       SetGadgetText(#Datenloeschungbestaetigung_txtTerminart, terminarts.s) 
       SetGadgetText(#Datenloeschungbestaetigung_txtName, names.s) 
       CloseFile(1) 
    EndIf 
  EndIf 
EndProcedure

Procedure Open_Datenaenderungauswahl()
  If OpenWindow(#Datenaenderungauswahl, 100, 100, 355, 275, "Datenänderung", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar| #PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(#Datenaenderungauswahl))
      ListIconGadget(#Datenaenderungauswahl_lig, 5, 35, 345, 200, "Datum", 80,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
      AddGadgetColumn(#Datenaenderungauswahl_lig, 1, "Terminart", 90)
      AddGadgetColumn(#Datenaenderungauswahl_lig, 2, "Name", 150)
      TextGadget(#Datenaenderungauswahl_lblDatensatz_markieren, 5,  10, 250, 20, "Bitte den Datensatz markieren")
      ButtonGadget(#Datenaenderungauswahl_cmdWeiter, 5, 245, 70, 20, "Weiter")
    EndIf
    lig_Fuellen(#Datenaenderungauswahl_lig) 
  EndIf
EndProcedure

Procedure Open_Datenaenderungbestaetigung(wertw.w)  
  If OpenWindow(#Datenaenderungbestaetigung,216,0,500,300,"Datenänderungsfenster",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar| #PB_Window_ScreenCentered )
    If CreateGadgetList(WindowID(#Datenaenderungbestaetigung))
      TextGadget(#Datenaenderungbestaetigung_lblDatenaenderungsfenster, 20, 20, 150, 20, "Datenänderungsfenster")
      TextGadget(#Datenaenderungbestaetigung_lblDatum, 20, 60, 40, 20, "Datum")                       
      StringGadget(#Datenaenderungbestaetigung_txtDatum, 80, 60, 60, 20, "")                           
      TextGadget(#Datenaenderungbestaetigung_lblTerminart, 20, 100, 50, 20, "Terminart")
      StringGadget(#Datenaenderungbestaetigung_txtTerminart, 80, 100, 100, 20, "")
      TextGadget(#Datenaenderungbestaetigung_lblName, 20, 140, 60, 20, "Name")
      StringGadget(#Datenaenderungbestaetigung_txtName, 80, 140, 150, 20, "")      
      ButtonGadget(#Datenaenderungbestaetigung_cmdDaten_abspeichern, 20, 200, 160, 30, "Geänderte Daten abspeichern")
      ButtonGadget(#Datenaenderungbestaetigung_cmdAbrechen, 200, 200, 100, 30, "Abrechen")
      TextGadget(#Datenaenderungbestaetigung_lbl10_Zeichen, 150, 60, 380, 20, "Nur die ersten 10 Zeichen werden übernommen")
      TextGadget(#Datenaenderungbestaetigung_lbl15_Zeichen, 190, 100, 380, 20, "Nur die ersten 15 Zeichen werden übernommen")
      TextGadget(#Datenaenderungbestaetigung_lbl25_Zeichen, 240, 140, 380, 20, "Nur die ersten 25 Zeichen werden übernommen")
    EndIf
    If ReadFile(1,"termin.dat") 
       FileSeek(1,wertw.w*52)                                        
       wert2s.s=ReadString(1) 
       datums.s=Left(wert2s.s,10) 
       terminarts.s=Mid(wert2s.s,11, 15) 
       names.s=Mid(wert2s.s,26, 25)
       SetGadgetText(#Datenaenderungbestaetigung_txtDatum, datums.s)
       SetGadgetText(#Datenaenderungbestaetigung_txtTerminart, terminarts.s)
       SetGadgetText(#Datenaenderungbestaetigung_txtName, names.s)
       CloseFile(1) 
    EndIf
  EndIf
EndProcedure 

Procedure Terminausgabe_lig_Fuellen(lig.l) ;lig=#Terminausgabe_lig??
  If ReadFile(1,"termin.dat") 
    laengel.l= Lof(1) 
    zeilenanzahlw.w=laengel.l/52 
        
    tags.s=FormatDate("%dd",Date()) 
    monats.s=FormatDate("%mm",Date())
    jahrs.s=FormatDate("%yyyy",Date()) 
          
    tagl.l= Val(tags.s)
               
     For iw.w=0 To zeilenanzahlw.w
     FileSeek(1,iw.w*52)                                        
     wert2s.s=ReadString(1) 
     datums.s=Left(wert2s.s,10) 
     terminarts.s=Mid(wert2s.s,11, 15) 
     names.s=Mid(wert2s.s,26, 25)
     tagdateis.s=Left(datums.s,2)
     monatdateis.s=Mid(datums.s,4,2)
     tagdateil.l= Val(tagdateis.s)
        
        If monatdateis.s=monats.s
          If tagdateil.l+1=tagl.l Or tagdateil.l=tagl.l Or tagdateil.l-1=tagl.l Or tagdateil.l-2=tagl.l
             AddGadgetItem(lig.l, -1,datums.s+Chr(10)+terminarts.s+Chr(10)+names.s)
          EndIf
        EndIf
            
     Next iw.w
     CloseFile(1) 
   EndIf
EndProcedure      
            
Procedure Open_Terminausgabe()
  If OpenWindow(#Terminausgabe, 100, 100, 450, 200, "Termine - für gestern, heute, morgen und übermorgen", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget |#PB_Window_TitleBar| #PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(#Terminausgabe))
      ListIconGadget(#Terminausgabe_lig, 5, 5, 440, 190, "Datum", 70,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
      AddGadgetColumn(#Terminausgabe_lig, 1, "Terminart", 140)
      AddGadgetColumn(#Terminausgabe_lig, 2, "Name", 220)
    EndIf
    Terminausgabe_lig_Fuellen(#Terminausgabe_lig)
  EndIf      
EndProcedure 
 



Procedure MainLoop() 
  
  Protected Quit.l 
  Protected EventID.l 
  Protected EventGadget.l 
  Protected EventWindow.l 
  
  Open_Hauptfenster() 
  
  Repeat 
    
    EventID     = WaitWindowEvent() 
    EventGadget = EventGadget() 
    EventWindow = EventWindow() 
    
    Select EventID 
      
      Case #PB_Event_CloseWindow 
        
        Select EventWindow 
          
          Case #Hauptfenster                :  Quit = 1 
          Case #Termineingabefenster        :  CloseWindow(#Termineingabefenster):HideWindow(#Hauptfenster, 0) 
          Case #Datenausgabe                :  CloseWindow(#Datenausgabe):HideWindow(#Hauptfenster, 0)
          Case #Datenloeschungauswahl       :  CloseWindow(#Datenloeschungauswahl):HideWindow(#Hauptfenster, 0)
          Case #Datenloeschungbestaetigung  :  CloseWindow(#Datenloeschungbestaetigung):HideWindow(#Hauptfenster, 0)
          Case #Datenaenderungauswahl       :  CloseWindow(#Datenaenderungauswahl):HideWindow(#Hauptfenster, 0)
          Case #Datenaenderungbestaetigung  :  CloseWindow(#Datenaenderungbestaetigung):HideWindow(#Hauptfenster, 0)
          Case #Terminausgabe               :  CloseWindow(#Terminausgabe):HideWindow(#Hauptfenster, 0)
     
        EndSelect 
        
       
      Case #PB_Event_Gadget 
        
        Select EventWindow 
          
          Case #Hauptfenster 
            
            Select EventGadget 
              
              Case #Hauptfenster_cmdTermineingabe  : Open_Termineingabefenster():HideWindow(#Hauptfenster, 1) 
              Case #Hauptfenster_cmdDatenausgabe   : Open_Datenausgabe():HideWindow(#Hauptfenster, 1)
              Case #Hauptfenster_cmdDatenloeschung : Open_Datenloeschungauswahl():HideWindow(#Hauptfenster, 1) 
              Case #Hauptfenster_cmdDatenaenderung : Open_Datenaenderungauswahl():HideWindow(#Hauptfenster, 1) 
              Case #Hauptfenster_cmdTerminausgabe  : Open_Terminausgabe():HideWindow(#Hauptfenster, 1) 
              Case #Hauptfenster_cmdBeenden        : Quit = 1 
                
            EndSelect 
            
          Case #Termineingabefenster 
            
            Select EventGadget 
              
              Case #Termineingabefenster_cmdHinzufuegen 
                
                text1s.s = GetGadgetText(#Termineingabefenster_txtDatum)  
                ergebnis1s.s = LSet(text1s.s, 10)                         
                text2s.s = GetGadgetText(#Termineingabefenster_txtTerminart) 
                ergebnis2s.s = LSet(text2s.s, 15) 
                text3s.s = GetGadgetText(#Termineingabefenster_txtName) 
                ergebnis3s.s = LSet(text3s.s, 25) 
                
                textgesamts.s = ergebnis1s.s+ergebnis2s.s+ergebnis3s.s   
                
                If OpenFile(1,"termin.dat") 
                  laengel.l= Lof(1)                                                   
                  FileSeek(1,laengel.l)                                             
                  WriteStringN(1,textgesamts.s)                          
                  CloseFile(1)                                           
                EndIf 
                
                SetGadgetText(#Termineingabefenster_txtDatum, "")     
                SetGadgetText(#Termineingabefenster_txtTerminart, "") 
                SetGadgetText(#Termineingabefenster_txtName, "") 
                
              Case #Termineingabefenster_cmdBeenden 
                
                CloseWindow(#Termineingabefenster) 
                HideWindow(#Hauptfenster, 0)
            EndSelect 
           
            
          Case #Datenloeschungauswahl 
             
            Select EventGadget
            
              Case #Datenloeschungauswahl_cmdWeiter
                  
                   wertw.w = GetGadgetState(#Datenloeschungauswahl_lig)
                   ergebniss.s = Str(wertw.w)

                   CloseWindow(#Datenloeschungauswahl)
                   Open_Datenloeschungbestaetigung(wertw.w)
            EndSelect
            
          
          Case #Datenloeschungbestaetigung 
              
            Select EventGadget 
            
              Case #Datenloeschungbestaetigung_cmdDaten_loeschen
                   
                    loeschs.s = LSet("-", 50,"-")                       
             
                    If OpenFile(1,"termin.dat")
                       FileSeek(1,wertw.w*52)                                            
                       WriteStringN(1,loeschs.s)                          
                       CloseFile(1)                                       
                    EndIf
        
           
                    If OpenFile(2,"terminkopie.dat")
                            
                    EndIf
          
          
                    If ReadFile(1,"termin.dat") 
                        laengefile1l.l= Lof(1) 
                        zeilenanzahlfile1w.w=laengefile1l.l/52 
        
                        For iw.w=0 To zeilenanzahlfile1w.w-1      ;wegen Löschzeile = 1 Zeile weniger
                         FileSeek(1,iw.w*52)                                        
                         textgesamtfile1s.s=ReadString(1) 
          
                            If textgesamtfile1s.s<>loeschs.s
                               laengefile2l.l= Lof(2)                                                    
                               FileSeek(1,laengefile2l.l)                                            
                               WriteStringN(2,textgesamtfile1s.s)                  
                            EndIf
                        Next iw.w
                        CloseFile(1) 
                        CloseFile(2)  
                     EndIf     
            
                  DeleteFile("termin.dat")
                  RenameFile("terminkopie.dat", "termin.dat")  
                  DeleteFile("terminkopie.dat")  
            
                  CloseWindow(#Datenloeschungbestaetigung)
                  HideWindow(#Hauptfenster, 0)
                  
              Case #Datenloeschungbestaetigung_cmdAbbrechen
                    CloseWindow(#Datenloeschungbestaetigung)
                    HideWindow(#Hauptfenster, 0)
                    
            EndSelect 
            
            
          Case #Datenaenderungauswahl 
                    
            Select EventGadget
            
              Case #Datenaenderungauswahl_cmdWeiter
                  
                   wertw.w = GetGadgetState(#Datenaenderungauswahl_lig)
                   ergebniss.s = Str(wertw.w)

                   CloseWindow(#Datenaenderungauswahl)
                   Open_Datenaenderungbestaetigung(wertw.w)
            EndSelect
     
           
          Case #Datenaenderungbestaetigung 
             
            Select EventGadget  
           
              Case #Datenaenderungbestaetigung_cmdDaten_abspeichern
                    
                    text1s.s = GetGadgetText(#Datenaenderungbestaetigung_txtDatum)                            
                    ergebnis1s.s = LSet(text1s.s, 10)                       
                    text2s.s = GetGadgetText(#Datenaenderungbestaetigung_txtTerminart)
                    ergebnis2s.s = LSet(text2s.s, 15)
                    text3s.s = GetGadgetText(#Datenaenderungbestaetigung_txtName)
                    ergebnis3s.s = LSet(text3s.s, 25)
                    textgesamts.s = ergebnis1s.s+ergebnis2s.s+ergebnis3s.s  
      
                   If OpenFile(1,"termin.dat")
                      FileSeek(1,wertw.w*52)                               
                      WriteStringN(1,textgesamts.s)                          
                      CloseFile(1)                                          
                   EndIf
                   CloseWindow(#Datenaenderungbestaetigung)
                   HideWindow(#Hauptfenster, 0)
        
              Case #Datenaenderungbestaetigung_cmdAbrechen
                    CloseWindow(#Datenaenderungbestaetigung)
                    HideWindow(#Hauptfenster, 0)
              
            EndSelect
            
        EndSelect 
        
    EndSelect 
  
  Until Quit=1 
  
EndProcedure 

MainLoop() 

End 
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Antworten