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
#comments-start
Skrit-Name: Haushaltsbuch.exe
Ersteller: Thorsten Zelt
Erstellt am: 22.06.2012
Fuunktion: Erfassung der Einahmen und Ausgabe im Haushalt
#########################################################
#comments-end
; 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>
; Constante werden definiert
Const $versicherungenOutput = @ScriptDir & "\data\versicherungen.txt"
Const $einkaufOutput = @ScriptDir & "\data\Einkaeufe.txt"
Const $einnahmenOutput = @ScriptDir & "\data\einnahmen.txt"
; 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"
; 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)
$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
; In der While Schleife werden Aktionen ausgeführt
While 1
; Eine Line zwischen den Versicherungen und der Einkäufen wird gezogen
;~ _GDIPlus_Startup()
;~ $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWnd)
;~ _GDIPlus_GraphicsDrawLine($hGraphics, 128,250,765,250)
$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)
; 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)
; 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)
; 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)
$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
; 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
; Check if file opened for reading OK
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
If $countlines > 0 Then
; Read in lines of text until the EOF is reached
;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)
Local $countlines = _FileCountLines($einkaufOutput)
Local $file = FileOpen($einkaufOutput, 0)
Local $BetragEinnahmen
Local $viewAusgaben
; Check if file opened for reading OK
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
If $countlines > 0 Then
; Read in lines of text until the EOF is reached
; 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)
If $BetragEinnahmen <> '' Then
GUICtrlSetData($BetragEinnahmen, $viewAusgaben)
EndIf
$BetragEinnahmen = GUICtrlCreateLabel($viewAusgaben & $Eur, 260, 143, 150, 17)
;~ GUICtrlSetData($BetragEinnahmen, $viewAusgaben)
EndFunc
; Ende der Funktionen
Wie kann ich mein Vorhaben verwirklichen?
Danke schon mal für eure Hilfe!
0cool