Label in einer Tab Control zur Laufzeit er GUI ändern

  • Hey Leute,

    ich habe mal wieder ein Problem.
    Es soll ein Label zur Laufzeit der GUI geändert werden. Das Label befindet sich in einer Tab Control.

    Aktueller Stand: Label Ausgaben($einkaufOutput) zeig einen Wert an, der über eine Funktion berechnet wird.
    Ziel: Wenn der Button Akuallisieren gedrückt wird, muss der Wert der im Label Ausgaben($einkaufOutput) steht neu berechnet und angezeigt werden.

    Meine Versuch:
    Einen Bereich im Case für den Button erstellen (Case $button).

    Ergebnis:
    Die Funktion wird zwar erneut aufgerufen. Soweit ganz gut doch wenn ich den Tab Wechsle wird der neue Wert des Labels auch auf den Anderen Tabs angezeigt.

    Leider klappt die neuberechnung nicht.


    Code:

    Spoiler anzeigen
    [autoit]


    #comments-start
    Skrit-Name: Haushaltsbuch.exe
    Ersteller: Thorsten Zelt
    Erstellt am: 22.06.2012
    Fuunktion: Erfassung der Einahmen und Ausgabe im Haushalt
    #########################################################
    #comments-end

    [/autoit] [autoit][/autoit] [autoit]

    ; Bibliotheken einbinden
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIEdit.au3>
    #include <string.au3>
    #include <GDIPlus.au3>
    #include <Date.au3>
    #include <DateTimeConstants.au3>
    #include <GuiTab.au3>
    #include <file.au3>
    #include <array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; Constante werden definiert
    Const $versicherungenOutput = @ScriptDir & "\data\versicherungen.txt"
    Const $einkaufOutput = @ScriptDir & "\data\Einkaeufe.txt"
    Const $einnahmenOutput = @ScriptDir & "\data\einnahmen.txt"

    [/autoit] [autoit][/autoit] [autoit]

    ; Variable werden definiert
    ;~ Anfang Tab Ausgaben
    $abbuchung = ""
    $abbuchung1 = "Monatlich|jeden 2. Monat|jeden 3. Monat|jeden halbe Jahr|jährlich"
    $versicherung = ""
    $versicherung1 = "VDVA|BKK Pfalz|inter|Volkswohlbund|LV|DEVK"
    $laden = ""
    $laden1 = "Lidl|Edeka|Netto|Kauland|Hornbach|Russischer Laden|Real|Aldi|Penny|Rewe|Metzger|Tanken|Gärtner|Auto|Post"
    $bezahlen = ""
    $bezahlen1 = "Bar|EC|Visa|Master Card"
    $einkaufsart = ""
    $einkaufsart1 = "Lebensmittel|Anderes"
    $add = "Hinzufügen"
    ;~ Ende Tab Aufgaben | Anfang Tab Einnahmen
    $ComboEinnahmen = ""
    $ComboEinnahmen1 = "Spirit21|Computer_Hilfe|Andere"
    $ComboEinzahlung = ""
    $ComboEinzahlung1 = "Monatlich|Einmahlig"
    ;~ Ende Tab Einnahmen | Anfang Tab Statistik
    ;~ $viewEinahmen = "0"
    ;~ $viewAusgaben = "0"
    ;~ Ende Tab Statistik | Anfang Allgemen Variable
    $month = _DateToMonth(@MON, 1)
    $Eur = " €"
    $Komma = "."
    $font = "Arial"
    $sw = "Haushaltsbuch"
    $ver = "1.7"

    [/autoit] [autoit][/autoit] [autoit]

    ; Anfang der GUI
    $Form1 = GUICreate($sw & " " & $ver, 780, 559, 192, 114)
    GUISetFont(16, 400 , 4, $font)
    $Ueberschrift = GUICtrlCreateLabel($sw & " " & $ver, 300, 24, 170, 25)
    GUISetFont(10, 400, $font)
    $Ausgaben = GUICtrlCreateButton("Ausgaben", 16, 83, 89, 25)
    $Einnahmen = GUICtrlCreateButton("Einnahmen", 16, 113, 89, 25)
    $Statistik = GUICtrlCreateButton("Statistik", 16, 143, 89, 25)

    [/autoit] [autoit][/autoit] [autoit]

    $Tab = GUICtrlCreateTab(120, 59, 655,455)
    $TabAusgaben = GUICtrlCreateTabItem("Ausgaben")
    ; Anfang des Teils Versicherungen
    GUICtrlCreateLabel("Name",270, 85, 100, 25)
    GUICtrlCreateLabel("Versicherungs-NR", 360, 85, 115, 25)
    GUICtrlCreateLabel("Betrag", 495, 85, 100, 25)
    GUICtrlCreateLabel("Abbuchung", 585, 85, 100,25)
    $Versichungen = GUICtrlCreateLabel("Versicherungen:", 128, 107, 100, 17)
    $VersicherungenInput = GUICtrlCreateCombo($versicherung, 225, 105, 121, 21)
    GUICtrlSetData(-1, $versicherung1, $versicherung)
    $VersicherungsNR = GUICtrlCreateInput("", 353, 105, 121, 24)
    $VersicherungenEuro = GUICtrlCreateInput("", 480, 105, 35, 24, $ES_Number)
    GUICtrlSetLimit($VersicherungenEuro, 3, 1)
    GUICtrlCreateLabel($Komma, 515, 114, 10, 24)
    $VersicherungenCent = GUICtrlCreateInput("", 520, 105, 30, 24, $ES_Number)
    GUICtrlSetLimit($VersicherungenCent, 2, 1)
    GUICtrlCreateLabel($Eur, 550, 107, 13, 21)
    $VersicherungenAbbuchung = GUICtrlCreateCombo($abbuchung, 570, 105, 100, 21)
    GUICtrlSetData(-1, $abbuchung1, $abbuchung)
    $VHinzufuegen = GUICtrlCreateButton($add, 675, 105, 90, 24)
    $VersicherungenEdit = GUICtrlCreateEdit("", 128,135, 542,100)
    ; Ende des Teils Versicherungen und Anfang des Teils Einkauf
    GUICtrlCreateLabel("Datum",200, 260, 300, 25)
    GUICtrlCreateLabel("Laden", 300, 260, 115, 25)
    GUICtrlCreateLabel("Betrag", 400, 260, 100, 25)
    GUICtrlCreateLabel("Bezahlart", 490, 260, 100,25)
    GUICtrlCreateLabel("Bereich", 600, 260, 100,25)
    $Einkauf = GUICtrlCreateLabel("Einkauf:", 128, 285, 100, 17)
    $date = GUICtrlCreateDate("Datum", 177, 280, 85, 24, $DTS_SHORTDATEFORMAT)
    $EinkaufLaden = GUICtrlCreateCombo($laden, 265, 280, 113, 21)
    GUICtrlSetData(-1, $laden1, $laden)
    $LadenEuro = GUICtrlCreateInput("", 385, 280, 35, 24, $ES_Number)
    GUICtrlSetLimit($LadenEuro, 3, 1)
    GUICtrlCreateLabel($Komma, 420, 290, 10, 24)
    $LadenCent = GUICtrlCreateInput("", 425, 280, 30, 24, $ES_Number)
    GUICtrlSetLimit($LadenCent, 2, 1)
    GUICtrlCreateLabel($Eur, 455, 283, 13, 21)
    $EinkaufBezahlen = GUICtrlCreateCombo($bezahlen, 470, 280, 100, 21)
    GUICtrlSetData(-1, $bezahlen1, $bezahlen)
    $EinkaufArt = GUICtrlCreateCombo($einkaufsart, 573, 280, 97, 21)
    GUICtrlSetData(-1, $einkaufsart1, $einkaufsart)
    $EHinzufuegen = GUICtrlCreateButton($add, 675, 280, 90, 24)
    $EinkaufEdit = GUICtrlCreateEdit("", 128,310,542,195)
    ;~ ; Ende des Teils Einkauf Anfang des Teils Einnahmen
    $TabEinnahmen = GUICtrlCreateTabItem("Einnahmen")
    GUICtrlCreateLabel("Name",270, 85, 100, 25)
    GUICtrlCreateLabel("Betrag", 360, 85, 115, 25)
    GUICtrlCreateLabel("Einahme", 450, 85, 100,25)
    $EinnahmenInput = GUICtrlCreateCombo($ComboEinnahmen, 225, 105, 121, 21)
    GUICtrlSetData(-1, $ComboEinnahmen1, $ComboEinnahmen)
    $EinnahmenEuro = GUICtrlCreateInput("", 351, 105, 40, 24, $ES_Number)
    GUICtrlSetLimit($EinnahmenEuro, 4, 1)
    GUICtrlCreateLabel($Komma, 390, 115, 10, 24)
    $EinnahmenCent = GUICtrlCreateInput("", 395, 105, 30, 24, $ES_Number)
    GUICtrlSetLimit($EinnahmenCent, 2, 1)
    GUICtrlCreateLabel($Eur, 421, 107, 13, 21)
    $EinnahmenKonto = GUICtrlCreateCombo($ComboEinzahlung, 436, 105, 85, 21)
    GUICtrlSetData(-1, $ComboEinzahlung1, $ComboEinzahlung)
    $EinnahmenHinzufuegen = GUICtrlCreateButton($add, 675, 105, 90, 24)
    $einnahmenEdit = GUICtrlCreateEdit("", 128,135, 542,100)
    GUICtrlCreateLabel("Einnahmen:", 128, 107, 100, 17)
    ; Ende des Teils Einnahmen Anfang des Teils Statistik
    $TabStatistik = GUICtrlCreateTabItem("Statistik")
    $StatistikEinnahmen = GUICtrlCreateLabel("Einnahmen im " & $month & ":", 128, 107, 129, 17)
    ;~ $BetragEinnahmen = GUICtrlCreateLabel($viewEinahmen & $Eur, 260, 107, 100, 17)
    gehalt($einnahmenOutput)
    $StatistikAusgaben = GUICtrlCreateLabel("Ausgaben im " & $month & ":", 128, 143, 129 ,17)
    Ausgaben($einkaufOutput)
    $StatistikAkualisieren = GUICtrlCreateButton("Aktualisieren", 665, 483, 100, 21)
    $save = GUICtrlCreateButton("Speichern", 705, 525, 70, 25)
    $beenden = GUICtrlCreateButton("Beenden", 630, 525, 70, 25)
    $hWnd = WinGetHandle($Form1)
    GUISetState(@SW_SHOW)
    ; Ende der GUI

    [/autoit] [autoit][/autoit] [autoit]

    ; In der While Schleife werden Aktionen ausgeführt
    While 1

    [/autoit] [autoit][/autoit] [autoit]

    ; Eine Line zwischen den Versicherungen und der Einkäufen wird gezogen
    ;~ _GDIPlus_Startup()
    ;~ $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    ;~ _GDIPlus_GraphicsDrawLine($hGraphics, 128,250,765,250)

    [/autoit] [autoit][/autoit] [autoit]

    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Ausgaben
    GUICtrlSetState($TabAusgaben, $GUI_Show)
    Case $Einnahmen
    GUICtrlSetState($TabEinnahmen, $GUI_Show)
    case $Statistik
    GUICtrlSetState($TabStatistik, $GUI_Show)
    Case $VHinzufuegen
    Local $VEdit = GUICtrlRead($VersicherungenInput)
    Local $VNR = GUICtrlRead($VersicherungsNR)
    Local $VBEuro = GUICtrlRead($VersicherungenEuro)
    Local $VBCent = GUICtrlRead($VersicherungenCent)
    Local $VAbbuchung = GUICtrlRead($VersicherungenAbbuchung)

    [/autoit] [autoit][/autoit] [autoit]

    ; Es wird geprüft ob in das Input Feld $VBetrag wirklich ein Betrag eingetragen wurde
    If $VEdit = "" Or $VBEuro = "" Or $VBCent = "" Or $VNR = "" Or $VAbbuchung = "" Then
    MsgBox(16, "Warnung", "Es wurden nicht alle Eingaben gemacht", 5)
    Else
    $VHEdit = GUICtrlGetHandle($VersicherungenEdit)
    _GUICtrlEdit_AppendText($VHEdit, $VEdit & " " & $VNR & " " & $VBEuro & $Komma & $VBCent & $Eur & " " & $VAbbuchung & @CRLF)
    ControlSetText("","", $VersicherungenInput, "")
    ControlSetText("","", $VersicherungsNR, "")
    ControlSetText("","", $VersicherungenEuro, "")
    ControlSetText("","", $VersicherungenCent, "")
    ControlSetText("","", $VersicherungenAbbuchung, "")
    EndIf
    Case $EHinzufuegen
    Local $edate = GUICtrlRead($date)
    Local $eEinkaufLaden = GUICtrlRead($EinkaufLaden)
    Local $eLadenEuro = GUICtrlRead($LadenEuro)
    Local $eLadenCent = GUICtrlRead($LadenCent)
    Local $eEinkaufBezahlen = GUICtrlRead($EinkaufBezahlen)
    Local $eEinkaufArt = GUICtrlRead($EinkaufArt)

    [/autoit] [autoit][/autoit] [autoit]

    ; Es wird geprüft ob alle Felder für den Einkauf ausgefüllt wurden
    If $edate = "" Or $eEinkaufLaden = "" Or $eLadenEuro = "" Or $eLadenCent = "" Or $eEinkaufBezahlen = "" Or $eEinkaufArt = "" Then
    MsgBox(16, "Warnung", "Es wurden nicht alle Eingaben gemacht", 5)
    Else
    $eEdit = GUICtrlGetHandle($EinkaufEdit)
    _GUICtrlEdit_AppendText($eEdit, $edate & " " & $eEinkaufLaden & " " & $eLadenEuro & $Komma & $eLadenCent & $Eur & " " & $eEinkaufBezahlen & " " & $eEinkaufArt & @CRLF)
    ControlSetText("","", $EinkaufLaden, "")
    ControlSetText("","", $LadenEuro, "")
    ControlSetText("","", $LadenCent, "")
    ControlSetText("","", $EinkaufBezahlen, "")
    ControlSetText("","", $EinkaufArt, "")
    EndIf
    case $EinnahmenHinzufuegen
    Local $eEinnahmenInput = GUICtrlRead($EinnahmenInput)
    Local $eEinnahmenEuro = GUICtrlRead($EinnahmenEuro)
    Local $eEinnahmenCent = GUICtrlRead($EinnahmenCent)
    Local $eEinnahmenKonto = GUICtrlRead($EinnahmenKonto)

    [/autoit] [autoit][/autoit] [autoit]

    ; Es wird geprüft ob alle Felder der Einnahmen augefüllt wurden
    If $eEinnahmenInput = "" Or $eEinnahmenEuro = "" Or $eEinnahmenCent = "" Or $eEinnahmenKonto = "" Then
    MsgBox(16, "Warnung", "Es wurden nicht alle Eingaben gemacht", 5)
    Else
    ; Es wird geprüft ob die Variable $eEinnahmenKonto den Wert Einmahlig besitzt. Sollte das der Fall sein,
    ; wird der Wert in den aktuellen Monat im Zahlen Format geändert.
    $search = StringInStr($eEinnahmenKonto, "Einmahlig")
    If $search Then
    $ChangeeEinahmenKonto = StringReplace($eEinnahmenKonto, $eEinnahmenKonto, $month)

    [/autoit] [autoit][/autoit] [autoit]

    $eeinnahmenEdit = GUICtrlGetHandle($einnahmenEdit)
    _GUICtrlEdit_AppendText($eeinnahmenEdit, $eEinnahmenInput & " " & $eEinnahmenEuro & $Komma & $eEinnahmenCent & $Eur & " " & $ChangeeEinahmenKonto & " " & @YEAR & @CRLF)
    ControlSetText("","", $EinnahmenInput, "")
    ControlSetText("","", $EinnahmenEuro, "")
    ControlSetText("","", $EinnahmenCent, "")
    ControlSetText("","", $EinnahmenKonto, "")
    Else
    $eeinnahmenEdit = GUICtrlGetHandle($einnahmenEdit)
    _GUICtrlEdit_AppendText($eeinnahmenEdit, $eEinnahmenInput & " " & $eEinnahmenEuro & $Komma & $eEinnahmenCent & $Eur & " " & $eEinnahmenKonto & " " & @YEAR & @CRLF)
    ControlSetText("","", $EinnahmenInput, "")
    ControlSetText("","", $EinnahmenEuro, "")
    ControlSetText("","", $EinnahmenCent, "")
    ControlSetText("","", $EinnahmenKonto, "")
    EndIf
    EndIf
    Case $beenden
    Exit
    Case $save
    ; Text Datei werden mit dem Inhalt der Edit Boxen befüllt
    $VersicherungenEditOutput = GUICtrlRead($VersicherungenEdit)
    $EinkaufEditOutput = GUICtrlRead($EinkaufEdit)
    $einnahmenEditOutput = GUICtrlRead($einnahmenEdit)
    FileWrite($versicherungenOutput, $VersicherungenEditOutput)
    If @error = 0 Then
    $EVersicherungen = "0"
    ControlSetText("","", $VersicherungenEdit, "")
    Else
    $EVersicherungen = "1"
    EndIf
    ; MsgBox(0, "", @error)
    FileWrite($einkaufOutput, $EinkaufEditOutput)
    If @error = 0 Then
    $EEinkauf = "0"
    ControlSetText("","", $EinkaufEdit, "")
    Else
    $EEinkauf = "1"
    EndIf
    FileWrite($einnahmenOutput, $einnahmenEditOutput)
    If @error = 0 Then
    $eeinnahmen = "0"
    ControlSetText("","", $einnahmenEdit, "")
    Else
    $eeinnahmen = "1"
    EndIf
    If $EVersicherungen = "0" And $EEinkauf = "0" And $eeinnahmen = "0" Then
    MsgBox(0, "Information", "Alle Daten wurden erfolgreich gespeichert", 5)
    Else
    MsgBox(16, "Warnung", "Beim Speichern ist ein Fehler aufgetreten.", 5)
    EndIf
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ; Anfang der Funktionen

    [/autoit] [autoit][/autoit] [autoit]

    ; Die Einnahmen werden im Reiter Statistik angezeigt
    Func gehalt($einnahmenOutput)
    Local $countlines = _FileCountLines($einnahmenOutput)
    Local $file = FileOpen($einnahmenOutput, 0)
    Local $viewEinahmen = 0

    [/autoit] [autoit][/autoit] [autoit]

    ; Check if file opened for reading OK
    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $countlines > 0 Then
    ; Read in lines of text until the EOF is reached

    [/autoit] [autoit][/autoit] [autoit]

    ;MsgBox(64, "", $countlines)
    For $i = 1 To $countlines Step 1
    $line = FileReadLine($file, $i)
    $searchDate = StringInStr($line, $month & " " & @YEAR)
    $searchWord = StringInStr($line, "monatlich" & " " & @YEAR)
    If $line <> '' Then
    IF $searchDate Or $searchWord Then
    $array = StringSplit($line, " ")
    If IsArray($array) And $array[0] >= 2 Then
    $viewEinahmen += $array[2]
    EndIf
    EndIf
    EndIf
    Next
    ;~ Else
    ;~ $line = FileReadLine($file)
    ;~ $betrag = StringSplit($line, " ")
    ;~ GUICtrlCreateLabel($betrag[2], 260, 107, 100, 17)
    EndIf
    FileClose($file)
    ; MsgBox(64,"", $viewEinahmen)
    $BetragEinnahmen = GUICtrlCreateLabel($viewEinahmen & $Eur, 260, 107, 150, 17)
    ;~ GUICtrlSetData($BetragEinnahmen, $viewEinahmen & $Eur)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ; Die Die Ausgaben werden im Reiter Statistik angezeigt
    Func Ausgaben($einkaufOutput)
    Local $countlines = _FileCountLines($einkaufOutput)
    Local $file = FileOpen($einkaufOutput, 0)
    Local $BetragEinnahmen
    Local $viewAusgaben

    [/autoit] [autoit][/autoit] [autoit]

    ; Check if file opened for reading OK
    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $countlines > 0 Then
    ; Read in lines of text until the EOF is reached

    [/autoit] [autoit][/autoit] [autoit]

    ; MsgBox(64, "", $countlines)
    For $i = 1 To $countlines Step 1
    $line = FileReadLine($file, $i)
    ;~ MsgBox(64, "", $line)
    $searchMonth = StringInStr($line, "." & @MON & "." & @YEAR)
    If $line <> '' Then
    If $searchMonth Then
    $array = StringSplit($line, " ")
    If IsArray($array) And $array[0] >= 2 Then
    $viewAusgaben += $array[3]
    ;~ MsgBox(64, "", $array[3])
    EndIf
    EndIf
    EndIf
    Next
    FileClose($file)

    [/autoit] [autoit][/autoit] [autoit]

    If $BetragEinnahmen <> '' Then
    GUICtrlSetData($BetragEinnahmen, $viewAusgaben)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $BetragEinnahmen = GUICtrlCreateLabel($viewAusgaben & $Eur, 260, 143, 150, 17)
    ;~ GUICtrlSetData($BetragEinnahmen, $viewAusgaben)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc
    ; Ende der Funktionen

    [/autoit]

    Wie kann ich mein Vorhaben verwirklichen?

    Danke schon mal für eure Hilfe!

    0cool

    Gut das fragen nichts kostet :)

    4 Mal editiert, zuletzt von 0cool (10. Juli 2012 um 13:20)

    • Offizieller Beitrag

    Ich blicke zwar nicht wirklich durch, aber habe einige Fehler gefunden.
    1. Deine Tabs werden nicht korrekt abgeschlossen. Am Ende der Tab sollte das stehen:

    [autoit]

    GUICtrlCreateTabItem("") ; Beendet die Tab Definition

    [/autoit]


    2. Dein Labelfehler entsteht, da du immer wieder ein neues erstellst, anstatt mittel GUICtrlSetData den Wert zu setzen.
    Wenn du nicht vor dem erstellen des Labels auf einen Tab umschaltest, wird dieser in allen Tabs erstellt.
    Umschalten auf den Tab funzt so:

    [autoit]

    GUISwitch ($Form1, $TabStatistik )

    [/autoit]


    Wenn nach dem switchen ein Control erstellt wird, so ist diese auch nur auf dem gewählten Tab sichtbar.
    Aber ständig ein Control neu erstellen ist die falsche Lösung und wenn schon neu erstellen, dann vorher das alte löschen.

    [autoit]

    GUICtrlDelete

    [/autoit]
  • Hallo Raupi,

    danke für deine Antwort. Ich bin noch neuling in AutoIt und in der Grafischen Programmierung (Skripting).
    Deine Antwort hat mir sehr geholfen. Mein vorhaben hab ich hinbekommen.
    Den Abschluss des Tabs hab ich natürlich gleich eingebaut.

    Meine Vorgehensweise:
    Das Label wird im TabControl erstellt. Über GUIctrlSetData wird der Wert des Labels beim aufruf der Funktion aktualisiert.

    Mein jetziger Code sieht so aus:

    Spoiler anzeigen
    [autoit]


    #comments-start
    Skrit-Name: Haushaltsbuch.exe
    Erstellt am: 22.06.2012
    Fuunktion: Erfassung der Einahmen und Ausgabe im Haushalt
    #########################################################
    #comments-end

    [/autoit] [autoit][/autoit] [autoit]

    ; Bibliotheken einbinden
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIEdit.au3>
    #include <string.au3>
    #include <GDIPlus.au3>
    #include <Date.au3>
    #include <DateTimeConstants.au3>
    #include <GuiTab.au3>
    #include <file.au3>
    #include <array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; Constante werden definiert
    Const $versicherungenOutput = @ScriptDir & "\data\versicherungen.txt"
    Const $einkaufOutput = @ScriptDir & "\data\Einkaeufe.txt"
    Const $einnahmenOutput = @ScriptDir & "\data\einnahmen.txt"

    [/autoit] [autoit][/autoit] [autoit]

    ; Variable werden definiert
    ;~ Anfang Tab Ausgaben
    $abbuchung = ""
    $abbuchung1 = "Monatlich|jeden 2. Monat|jeden 3. Monat|jeden halbe Jahr|jährlich"
    $versicherung = ""
    $versicherung1 = "VDVA|BKK Pfalz|inter|Volkswohlbund|LV|DEVK"
    $laden = ""
    $laden1 = "Lidl|Edeka|Netto|Kauland|Hornbach|Russischer Laden|Real|Aldi|Penny|Rewe|Metzger|Tanken|Gärtner|Auto|Post"
    $bezahlen = ""
    $bezahlen1 = "Bar|EC|Visa|Master Card"
    $einkaufsart = ""
    $einkaufsart1 = "Lebensmittel|Anderes"
    $add = "Hinzufügen"
    ;~ Ende Tab Aufgaben | Anfang Tab Einnahmen
    $ComboEinnahmen = ""
    $ComboEinnahmen1 = "Spirit21|Computer_Hilfe|Andere"
    $ComboEinzahlung = ""
    $ComboEinzahlung1 = "Monatlich|Einmahlig"
    ;~ Ende Tab Einnahmen | Anfang Tab Statistik
    $viewEinahmen = "0"
    $viewAusgaben = "0"
    ;~ Ende Tab Statistik | Anfang Allgemen Variable
    $month = _DateToMonth(@MON, 1)
    $Eur = " €"
    $Komma = "."
    $font = "Arial"
    $sw = "Haushaltsbuch"
    $ver = "1.7"

    [/autoit] [autoit][/autoit] [autoit]

    ; Anfang der GUI
    $Form1 = GUICreate($sw & " " & $ver, 780, 559, 192, 114)
    GUISetFont(16, 400 , 4, $font)
    $Ueberschrift = GUICtrlCreateLabel($sw & " " & $ver, 300, 24, 170, 25)
    GUISetFont(10, 400, $font)
    $Ausgaben = GUICtrlCreateButton("Ausgaben", 16, 83, 89, 25)
    $Einnahmen = GUICtrlCreateButton("Einnahmen", 16, 113, 89, 25)
    $Statistik = GUICtrlCreateButton("Statistik", 16, 143, 89, 25)

    [/autoit] [autoit][/autoit] [autoit]

    $Tab = GUICtrlCreateTab(120, 59, 655,455)
    $TabAusgaben = GUICtrlCreateTabItem("Ausgaben")
    ; Anfang des Teils Versicherungen
    GUICtrlCreateLabel("Name",270, 85, 100, 25)
    GUICtrlCreateLabel("Versicherungs-NR", 360, 85, 115, 25)
    GUICtrlCreateLabel("Betrag", 495, 85, 100, 25)
    GUICtrlCreateLabel("Abbuchung", 585, 85, 100,25)
    $Versichungen = GUICtrlCreateLabel("Versicherungen:", 128, 107, 100, 17)
    $VersicherungenInput = GUICtrlCreateCombo($versicherung, 225, 105, 121, 21)
    GUICtrlSetData(-1, $versicherung1, $versicherung)
    $VersicherungsNR = GUICtrlCreateInput("", 353, 105, 121, 24)
    $VersicherungenEuro = GUICtrlCreateInput("", 480, 105, 35, 24, $ES_Number)
    GUICtrlSetLimit($VersicherungenEuro, 3, 1)
    GUICtrlCreateLabel($Komma, 515, 114, 10, 24)
    $VersicherungenCent = GUICtrlCreateInput("", 520, 105, 30, 24, $ES_Number)
    GUICtrlSetLimit($VersicherungenCent, 2, 1)
    GUICtrlCreateLabel($Eur, 550, 107, 13, 21)
    $VersicherungenAbbuchung = GUICtrlCreateCombo($abbuchung, 570, 105, 100, 21)
    GUICtrlSetData(-1, $abbuchung1, $abbuchung)
    $VHinzufuegen = GUICtrlCreateButton($add, 675, 105, 90, 24)
    $VersicherungenEdit = GUICtrlCreateEdit("", 128,135, 542,100)
    ; Ende des Teils Versicherungen und Anfang des Teils Einkauf
    GUICtrlCreateLabel("Datum",200, 260, 300, 25)
    GUICtrlCreateLabel("Laden", 300, 260, 115, 25)
    GUICtrlCreateLabel("Betrag", 400, 260, 100, 25)
    GUICtrlCreateLabel("Bezahlart", 490, 260, 100,25)
    GUICtrlCreateLabel("Bereich", 600, 260, 100,25)
    $Einkauf = GUICtrlCreateLabel("Einkauf:", 128, 285, 100, 17)
    $date = GUICtrlCreateDate("Datum", 177, 280, 85, 24, $DTS_SHORTDATEFORMAT)
    $EinkaufLaden = GUICtrlCreateCombo($laden, 265, 280, 113, 21)
    GUICtrlSetData(-1, $laden1, $laden)
    $LadenEuro = GUICtrlCreateInput("", 385, 280, 35, 24, $ES_Number)
    GUICtrlSetLimit($LadenEuro, 3, 1)
    GUICtrlCreateLabel($Komma, 420, 290, 10, 24)
    $LadenCent = GUICtrlCreateInput("", 425, 280, 30, 24, $ES_Number)
    GUICtrlSetLimit($LadenCent, 2, 1)
    GUICtrlCreateLabel($Eur, 455, 283, 13, 21)
    $EinkaufBezahlen = GUICtrlCreateCombo($bezahlen, 470, 280, 100, 21)
    GUICtrlSetData(-1, $bezahlen1, $bezahlen)
    $EinkaufArt = GUICtrlCreateCombo($einkaufsart, 573, 280, 97, 21)
    GUICtrlSetData(-1, $einkaufsart1, $einkaufsart)
    $EHinzufuegen = GUICtrlCreateButton($add, 675, 280, 90, 24)
    $EinkaufEdit = GUICtrlCreateEdit("", 128,310,542,195)
    ;~ ; Ende des Teils Einkauf Anfang des Teils Einnahmen
    $TabEinnahmen = GUICtrlCreateTabItem("Einnahmen")
    GUICtrlCreateLabel("Name",270, 85, 100, 25)
    GUICtrlCreateLabel("Betrag", 360, 85, 115, 25)
    GUICtrlCreateLabel("Einahme", 450, 85, 100,25)
    $EinnahmenInput = GUICtrlCreateCombo($ComboEinnahmen, 225, 105, 121, 21)
    GUICtrlSetData(-1, $ComboEinnahmen1, $ComboEinnahmen)
    $EinnahmenEuro = GUICtrlCreateInput("", 351, 105, 40, 24, $ES_Number)
    GUICtrlSetLimit($EinnahmenEuro, 4, 1)
    GUICtrlCreateLabel($Komma, 390, 115, 10, 24)
    $EinnahmenCent = GUICtrlCreateInput("", 395, 105, 30, 24, $ES_Number)
    GUICtrlSetLimit($EinnahmenCent, 2, 1)
    GUICtrlCreateLabel($Eur, 421, 107, 13, 21)
    $EinnahmenKonto = GUICtrlCreateCombo($ComboEinzahlung, 436, 105, 85, 21)
    GUICtrlSetData(-1, $ComboEinzahlung1, $ComboEinzahlung)
    $EinnahmenHinzufuegen = GUICtrlCreateButton($add, 675, 105, 90, 24)
    $einnahmenEdit = GUICtrlCreateEdit("", 128,135, 542,100)
    GUICtrlCreateLabel("Einnahmen:", 128, 107, 100, 17)
    ; Ende des Teils Einnahmen Anfang des Teils Statistik
    $TabStatistik = GUICtrlCreateTabItem("Statistik")
    $StatistikEinnahmen = GUICtrlCreateLabel("Einnahmen im " & $month & ":", 128, 107, 129, 17)
    $BetragEinnahmen = GUICtrlCreateLabel($viewEinahmen & $Eur, 260, 107, 100, 17)
    gehalt($einnahmenOutput, $BetragEinnahmen)
    $StatistikAusgaben = GUICtrlCreateLabel("Ausgaben im " & $month & ":", 128, 143, 129 ,17)
    $BetragAusgaben = GUICtrlCreateLabel($viewAusgaben & $Eur, 260, 143, 150, 17)
    Ausgaben($einkaufOutput, $BetragAusgaben)
    $StatistikAkualisieren = GUICtrlCreateButton("Aktualisieren", 665, 483, 100, 21)
    GUICtrlCreateTabItem("")
    $save = GUICtrlCreateButton("Speichern", 705, 525, 70, 25)
    $beenden = GUICtrlCreateButton("Beenden", 630, 525, 70, 25)
    $hWnd = WinGetHandle($Form1)
    GUISetState(@SW_SHOW)
    ; Ende der GUI

    [/autoit] [autoit][/autoit] [autoit]

    ; In der While Schleife werden Aktionen ausgeführt
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Ausgaben
    GUICtrlSetState($TabAusgaben, $GUI_Show)
    Case $Einnahmen
    GUICtrlSetState($TabEinnahmen, $GUI_Show)
    case $Statistik
    GUICtrlSetState($TabStatistik, $GUI_Show)
    Case $StatistikAkualisieren
    GUISwitch($Form1, $TabStatistik)
    GUISetState()
    gehalt($einnahmenOutput, $BetragEinnahmen)
    Ausgaben($einkaufOutput, $BetragAusgaben)
    Case $VHinzufuegen
    Local $VEdit = GUICtrlRead($VersicherungenInput)
    Local $VNR = GUICtrlRead($VersicherungsNR)
    Local $VBEuro = GUICtrlRead($VersicherungenEuro)
    Local $VBCent = GUICtrlRead($VersicherungenCent)
    Local $VAbbuchung = GUICtrlRead($VersicherungenAbbuchung)

    [/autoit] [autoit][/autoit] [autoit]

    ; Es wird geprüft ob in das Input Feld $VBetrag wirklich ein Betrag eingetragen wurde
    If $VEdit = "" Or $VBEuro = "" Or $VBCent = "" Or $VNR = "" Or $VAbbuchung = "" Then
    MsgBox(16, "Warnung", "Es wurden nicht alle Eingaben gemacht", 5)
    Else
    $VHEdit = GUICtrlGetHandle($VersicherungenEdit)
    _GUICtrlEdit_AppendText($VHEdit, $VEdit & " " & $VNR & " " & $VBEuro & $Komma & $VBCent & $Eur & " " & $VAbbuchung & @CRLF)
    ControlSetText("","", $VersicherungenInput, "")
    ControlSetText("","", $VersicherungsNR, "")
    ControlSetText("","", $VersicherungenEuro, "")
    ControlSetText("","", $VersicherungenCent, "")
    ControlSetText("","", $VersicherungenAbbuchung, "")
    EndIf
    Case $EHinzufuegen
    Local $edate = GUICtrlRead($date)
    Local $eEinkaufLaden = GUICtrlRead($EinkaufLaden)
    Local $eLadenEuro = GUICtrlRead($LadenEuro)
    Local $eLadenCent = GUICtrlRead($LadenCent)
    Local $eEinkaufBezahlen = GUICtrlRead($EinkaufBezahlen)
    Local $eEinkaufArt = GUICtrlRead($EinkaufArt)

    [/autoit] [autoit][/autoit] [autoit]

    ; Es wird geprüft ob alle Felder für den Einkauf ausgefüllt wurden
    If $edate = "" Or $eEinkaufLaden = "" Or $eLadenEuro = "" Or $eLadenCent = "" Or $eEinkaufBezahlen = "" Or $eEinkaufArt = "" Then
    MsgBox(16, "Warnung", "Es wurden nicht alle Eingaben gemacht", 5)
    Else
    $eEdit = GUICtrlGetHandle($EinkaufEdit)
    _GUICtrlEdit_AppendText($eEdit, $edate & " " & $eEinkaufLaden & " " & $eLadenEuro & $Komma & $eLadenCent & $Eur & " " & $eEinkaufBezahlen & " " & $eEinkaufArt & @CRLF)
    ControlSetText("","", $EinkaufLaden, "")
    ControlSetText("","", $LadenEuro, "")
    ControlSetText("","", $LadenCent, "")
    ControlSetText("","", $EinkaufBezahlen, "")
    ControlSetText("","", $EinkaufArt, "")
    EndIf
    case $EinnahmenHinzufuegen
    Local $eEinnahmenInput = GUICtrlRead($EinnahmenInput)
    Local $eEinnahmenEuro = GUICtrlRead($EinnahmenEuro)
    Local $eEinnahmenCent = GUICtrlRead($EinnahmenCent)
    Local $eEinnahmenKonto = GUICtrlRead($EinnahmenKonto)

    [/autoit] [autoit][/autoit] [autoit]

    ; Es wird geprüft ob alle Felder der Einnahmen augefüllt wurden
    If $eEinnahmenInput = "" Or $eEinnahmenEuro = "" Or $eEinnahmenCent = "" Or $eEinnahmenKonto = "" Then
    MsgBox(16, "Warnung", "Es wurden nicht alle Eingaben gemacht", 5)
    Else
    ; Es wird geprüft ob die Variable $eEinnahmenKonto den Wert Einmahlig besitzt. Sollte das der Fall sein,
    ; wird der Wert in den aktuellen Monat im Zahlen Format geändert.
    $search = StringInStr($eEinnahmenKonto, "Einmahlig")
    If $search Then
    $ChangeeEinahmenKonto = StringReplace($eEinnahmenKonto, $eEinnahmenKonto, $month)

    [/autoit] [autoit][/autoit] [autoit]

    $eeinnahmenEdit = GUICtrlGetHandle($einnahmenEdit)
    _GUICtrlEdit_AppendText($eeinnahmenEdit, $eEinnahmenInput & " " & $eEinnahmenEuro & $Komma & $eEinnahmenCent & $Eur & " " & $ChangeeEinahmenKonto & " " & @YEAR & @CRLF)
    ControlSetText("","", $EinnahmenInput, "")
    ControlSetText("","", $EinnahmenEuro, "")
    ControlSetText("","", $EinnahmenCent, "")
    ControlSetText("","", $EinnahmenKonto, "")
    Else
    $eeinnahmenEdit = GUICtrlGetHandle($einnahmenEdit)
    _GUICtrlEdit_AppendText($eeinnahmenEdit, $eEinnahmenInput & " " & $eEinnahmenEuro & $Komma & $eEinnahmenCent & $Eur & " " & $eEinnahmenKonto & " " & @YEAR & @CRLF)
    ControlSetText("","", $EinnahmenInput, "")
    ControlSetText("","", $EinnahmenEuro, "")
    ControlSetText("","", $EinnahmenCent, "")
    ControlSetText("","", $EinnahmenKonto, "")
    EndIf
    EndIf
    Case $beenden
    Exit
    Case $save
    ; Text Datei werden mit dem Inhalt der Edit Boxen befüllt
    $VersicherungenEditOutput = GUICtrlRead($VersicherungenEdit)
    $EinkaufEditOutput = GUICtrlRead($EinkaufEdit)
    $einnahmenEditOutput = GUICtrlRead($einnahmenEdit)
    FileWrite($versicherungenOutput, $VersicherungenEditOutput)
    If @error = 0 Then
    $EVersicherungen = "0"
    ControlSetText("","", $VersicherungenEdit, "")
    Else
    $EVersicherungen = "1"
    EndIf
    ; MsgBox(0, "", @error)
    FileWrite($einkaufOutput, $EinkaufEditOutput)
    If @error = 0 Then
    $EEinkauf = "0"
    ControlSetText("","", $EinkaufEdit, "")
    Else
    $EEinkauf = "1"
    EndIf
    FileWrite($einnahmenOutput, $einnahmenEditOutput)
    If @error = 0 Then
    $eeinnahmen = "0"
    ControlSetText("","", $einnahmenEdit, "")
    Else
    $eeinnahmen = "1"
    EndIf
    If $EVersicherungen = "0" And $EEinkauf = "0" And $eeinnahmen = "0" Then
    MsgBox(0, "Information", "Alle Daten wurden erfolgreich gespeichert", 5)
    Else
    MsgBox(16, "Warnung", "Beim Speichern ist ein Fehler aufgetreten.", 5)
    EndIf
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ; Anfang der Funktionen

    [/autoit] [autoit][/autoit] [autoit]

    ; Die Einnahmen werden im Reiter Statistik angezeigt
    Func gehalt($einnahmenOutput, $BetragEinnahmen)
    Local $countlines = _FileCountLines($einnahmenOutput)
    Local $file = FileOpen($einnahmenOutput, 0)
    Local $viewEinahmen = 0

    [/autoit] [autoit][/autoit] [autoit]

    ; Check if file opened for reading OK
    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $countlines > 0 Then
    ; Read in lines of text until the EOF is reached

    [/autoit] [autoit][/autoit] [autoit]

    ;MsgBox(64, "", $countlines)
    For $i = 1 To $countlines Step 1
    $line = FileReadLine($file, $i)
    $searchDate = StringInStr($line, $month & " " & @YEAR)
    $searchWord = StringInStr($line, "monatlich" & " " & @YEAR)
    If $line <> '' Then
    IF $searchDate Or $searchWord Then
    $array = StringSplit($line, " ")
    If IsArray($array) And $array[0] >= 2 Then
    $viewEinahmen += $array[2]
    EndIf
    EndIf
    EndIf
    Next
    ;~ Else
    ;~ $line = FileReadLine($file)
    ;~ $betrag = StringSplit($line, " ")
    ;~ GUICtrlCreateLabel($betrag[2], 260, 107, 100, 17)
    EndIf
    FileClose($file)
    ; MsgBox(64,"", $viewEinahmen)
    ;~ $BetragEinnahmen = GUICtrlCreateLabel($viewEinahmen & $Eur, 260, 107, 150, 17)
    GUICtrlSetData($BetragEinnahmen, $viewEinahmen & $Eur)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ; Die Die Ausgaben werden im Reiter Statistik angezeigt
    Func Ausgaben($einkaufOutput, $BetragAusgaben)
    Local $countlines = _FileCountLines($einkaufOutput)
    Local $file = FileOpen($einkaufOutput, 0)
    ;~ Local $BetragEinnahmen
    Local $viewAusgaben

    [/autoit] [autoit][/autoit] [autoit]

    ; Check if file opened for reading OK
    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $countlines > 0 Then
    ; Read in lines of text until the EOF is reached

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $countlines Step 1
    $line = FileReadLine($file, $i)
    ;~ MsgBox(64, "", $line)
    $searchMonth = StringInStr($line, "." & @MON & "." & @YEAR)
    If $line <> '' Then
    If $searchMonth Then
    $array = StringSplit($line, " ")
    If IsArray($array) And $array[0] >= 2 Then
    $viewAusgaben += $array[3]
    ;~ MsgBox(64, "", $array[3])
    EndIf
    EndIf
    EndIf
    Next
    EndIf
    FileClose($file)

    [/autoit] [autoit][/autoit] [autoit]

    ; Der Aktuelle Betrag der gesamten Ausgaben im gesamten Monat wird angezeigt.
    GUICtrlSetData($BetragAusgaben, $viewAusgaben)
    EndFunc
    ; Ende der Funktionen

    [/autoit]


    Falls du weitere verbesserungsvorschläge hast bin ich gerne zu. Wie schon gesagt ich bin ein Neuling in AutoIt :)

    Gruß

    0cool

    Gut das fragen nichts kostet :)