Da ich meinen Haushalt nun alleine mache, habe ich mir ein kleines Haushaltsbuch
geschrieben, das die monatlichen Einkäufe sammelt und ausrechnet.
Ist evtl. geeignet für den Wettbewerb. Ansonsten, vielleicht kann es ja wer brauchen.
Ist zwar jetzt 6 KB, kleiner ging es aber nicht. Die Validierung des Betrages habe ich
sogar noch weg gelassen.
Ist auch eine Proc dabei, die mit Sortlist Datums sortiert.
Code
Declare Handle btn1, btn2, btn3, btn4, btn5, btn6, btn7, text1, text2, text3, text4, edit1, edit2, edit3, edit4
Declare Handle grid, dll
Declare Long pos, ende, save, knopf
Declare String zeile, spalten, datei, Monat, Monate[]
Monate[] = " ", "JANUAR", "FEBRUAR", "MÄRZ", "APRIL", "MAI", "JUNI", "JULI", "AUGUST", "SEPTEMBER", "OKTOBER", "NOVEMBER", "DEZEMBER"
datei = $PROGDIR + Str$(dt("getMonth", !NOW)) + "-" + Str$(dt("GetYear", !NOW)) + ".txt"
spalten = "DATUM;0;80;HÄNDLER;0;120;ZAHL.ART;0;100;BETRAG;2;80"
save = 0
Set("Decimals", 2)
WindowTitle "Kleines Haushaltsbuch"
Window 680, 450
btn1 = Create("Button", %HWnd, "ENDE", 10, 10, 80, 25)
btn2 = Create("Button", %HWnd, "Speichern", 110, 10, 80, 25)
btn3 = Create("Button", %HWnd, "Übernehmen +", 210, 10, 100, 25)
btn4 = Create("Button", %HWnd, "Ändern", 320, 10, 80, 25)
btn5 = Create("Button", %HWnd, "Summe", 430, 10, 80, 25)
btn6 = Create("Button", %HWnd, "Satz löschen", 530, 10, 100, 25)
btn7 = Create("Button", %HWnd, "Drucken", 530, 180,100, 25)
text1 = Create("Text", %HWnd, "Datum", 10, 50, 100, 25)
text2 = Create("Text", %HWnd, "Händler/Ware", 230, 50, 100, 25)
text3 = Create("Text", %HWnd, "Zahlungsart", 10, 100, 100, 25)
text4 = Create("Text", %HWnd, "Betrag in €", 230, 100, 100, 25)
edit1 = Create("Edit", %HWnd, "", 120, 50, 80, 25)
edit2 = Create("Edit", %HWnd, "", 340, 50, 180, 25)
edit3 = Create("Edit", %HWnd, "", 120, 100, 80, 25)
edit4 = Create("Edit", %HWnd, "", 340, 100, 80, 25)
grid = Create("GridBox", %HWnd, spalten, 0, 10, 150, 400, 200)
UserMessages $10
ende = 0
If FileExists(datei)
Laden()
Else
MessageBox("Noch keine Datei angelegt.\nBitte erst Daten eingeben !", "Info", 0)
EndIf
WhileNot ende
WaitInput
If Clicked(btn1)
' Ende
knopf = Messagebox("Vor Beenden Speichern ?", "Frage", 292)
If knopf = 6
Speichern()
EndIf
ende = 1
ElseIf Clicked(btn2)
' Speichern
Speichern()
save = 1
ElseIf Clicked(btn3)
'Übernehmen
zeile = GetText$(edit1) + "|" + Upper$(GetText$(edit2)) + "|" + Upper$(GetText$(edit3)) + "|" + GetText$(edit4)
AddString(grid, zeile)
SortiereDatum()
ElseIf Clicked(btn4)
' Ändern
pos = GetCurSel(grid)
SetText grid, pos, 0, GetText$(edit1)
SetText grid, pos, 1, Upper$(GetText$(edit2))
SetText grid, pos, 2, Upper$(GetText$(edit3))
SetText grid, pos, 3, GetText$(edit4)
SortiereDatum()
ElseIf Clicked(btn5)
' Summe
Summieren()
ElseIf Clicked(btn6)
' Zeile löschen
pos = GetCurSel(grid)
If pos > -1
DeleteString(grid, pos)
EndIf
ElseIf Clicked(btn7)
' Drucken
knopf = 0
knopf = Messagebox("Mit Summe drucken ?", "Frage", 292)
Drucken()
ElseIf Clicked(grid)
pos = GetCurSel(grid)
If pos > -1 ' ungültige Zeile unterhalb des letzten Eintrages -< Fehlermeldung
zeile = GetString$(grid, pos)
SetText edit1, SubStr$(zeile, 1, "|")
SetText edit2, SubStr$(zeile, 2, "|")
SetText edit3, SubStr$(zeile, 3, "|")
SetText edit4, SubStr$(zeile, 4, "|")
EndIf
EndIf
If %UMESSAGE = $10
knopf = Messagebox("Vor Beenden Speichern ?", "Frage", 292)
If knopf = 6
Speichern()
EndIf
ende = 1
EndIf
EndWhile
Proc Laden
Declare Long anzahl
ClearList
anzahl = Move("FileToList", datei)
Move("ListToHandle", grid)
MessageBox(Str$(anzahl) + " Datensätze geladen !", "Info", 0)
Set("MoveListMode", 0)
EndProc
Proc Speichern
Declare Long anzahl
ClearList
Move("HandleToList", grid)
DeleteString(0, GetCount(0))
anzahl = Move("ListToFile", datei)
MessageBox(Str$(anzahl) + " Datensätze gespeichert !", "Info", 0)
Set("MoveListMode", 0)
EndProc
Proc Summieren
Declare Float s
WhileLoop 0, GetCount(grid) - 1
s = s + Val(GetText$(grid, &LOOP, 3))
EndWhile
MessageBox("Summe : " + Str$(s) + " € ausgegeben !", "Info", 0)
EndProc
Proc Drucken
Declare Long x1, y1, Float s
Declare String dat, hd, zahl, betr
x1 = 100 : y1 = 140
s = 0
Monat = Monate[DT("GetMonth", !NOW)]
StartPrint "*"
DrawText 100, 30, "AUSGABEN MONAT " + Monat
DrawText 100, 70, MKStr$("-", 200)
DrawText x1, y1 - 20, "DATUM"
DrawText x1 + 120, y1 - 20, "HÄNDLER"
DrawText x1 + 250, y1 - 20, "ZAHL-ART"
DrawText x1 + 380, y1 - 20, "BETRAG"
WhileLoop 0, GetCount(grid) - 1
zeile = GetString$(grid, &LOOP)
dat = SubStr$(zeile, 1, "|")
hd = SubStr$(zeile, 2, "|")
Zahl = SubStr$(zeile, 3, "|")
betr = SubStr$(zeile, 4, "|") + " €"
If InStr(",", betr)
betr = Translate$(betr, ",", ".")
EndIf
s = s + Val(betr)
DrawText x1, y1, dat
DrawText x1 + 120, y1, hd
DrawText x1 + 250, y1, zahl
DrawText x1 + 380, y1, betr
Inc y1, 20
EndWhile
If knopf = 6
DrawText x1 + 380, y1 + 20, "------------"
DrawText x1 + 250, y1 + 40, "SUMME : "
DrawText x1 + 380, y1 + 40, Str$(s) + " €"
EndIf
EndPrint
EndProc
Proc SortiereDatum
Declare String datum, Handle Liste
Liste = Create("Grid", 4, 0)
ClearList
Move("HandleToList", grid)
WhileLoop 0, GetCount(0) -1
zeile = GetString$(0, &LOOP)
datum = CTod$(SubStr$(zeile, 1, "|"))
zeile = Translate$(zeile, SubStr$(zeile, 1, "|"), datum)
AddString(Liste, zeile)
EndWhile
ClearList
Move("HandleToList", Liste)
SortList "|", 1, 5
ClearList Liste
WhileLoop 0, GetCount(0) - 1
zeile = GetString$(0, &LOOP)
datum = DToc$(SubStr$(zeile, 1, "|"))
zeile = Translate$(zeile, SubStr$(zeile, 1, "|"), datum)
AddString(Liste, zeile)
EndWhile
ClearList
Move("HandleToList", Liste)
ClearList grid
Move("ListToHandle", grid)
EndProc
End
Alles anzeigen