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