Mondkalenderrechner

  • Hallo zusammen,
    ich hab hier ein kleines Script gemacht, mit welchem sich Jahreszahlen vom Gregorianischen zum Mondkalender umrechnen lassen.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    ;~ Autor: Vinschni
    $Form1_1 = GUICreate("Mondkalenderrechner 1.0", 371, 171, 193, 115)
    GUISetBkColor(0xA0A0A4)
    $Label1 = GUICtrlCreateLabel("Jahr im Gregorianischen Kalender", 8, 8, 162, 17)
    GUICtrlSetBkColor(-1, 0xA0A0A4)
    $Gregorianzahlinput = GUICtrlCreateInput("", 8, 24, 169, 21)
    $Label2 = GUICtrlCreateLabel("Jahr im Islamischen/Mondkalender", 8, 56, 168, 17)
    GUICtrlSetBkColor(-1, 0xA0A0A4)
    $Mondzahlinput= GUICtrlCreateInput("", 8, 72, 169, 21)
    $Ergebnisanzeige = GUICtrlCreateEdit("", 184, 56, 169, 73, $ES_AUTOVSCROLL + $WS_VSCROLL+ $ES_READONLY)
    $Umrechnen = GUICtrlCreateButton("Umrechnen", 8, 104, 169, 25, 0)
    $Checkbox1 = GUICtrlCreateCheckbox("Exakte Werte ausgeben", 184, 24, 145, 25)
    GUICtrlSetBkColor(-1, 0xA0A0A4)
    $MenuItem1 = GUICtrlCreateMenu("&Datei")
    $Beenden = GUICtrlCreateMenuItem("Beenden", $MenuItem1)
    $MenuItem4 = GUICtrlCreateMenu("&Info")
    $Hilfe = GUICtrlCreateMenuItem("Hilfe", $MenuItem4)
    $Info= GUICtrlCreateMenuItem("Info", $MenuItem4)
    GUISetState(@SW_SHOW)

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

    While 1
    $msg = GuiGetMsg()
    Select

    Case $msg = $Umrechnen
    eingabeprufen()

    Case $msg = $Beenden
    Exit

    Case $msg = $Hilfe
    MsgBox(0, "Hilfe", "Der Mondkalenderrechner dient dazu Jahreszahlen aus dem Mondkalender(oder Islamischen Kalender) in den Gregorianischen Kalender(oder Christlichen Kalender) umzuwandeln und umgekehrt." & @CRLF & @CRLF & "Wenn sie eine Jahreszahl aus dem Mondkalender in eine des Gregorianischen Kalenders umwandeln möchten" & @CRLF &"geben sie die bekannte Jahreszahl des Mondkalenders im dazugehörigen Eingabefeld ein" & @CRLF & "und klicken dann auf <Umrechnen>. Genauso müssen sie verfahren wenn die eine Jahreszahl des Gregorianischen Kalendern in eine des Mondkalenders umrechnen wollen." & @CRLF & @CRLF & "Unter <Optionen> können sie einstellen dass die ungerundeten Näherungswerte ausgegeben werden," & @CRLF & "wie sie vom Programm errechnet wurden.")

    Case $msg = $Info
    MsgBox(64, "Info", "Beschreibung: Der Mondkalenderrechner dient dazu Jahreszahlen aus dem Mondkalender(oder Islamischen Kalender)" & @CRLF & " in den Gregorianischen Kalender(oder Christlichen Kalender) umzuwandeln und umgekehrt." & @CRLF & @CRLF & "Autor: Vinschni")

    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case Else

    EndSelect
    WEnd
    Exit

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

    Func eingabeprufen()
    If GUICtrlRead($Mondzahlinput) <> "" and GUICtrlRead($Gregorianzahlinput) <> "" Then
    MsgBox(16,"Error", "Bitte geben sie nur in ein Jahreszahlenfeld eine Jahreszahl ein !")
    ElseIf GUICtrlRead($Mondzahlinput) <> "" and GUICtrlRead($Gregorianzahlinput) = "" Then
    JahrumrechnenMondzuGregorian()
    ElseIf GUICtrlRead($Gregorianzahlinput) <> "" and GUICtrlRead($Mondzahlinput) = "" Then
    JahrumrechnenGregorianzuMond()
    EndIf

    EndFunc

    Func JahrumrechnenMondzuGregorian()
    GUICtrlSetData($Ergebnisanzeige,"")
    $Monddat = GUICtrlRead($Mondzahlinput)
    $Gregoriandatergebnis = Number($Monddat*32/33+622)
    If $Monddat = "0" Then
    GUICtrlSetData($Ergebnisanzeige, $Monddat & " korrospondiert mit dem Jahr: " & $Gregoriandatergebnis & " im Gregorianischen Kalender.")
    ElseIf $Gregoriandatergebnis = "622" and $Monddat <> "0" Then
    MsgBox(16, "Error", "Die von ihnen eingegebene Zeichenkette ist keine Jahreszahl!")
    Else
    If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then
    ElseIf GUICtrlRead($Checkbox1) = $GUI_UNCHECKED Then
    $Gregoriandatergebnis = Round($Gregoriandatergebnis,0)
    EndIf
    GUICtrlSetData($Ergebnisanzeige, "Das Jahr " & $Monddat & " im Mondkalender korrospondiert mit dem Jahr " & $Gregoriandatergebnis & " im Gregorianischen Kalender.")
    EndIf

    EndFunc

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

    Func JahrumrechnenGregorianzuMond()
    GUICtrlSetData($Ergebnisanzeige,"")
    $Gregoriandat = GUICtrlRead($Gregorianzahlinput)
    $Monddatergebnis= Number(33/32*($Gregoriandat-622))
    If $Gregoriandat = "0" Then
    GUICtrlSetData($Ergebnisanzeige, $Gregoriandat & " korrospondiert mit dem Jahr: " & $Monddatergebnis & " im Gregorianischen Kalender.")
    ElseIf $Monddatergebnis = "622" and $Gregoriandat <> "0" Then
    MsgBox(16, "Error", "Die von ihnen eingegebene Zeichenkette ist keine Jahreszahl!")
    ElseIf $Monddatergebnis = "-641.4375 " and GUICtrlRead($Gregorianzahlinput) <> "0" Then
    MsgBox(16, "Error", "Die von ihnen eingegebene Zeichenkette ist keine Jahreszahl!")
    Else

    If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then
    ElseIf GUICtrlRead($Checkbox1) = $GUI_UNCHECKED Then
    $Monddatergebnis = Round($Monddatergebnis,0)
    EndIf
    If $Monddatergebnis < 622 Then
    MsgBox(48,"Meldung", "Das von ihnen nach dem Gregorianischen Kalender eingegebene Jahr liegt vor der islamischen Zeitrechnung" & @CRLF & "und wird deshalb mit einem Minus dargestellt!")
    GUICtrlSetData($Ergebnisanzeige, "Das Jahr " &$Gregoriandat & " korrospondiert mit dem Jahr " & $Monddatergebnis & " im Gregorianischen Kalender.")
    EndIf
    GUICtrlSetData($Ergebnisanzeige, "Das Jahr " & $Gregoriandat & " im Mondkalender korrospondiert mit dem Jahr " & $Monddatergebnis & " im Gregorianischen Kalender.")

    EndIf
    EndFunc

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


    EDIT: Ich hätte noch eine Frage, ich wollte die CHECKBOX weglassen, und dafür einen Menüunterpunkt erstellen, den man checken und unchecken kann. Leider klappt es nich wenn ich ihn abfragen will. Man kann ihn auch nicht einfach checken oder unchecken, wie man es bei eine CHECKBOX kann wenn man die GUI startet. Wie mach ich das am besten?

    Grüße Vinschni

    Einmal editiert, zuletzt von Vinschni (20. Januar 2007 um 19:05)

  • Hallo,
    hier habe ich versucht Deine Frage nachzubilden:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    ;~ Autor: Vinschni
    $Form1_1 = GUICreate("Mondkalenderrechner 1.0", 371, 171, 193, 115)
    GUISetBkColor(0xA0A0A4)
    $Label1 = GUICtrlCreateLabel("Jahr im Gregorianischen Kalender", 8, 8, 162, 17)
    GUICtrlSetBkColor(-1, 0xA0A0A4)
    $Gregorianzahlinput = GUICtrlCreateInput("", 8, 24, 169, 21)
    $Label2 = GUICtrlCreateLabel("Jahr im Islamischen/Mondkalender", 8, 56, 168, 17)
    GUICtrlSetBkColor(-1, 0xA0A0A4)
    $Mondzahlinput= GUICtrlCreateInput("", 8, 72, 169, 21)
    $Ergebnisanzeige = GUICtrlCreateEdit("", 184, 56, 169, 73, $ES_AUTOVSCROLL + $WS_VSCROLL+ $ES_READONLY)
    $Umrechnen = GUICtrlCreateButton("Umrechnen", 8, 104, 169, 25, 0)
    ;;$Checkbox1 = GUICtrlCreateCheckbox("Exakte Werte ausgeben", 184, 24, 145, 25)
    GUICtrlSetBkColor(-1, 0xA0A0A4)
    $MenuItem1 = GUICtrlCreateMenu("&Datei")
    $ExakteWerte = GUICtrlCreateMenuitem("Exakte Werte Ausgeben",$MenuItem1)
    $Beenden = GUICtrlCreateMenuItem("Beenden", $MenuItem1)
    $MenuItem4 = GUICtrlCreateMenu("&Info")
    $Hilfe = GUICtrlCreateMenuItem("Hilfe", $MenuItem4)
    $Info= GUICtrlCreateMenuItem("Info", $MenuItem4)
    GUISetState(@SW_SHOW)

    While 1
    $msg = GuiGetMsg()
    Select

    Case $msg = $Umrechnen
    eingabeprufen()

    Case $msg = $Beenden
    Exit

    Case $msg = $Hilfe
    MsgBox(0, "Hilfe", "Der Mondkalenderrechner dient dazu Jahreszahlen aus dem Mondkalender(oder Islamischen Kalender) in den Gregorianischen Kalender(oder Christlichen Kalender) umzuwandeln und umgekehrt." & @CRLF & @CRLF & "Wenn sie eine Jahreszahl aus dem Mondkalender in eine des Gregorianischen Kalenders umwandeln möchten" & @CRLF &"geben sie die bekannte Jahreszahl des Mondkalenders im dazugehörigen Eingabefeld ein" & @CRLF & "und klicken dann auf <Umrechnen>. Genauso müssen sie verfahren wenn die eine Jahreszahl des Gregorianischen Kalendern in eine des Mondkalenders umrechnen wollen." & @CRLF & @CRLF & "Unter <Optionen> können sie einstellen dass die ungerundeten Näherungswerte ausgegeben werden," & @CRLF & "wie sie vom Programm errechnet wurden.")

    Case $msg = $Info
    MsgBox(64, "Info", "Beschreibung: Der Mondkalenderrechner dient dazu Jahreszahlen aus dem Mondkalender(oder Islamischen Kalender)" & @CRLF & " in den Gregorianischen Kalender(oder Christlichen Kalender) umzuwandeln und umgekehrt." & @CRLF & @CRLF & "Autor: Vinschni")

    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $ExakteWerte
    GUICtrlSetState($ExakteWerte,3*BitAnd(GUICtrlRead($ExakteWerte),$GUI_CHECKED)+1)
    Case Else

    EndSelect
    WEnd
    Exit

    Func eingabeprufen()
    If GUICtrlRead($Mondzahlinput) <> "" and GUICtrlRead($Gregorianzahlinput) <> "" Then
    MsgBox(16,"Error", "Bitte geben sie nur in ein Jahreszahlenfeld eine Jahreszahl ein !")
    ElseIf GUICtrlRead($Mondzahlinput) <> "" and GUICtrlRead($Gregorianzahlinput) = "" Then
    JahrumrechnenMondzuGregorian()
    ElseIf GUICtrlRead($Gregorianzahlinput) <> "" and GUICtrlRead($Mondzahlinput) = "" Then
    JahrumrechnenGregorianzuMond()
    EndIf

    EndFunc

    Func JahrumrechnenMondzuGregorian()
    GUICtrlSetData($Ergebnisanzeige,"")
    $Monddat = GUICtrlRead($Mondzahlinput)
    $Gregoriandatergebnis = Number($Monddat*32/33+622)
    If $Monddat = "0" Then
    GUICtrlSetData($Ergebnisanzeige, $Monddat & " korrospondiert mit dem Jahr: " & $Gregoriandatergebnis & " im Gregorianischen Kalender.")
    ElseIf $Gregoriandatergebnis = "622" and $Monddat <> "0" Then
    MsgBox(16, "Error", "Die von ihnen eingegebene Zeichenkette ist keine Jahreszahl!")
    Else
    If BitAND(GUICtrlRead($ExakteWerte),$GUI_CHECKED) Then
    ElseIf BitAND(GUICtrlRead($ExakteWerte),$GUI_UNCHECKED) Then
    $Gregoriandatergebnis = Round($Gregoriandatergebnis,0)
    EndIf
    GUICtrlSetData($Ergebnisanzeige, "Das Jahr " & $Monddat & " im Mondkalender korrospondiert mit dem Jahr " & $Gregoriandatergebnis & " im Gregorianischen Kalender.")
    EndIf

    EndFunc

    Func JahrumrechnenGregorianzuMond()
    GUICtrlSetData($Ergebnisanzeige,"")
    $Gregoriandat = GUICtrlRead($Gregorianzahlinput)
    $Monddatergebnis= Number(33/32*($Gregoriandat-622))
    If $Gregoriandat = "0" Then
    GUICtrlSetData($Ergebnisanzeige, $Gregoriandat & " korrospondiert mit dem Jahr: " & $Monddatergebnis & " im Gregorianischen Kalender.")
    ElseIf $Monddatergebnis = "622" and $Gregoriandat <> "0" Then
    MsgBox(16, "Error", "Die von ihnen eingegebene Zeichenkette ist keine Jahreszahl!")
    ElseIf $Monddatergebnis = "-641.4375 " and GUICtrlRead($Gregorianzahlinput) <> "0" Then
    MsgBox(16, "Error", "Die von ihnen eingegebene Zeichenkette ist keine Jahreszahl!")
    Else
    If BitAND(GUICtrlRead($ExakteWerte),$GUI_CHECKED) Then
    ElseIf BitAND(GUICtrlRead($ExakteWerte),$GUI_UNCHECKED) Then
    $Monddatergebnis = Round($Monddatergebnis,0)
    EndIf
    If $Monddatergebnis < 622 Then
    MsgBox(48,"Meldung", "Das von ihnen nach dem Gregorianischen Kalender eingegebene Jahr liegt vor der islamischen Zeitrechnung" & @CRLF & "und wird deshalb mit einem Minus dargestellt!")
    GUICtrlSetData($Ergebnisanzeige, "Das Jahr " &$Gregoriandat & " korrospondiert mit dem Jahr " & $Monddatergebnis & " im Gregorianischen Kalender.")
    EndIf
    GUICtrlSetData($Ergebnisanzeige, "Das Jahr " & $Gregoriandat & " im Mondkalender korrospondiert mit dem Jahr " & $Monddatergebnis & " im Gregorianischen Kalender.")

    EndIf
    EndFunc

    [/autoit]

    Mfg
    eddy_erpel