Netzwerk-Essenbestellprogramm

  • Was tut es?
    Döner bzw. Pizzabestellungen annehmen und auf eine .ini Datei auf einem Server schreiben.

    Mit dem Admin-Tool kann man sich die Bestellung(en) eines Nutzers ausgeben und bei Bedarf löschen.
    Alte Updates:

    Spoiler anzeigen

    30.01.13
    Kleines Update
    Fehlerroutinen verbessert und neue hinzugefügt.
    AdminTool.
    Versionen.
    04.02.2013
    Version 4 mitlerweile:
    Kosten hinzugefügt (werden aus der Serverini gelesen)
    Admintool verbessert


    Aktuelles Update:
    Version 5:
    Bugfixes
    Update Programm hinzugefügt welches die Dönerbestellung.exe aktuell hält.
    Liste mit Übersicht über Computer auf aktuellem Stand
    Includes mit "Organize Includes" optimiert
    Export-Funktion für Admintool hinzugefügt
    Fehlermeldung wenn das Programm auf dem Server ausgeführt wird.
    Begonnen zu kommentieren

    Über Feedback würde ich mich sehr freuen :)

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <date.au3>
    #include <GuiTab.au3>
    #include <ListBoxConstants.au3>
    #include <GUIListBox.au3>
    #include <WinAPI.au3>
    #include <Misc.au3>

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

    Global $iniserv = "\\Serverpfad\bestellungen.ini" ;<== Online!!
    ;Global $iniserv = @WorkingDir & "\bestellungen.ini" ;<== Pfad zur Datei in der die Bestellungen gespeichert werden!
    Global $cache = @WorkingDir & "\cache.ini" ;<== Wird von allein angelegt
    Global $iniloc = @WorkingDir & "\doener.ini" ;<== Wird angelegt wenn die Eingaben gespeichert werden sollen

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

    #region ### START Koda GUI section ### Form=
    ;Sensegui
    Global $show = False
    Global $indexB = -1
    Global $SenseGui, $SenseCtrl, $guiBox, $box
    Global $POSSenseGui[2]
    Global $aData[20] = ["Pizzabrot", "Margherita", "Funghi", "Prosciutto", "Salami", "Sardellen", "Americana", "Regina", "Dönerpizza", "Allerlei", "Vegetaria", "Hawaii", "Frutti di Mare", "Calzone", "Tonno", "Quattro Formaggio", "Caprese", "Bavaria", "Spinat", "Broccoli"]
    ;sensegui
    $guiBox = GUICreate('', 180, 100, 100, 600, BitOR($WS_SIZEBOX, $WS_POPUP), BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))

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

    $box = _GUICtrlListBox_Create($guiBox, '', 0, 0, 180, 101, BitOR($LBS_SORT, 0x00B00002))
    ; ListBox muß 1 Pixel höher als GUI sein - sonst fehlerhafte Darstellung <<<<<<<<<<<<<<<< BEACHTEN !!!!!! >>>>>>>>>>>>>>>>>>>>>>>>>>

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

    For $i = 0 To UBound($aData) - 1 ; falls Daten mit _FileReadToArray gelesen werden: StartIndex=1
    _GUICtrlListBox_AddString($box, $aData[$i])
    Next

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

    GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
    GUIRegisterMsg($WM_MOVE, "_WM_MOVE")
    GUIRegisterMsg(0x231, "_WM_ENTERSIZEMOVE")
    #endregion ### START Koda GUI section ### Form=

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

    ; sense

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

    ;##############################################################################################################################################################
    ; Abfragen vor Programmausführung zur Fehlervermeidung

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

    $dings = STringsplit(@WorkingDir,"\")
    If $dings[1] <> "C:" Then ; Wenn das Programm auf dem Server ausgeführt wird > Fehler
    MsgBox(0,"Fehler","Script bitte LOKAL ausführen!")
    Exit
    EndIf
    If IniRead($iniserv, "Bestellung", "date", "") = "" Then ; Wenn in der Server Ini keine Bestellung eingetragen ist > Fehler
    MsgBox(0, "", "Keine Bestellungen in nächster Zeit")
    Exit
    ElseIf IniRead($iniserv, "Bestellung", "version", "0") > 4 Then ; Wenn zwar eine Bestellung ist aber ein veraltetes Programm benutzt wird
    $result = MsgBox(52,"Veraltete Version","Sie benutzen eine veraltete Version des Bestellprogramms." & @CRLF & "Das Bestellprogramm jetzt updaten? ",0)
    switch $result

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

    case 6 ;YES
    Run(@WorkingDir&"\update.exe") ; die Update.exe aufrufen um das neueste Programm zu beziehen
    Sleep(100)
    Exit
    case 7 ;NO
    Exit

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

    endswitch

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

    ;_updater()
    Exit

    Else
    ;##############################################################################################################################################################
    ; Gui-Aufbau

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

    $Form1 = GUICreate("Bestellung vom: " & IniRead($iniserv, "Bestellung", "date", "0"), 419, 307, 500, 170)
    GUICtrlCreateLabel("Vorname:", 10, 5)
    $vorname = GUICtrlCreateInput("", 60, 5, 110, 21)
    GUICtrlCreateLabel("Nachname:", 175, 5)
    $nachname = GUICtrlCreateInput("", 240, 5, 110, 21)
    $date = GUICtrlCreateLabel("Datum: " & _NowDate(), 10, 30, 100, 17)
    $bdate = GUICtrlCreateLabel("Nächste Bestellung: " & IniRead($iniserv, "Bestellung", "date", "0"), 140, 30, 180, 17)
    GUICtrlCreateLabel("Bestellung möglich bis Mittag des Vortages", 140, 45, 300, 20)
    $save = GUICtrlCreateCheckbox("Eingabe speichern?", 32, 220, 150, 17)
    $bestell = GUICtrlCreateButton("Bestellen!", 32, 240, 345, 65)
    $kosten = GUICtrlCreateLabel("Kosten: ", 200, 220)

    $tabs = GUICtrlCreateTab(0, 50, 419, 170)
    $tab1 = GUICtrlCreateTabItem("Döner")
    GUIStartGroup()
    $d1 = GUICtrlCreateRadio("Döner", 88, 115, 113, 17)
    $d2 = GUICtrlCreateRadio("Dürüm", 232, 115, 113, 17)
    GUIStartGroup()
    $ns = GUICtrlCreateRadio("nicht scharf", 32, 136, 113, 17)
    $ms = GUICtrlCreateRadio("mittel scharf", 176, 136, 113, 17)
    $ss = GUICtrlCreateRadio("sehr scharf", 320, 136, 80, 17)
    $sonder = GUICtrlCreateInput("", 90, 170, 100)
    GUICtrlCreateLabel("Sonderwünsche: ", 10, 170, 80)
    GUICtrlCreateLabel("Stück: ", 240, 170, 80)
    $stuck = GUICtrlCreateCombo("1", 280, 170, 50, 120)
    GUICtrlSetData(-4, "2|3|4|x", "1")

    ;Pizza
    $tab2 = GUICtrlCreateTabItem("Pizza")
    GUICtrlCreateLabel("Pizza:", 110, 80)
    $pname = GUICtrlCreateInput("", 150, 80, 90, 17)
    $pklein = GUICtrlCreateRadio("klein", 100, 100)
    $pmittel = GUICtrlCreateRadio("mittel", 200, 100)
    $pgro = GUICtrlCreateRadio("groß", 300, 100)

    ;Kosten auslesen:
    $kpk = IniRead($iniserv, "geld", "pklein", "0,00")
    $kpm = IniRead($iniserv, "geld", "pmittel", "0,00")
    $kpg = IniRead($iniserv, "geld", "pgro", "0,00")
    $kdoener = IniRead($iniserv, "geld", "döner", "0,00")
    $kdueruem = IniRead($iniserv, "geld", "dürüm", "0,00")
    GUICtrlCreateTabItem("")

    $SenseGui = $Form1 ; <== Für Allgemeingültigkeit Zuweisung an $SenseGui
    $SenseCtrl = $pname ; <== Für Allgemeingültigkeit Zuweisung an $SenseCtrl
    $hInput = GUICtrlGetHandle($pname)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

    EndIf
    ;##############################################################################################################################################################
    ; Auslesen von Startoptionen aus der lokalen Döner.ini

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

    _vorarbeit()
    ;##############################################################################################################################################################
    ; Programmstart

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

    While 1
    $nMsg = GUIGetMsg()

    _ChooseBox()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _cacheclean()

    Exit

    Case $bestell

    If GUICtrlRead($vorname) = "" Or GUICtrlRead($nachname) = "" Then
    MsgBox(0, "Name vergessen?", "Bitte Vor- und/oder Nachname eingeben!")
    Else

    _cacheclean()
    Sleep(100)

    _cache()
    $n1 = IniRead($cache, "Name", "vorname", "")
    $n2 = IniRead($cache, "Name", "nachname", "")
    $e1 = IniRead($cache, "Bestellung", "essen", "")
    $g1 = IniRead($cache, "Bestellung", "scharf", "")
    $anzahl = IniRead($iniserv, $n2 & " " & $n1, "anzahl", "")

    _dd()
    If BitAND($e1, 1) Or BitAND($e1, 2) Or BitAND($e1, 3) Then

    If $e1 = 1 Then
    $ecount = "Döner"
    Else
    $ecount = "Dürüm"

    EndIf
    If $g1 = 1 Then
    $gcount = "nicht scharf"
    ElseIf $g1 = 2 Then
    $gcount = "mittel scharf"
    ElseIf $g1 = 3 Then
    $gcount = "sehr scharf"

    EndIf
    Else

    $ecount = IniRead($cache, "Pizza", "name", 0)

    $gcount = IniRead($cache, "Pizza", "gr", 0)

    EndIf

    If BitAND(GUICtrlRead($d1), $GUI_CHECKED) Or BitAND(GUICtrlRead($d2), $GUI_CHECKED) Or BitAND(GUICtrlRead($pklein), $GUI_CHECKED) Or BitAND(GUICtrlRead($pmittel), $GUI_CHECKED) Or BitAND(GUICtrlRead($pgro), $GUI_CHECKED) Then
    $check = MsgBox(4, "Letzer Schritt!", $ecount & " " & $gcount & " wirklich bestellen?")
    If $check = "6" Then
    If BitAND(GUICtrlRead($save), $GUI_CHECKED) Then
    _saver()

    EndIf
    _cache()
    _server()
    $anzahl = $anzahl + 1
    IniWrite($iniserv, $n2 & " " & $n1, "anzahl", $anzahl)

    MsgBox(0, "Bestellt", $ecount & " " & $gcount & " wurde bestellt!")
    Exit

    EndIf
    Else

    MsgBox(0, "Error", "Keinen hunger?")
    EndIf
    EndIf
    Case $d1 Or $d2 Or $pklein Or $pmittel Or $pgro
    _geld()
    EndSwitch
    WEnd

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

    Func _vorarbeit()

    $l1 = IniRead($iniloc, "Name", "Vorname", "")
    GUICtrlSetData($vorname, $l1)
    $l2 = IniRead($iniloc, "Name", "Nachname", "")
    GUICtrlSetData($nachname, $l2)
    If IniRead($iniloc, "Flag", "flag", "") = "2" Then

    _GUICtrlTab_ActivateTab($tabs, 1)
    _GUICtrlTab_SetCurSel($tabs, 1)

    For $i = 0 To 4
    Send("{Tab}")
    Next
    GUICtrlSetData($pname, IniRead($iniloc, "Pizza", "pizza", "0"))

    $gr = IniRead($iniloc, "Pizza", "gr", "0")
    If $gr = "1" Then
    GUICtrlSetState($pklein, $GUI_CHECKED)
    ElseIf $gr = "2" Then
    GUICtrlSetState($pmittel, $GUI_CHECKED)
    ElseIf $gr = "3" Then
    GUICtrlSetState($pgro, $GUI_CHECKED)
    EndIf

    Else

    GUICtrlSetData($sonder, IniRead($iniloc, "Wunsch", "Sonderwunsch", ""))
    $doner = IniRead($iniloc, "Bestellung", "essen", "0")
    If $doner = "1" Then
    GUICtrlSetState($d1, $GUI_CHECKED)
    ElseIf $doner = "2" Then
    GUICtrlSetState($d2, $GUI_CHECKED)
    EndIf

    $scharf = IniRead($iniloc, "Bestellung", "scharf", "0")
    If $scharf = "1" Then
    GUICtrlSetState($ns, $GUI_CHECKED)
    ElseIf $scharf = "2" Then
    GUICtrlSetState($ms, $GUI_CHECKED)
    ElseIf $scharf = "3" Then
    GUICtrlSetState($ss, $GUI_CHECKED)
    EndIf

    EndIf

    EndFunc ;==>_vorarbeit

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

    Func _cache()
    IniWrite($cache, "Name", "vorname", GUICtrlRead($vorname))
    IniWrite($cache, "Name", "nachname", GUICtrlRead($nachname))

    If GUICtrlRead($tabs) = 1 Then ;falls der Tabreiter "Pizza" ausgewählt ist
    IniWrite($cache, "Pizza", "name", GUICtrlRead($pname))

    If BitAND(GUICtrlRead($pklein), $GUI_CHECKED) Then
    IniWrite($cache, "Pizza", "gr", "klein")
    ElseIf BitAND(GUICtrlRead($pmittel), $GUI_CHECKED) Then
    IniWrite($cache, "Pizza", "gr", "mittel")
    Else
    IniWrite($cache, "Pizza", "gr", "groß")
    EndIf

    Else ;sonst bleibt nur der Tabreiter "Döner"

    If BitAND(GUICtrlRead($d1), $GUI_CHECKED) Then
    IniWrite($cache, "Bestellung", "essen", "1")
    Else
    IniWrite($cache, "Bestellung", "essen", "2")
    EndIf
    If BitAND(GUICtrlRead($ns), $GUI_CHECKED) Then
    IniWrite($cache, "Bestellung", "scharf", "1")
    ElseIf BitAND(GUICtrlRead($ms), $GUI_CHECKED) Then
    IniWrite($cache, "Bestellung", "scharf", "2")
    Else
    IniWrite($cache, "Bestellung", "scharf", "3")
    EndIf
    EndIf

    EndFunc ;==>_cache

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

    Func _geld()

    If GUICtrlRead($tabs) = 1 Then
    If BitAND(GUICtrlRead($pklein), $GUI_CHECKED) Then

    GUICtrlSetData($kosten, "Kosten: " & $kpk & "€")

    ElseIf BitAND(GUICtrlRead($pmittel), $GUI_CHECKED) Then
    GUICtrlSetData($kosten, "Kosten: " & $kpm & "€")

    ElseIf BitAND(GUICtrlRead($pgro), $Gui_Checked) Then
    GUICtrlSetData($kosten, "Kosten: " & $kpg & "€")

    EndIf

    Else

    If BitAND(GUICtrlRead($d1), $GUI_CHECKED) Then
    GUICtrlSetData($kosten, "Kosten: " & $kdoener * GUICtrlRead($stuck) & "0 €")

    ElseIf BitAND(GUICtrlRead($d2), $Gui_Checked) Then
    GUICtrlSetData($kosten, "Kosten: " & $kdueruem * GUICtrlRead($stuck) & "0 €")
    EndIf

    EndIf

    EndFunc

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

    Func _saver()
    IniWrite($iniloc, "Name", "vorname", GUICtrlRead($vorname))
    IniWrite($iniloc, "Name", "nachname", GUICtrlRead($nachname))

    If GUICtrlRead($tabs) = 1 Then
    IniWrite($iniloc, "pizza", "pizza", GUICtrlRead($pname))
    IniWrite($iniloc, "flag", "Flag", "2")
    IniDelete($iniloc, "Bestellung")

    If BitAND(GUICtrlRead($pklein), $GUI_CHECKED) Then
    IniWrite($iniloc, "pizza", "gr", "1")
    ElseIf BitAND(GUICtrlRead($pmittel), $GUI_CHECKED) Then
    IniWrite($iniloc, "pizza", "gr", "2")
    Else
    IniWrite($iniloc, "pizza", "gr", "3")
    EndIf

    Else
    IniDelete($iniloc, "Flag")
    IniWrite($iniloc, "Wunsch", "Sonderwunsch", GUICtrlRead($sonder))

    If BitAND(GUICtrlRead($d1), $GUI_CHECKED) Then
    IniWrite($iniloc, "Bestellung", "essen", "1")
    ElseIf BitAND(GUICtrlRead($d2), $GUI_CHECKED) Then
    IniWrite($iniloc, "Bestellung", "essen", "2")

    Else
    MsgBox(0, "Error", "Keine Bestellung!")
    EndIf

    If BitAND(GUICtrlRead($ns), $GUI_CHECKED) Then
    IniWrite($iniloc, "Bestellung", "scharf", "1")
    ElseIf BitAND(GUICtrlRead($ms), $GUI_CHECKED) Then
    IniWrite($iniloc, "Bestellung", "scharf", "2")
    ElseIf BitAND(GUICtrlRead($ss), $GUI_CHECKED) Then
    IniWrite($iniloc, "Bestellung", "scharf", "3")
    Else
    MsgBox(0, "Error", "Keine Bestellung!2")
    EndIf

    EndIf

    EndFunc ;==>_saver

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

    Func _server()

    $n1 = IniRead($cache, "Name", "vorname", "0")
    $n2 = IniRead($cache, "Name", "nachname", "0")

    If GUICtrlRead($tabs) = 1 Then

    If BitAND(GUICtrlRead($pklein), $GUI_CHECKED) Then
    $counter = IniRead($iniserv, "Pizza", GUICtrlRead($pname) & " klein", 0)
    $counter = $counter + 1
    IniWrite($iniserv, "Pizza", GUICtrlRead($pname) & " klein", $counter)
    IniWrite($iniserv, $n2 & " " & $n1, "Bestellung~" & $anzahl, "Pizza\" & GUICtrlRead($pname) & " klein " & GUICtrlRead($sonder))
    IniWrite($iniserv, $n2 & " " & $n1, "Zeit~" & $anzahl, " Computername: " & @ComputerName & " " & _NowDate() & " " & _NowTime())
    ElseIf BitAND(GUICtrlRead($pmittel), $GUI_CHECKED) Then
    $counter = IniRead($iniserv, "Pizza", GUICtrlRead($pname) & " mittel", 0)
    $counter = $counter + 1
    IniWrite($iniserv, "Pizza", GUICtrlRead($pname) & " mittel", $counter)
    IniWrite($iniserv, $n2 & " " & $n1, "Bestellung~" & $anzahl, "Pizza\" & GUICtrlRead($pname) & " mittel " & GUICtrlRead($sonder))
    IniWrite($iniserv, $n2 & " " & $n1, "Zeit~" & $anzahl, " Computername: " & @ComputerName & " " & _NowDate() & " " & _NowTime())
    Else
    $counter = IniRead($iniserv, "Pizza", GUICtrlRead($pname) & " groß", 0)
    $counter = $counter + 1
    IniWrite($iniserv, "Pizza", GUICtrlRead($pname) & " groß", $counter)
    IniWrite($iniserv, $n2 & " " & $n1, "Bestellung~" & $anzahl, "Pizza\" & GUICtrlRead($pname) & " groß " & GUICtrlRead($sonder))
    IniWrite($iniserv, $n2 & " " & $n1, "Zeit~" & $anzahl, " Computername: " & @ComputerName & " " & _NowDate() & " " & _NowTime())

    EndIf

    Else
    $e1 = IniRead($cache, "Bestellung", "essen", "0")
    $g1 = IniRead($cache, "Bestellung", "scharf", "0")
    If $e1 = 1 Then
    $ecount = "Döner"
    Else
    $ecount = "Dürüm"
    EndIf
    If $g1 = 1 Then
    ElseIf $g1 = 2 Then
    $gcount = "mittel scharf"
    Else
    $gcount = "sehr scharf"
    EndIf

    IniWrite($iniserv, $n2 & " " & $n1, "Bestellung~" & $anzahl, GUICtrlRead($stuck) & " x " & $ecount & " " & $gcount & " " & GUICtrlRead($sonder))
    IniWrite($iniserv, $n2 & " " & $n1, "Zeit~" & $anzahl, " Computername: " & @ComputerName & " " & _NowDate() & " " & _NowTime())
    $d1ns = IniRead($iniserv, "essen", "d1ns", "0")
    $d1ms = IniRead($iniserv, "essen", "d1ms", "0")
    $d1ss = IniRead($iniserv, "essen", "d1ss", "0")
    $d2ns = IniRead($iniserv, "essen", "d2ns", "0")
    $d2ms = IniRead($iniserv, "essen", "d2ms", "0")
    $d2ss = IniRead($iniserv, "essen", "d2ss", "0")

    ;Döner ohne scharf
    If BitAND(GUICtrlRead($d1), $GUI_CHECKED) And BitAND(GUICtrlRead($ns), $GUI_CHECKED) Then
    IniWrite($iniserv, "essen", "d1ns", $d1ns + GUICtrlRead($stuck))
    ;Döner mittel
    ElseIf BitAND(GUICtrlRead($d1), $GUI_CHECKED) And BitAND(GUICtrlRead($ms), $GUI_CHECKED) Then
    IniWrite($iniserv, "essen", "d1ms", $d1ms + GUICtrlRead($stuck))
    ;Döner scharf
    ElseIf BitAND(GUICtrlRead($d1), $GUI_CHECKED) And BitAND(GUICtrlRead($ss), $GUI_CHECKED) Then
    IniWrite($iniserv, "essen", "d1ss", $d1ss + GUICtrlRead($stuck))
    ;Dürüm nicht scharf
    ElseIf BitAND(GUICtrlRead($d2), $GUI_CHECKED) And BitAND(GUICtrlRead($ns), $GUI_CHECKED) Then
    IniWrite($iniserv, "essen", "d2ns", $d2ns + GUICtrlRead($stuck))
    ;Dürüm normal
    ElseIf BitAND(GUICtrlRead($d2), $GUI_CHECKED) And BitAND(GUICtrlRead($ms), $GUI_CHECKED) Then
    IniWrite($iniserv, "essen", "d2ms", $d2ms + GUICtrlRead($stuck))
    ;Dürüm scharf
    ElseIf BitAND(GUICtrlRead($d2), $GUI_CHECKED) And BitAND(GUICtrlRead($ss), $GUI_CHECKED) Then
    IniWrite($iniserv, "essen", "d2ss", $d2ss + GUICtrlRead($stuck))
    EndIf
    EndIf

    EndFunc ;==>_server

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

    Func _dd()
    if $anzahl = 0 Then
    IniWrite($iniserv, $n2 &" "& $n1,"anzahl", "0")
    Else

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

    $bestellung = IniRead($iniserv,$n2 & " " & $n1,"Bestellung~"&$anzahl-1,"")
    MsgBox(0,"","Sie haben bereits "& $bestellung&" bestellt!")
    EndIf

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

    EndFunc

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

    Func _cacheclean()
    IniDelete($cache, "Name")
    IniDelete($cache, "Bestellung")
    IniDelete($cache, "Pizza")
    EndFunc ;==>_cacheclean

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

    #region - SenseFuncs

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

    Func _ChooseBox()

    If Not $show Or ControlGetText($SenseGui, '', $SenseCtrl) = "" Then
    GUISetState(@SW_HIDE, $guiBox)
    $show = False
    Return
    EndIf

    If _IsPressed('0D') Then ; ENTER

    ControlSetText($SenseGui, '', $SenseCtrl, _GUICtrlListBox_GetText($box, $indexB))
    GUISetState(@SW_HIDE, $guiBox)

    $show = False
    ElseIf _IsPressed('1B') Then ; ESC
    GUISetState(@SW_HIDE, $guiBox)
    $show = False
    ElseIf _IsPressed('26') Then ; UP
    If $indexB > 0 Then
    $indexB -= 1
    _GUICtrlListBox_SetCurSel($box, $indexB)
    Sleep(90)
    EndIf
    ElseIf _IsPressed('28') Then ; DOWN
    If $indexB < _GUICtrlListBox_GetCount($box) - 1 Then
    $indexB += 1
    _GUICtrlListBox_SetCurSel($box, $indexB)
    Sleep(90)
    EndIf
    EndIf
    EndFunc ;==>_ChooseBox

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

    Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $hCtrl = $lParam
    Local $hSenseCtrl = $SenseCtrl
    If Not IsHWnd($hSenseCtrl) Then $hSenseCtrl = GUICtrlGetHandle($hSenseCtrl)
    If ($nNotifyCode = 1024 Or $nNotifyCode = 6) And $hCtrl = $hSenseCtrl Then
    Local $str = ControlGetText($SenseGui, '', $SenseCtrl)
    $indexB = _GUICtrlListBox_FindString($box, $str)
    _GUICtrlListBox_SetCurSel($box, $indexB)
    $caret = _CaretPos()
    If Not @error And Not $show Then
    If $caret[3] + $caret[4] - 95 < 0 Then ; Platz für Liste über dem Ctrl ausreichend?
    WinMove($guiBox, '', $caret[0], $caret[1] + 30) ; Versatz 25 (Ctrlhöhe+5) unter y vom Ctrl
    Else
    WinMove($guiBox, '', $caret[0] - 5, $caret[1] + 15) ; Versatz 95 (Boxhöhe+10) über y vom Ctrl
    EndIf
    GUISetState(@SW_SHOWNOACTIVATE, $guiBox)
    $show = True
    EndIf
    ElseIf $hCtrl = $box And $nNotifyCode = 1 Then
    $indexB = _GUICtrlListBox_GetCurSel($box)
    ControlSetText($SenseGui, '', $SenseCtrl, _GUICtrlListBox_GetText($box, $indexB))
    GUISetState(@SW_HIDE, $guiBox)
    $show = False
    ElseIf $show And $nNotifyCode = 512 And $hCtrl = $lParam And Not $hCtrl = $box Then
    GUISetState(@SW_HIDE, $guiBox)
    $show = False
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_COMMAND

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

    Func _WM_ENTERSIZEMOVE($hWnd)
    If $hWnd = $SenseGui Then $POSSenseGui = WinGetPos($SenseGui)
    EndFunc ;==>_WM_ENTERSIZEMOVE

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

    Func _WM_MOVE($hWnd)
    If $hWnd = $SenseGui Then
    Local $pos = WinGetPos($guiBox)
    Local $postemp = WinGetPos($SenseGui)
    WinMove($guiBox, "", $pos[0] - ($POSSenseGui[0] - $postemp[0]), $pos[1] - ($POSSenseGui[1] - $postemp[1]))
    $POSSenseGui = WinGetPos($SenseGui)
    EndIf
    EndFunc ;==>_WM_MOVE

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

    Func _CaretPos()
    Local $old = Opt("CaretCoordMode", 0) ;relative mode
    Local $c = WinGetCaretPos() ;relative caret coords
    Local $w = WinGetPos("") ;window's coords
    Local $f = ControlGetFocus("", "") ;text region "handle"
    Local $e = ControlGetPos("", "", $f) ;text region coords
    Local $h = ControlGetHandle("", "", $f) ;Ctrl-Handle
    Local $t[5]
    If IsArray($c) And IsArray($w) And IsArray($e) Then
    If _WinAPI_IsClassName($SenseCtrl, 'Edit') Then ; Input wird als Edit-Class erkannt
    $t[0] = $c[0] + $w[0] + $e[0]
    ElseIf _WinAPI_IsClassName($SenseCtrl, 'ComboBox') Then
    $t[0] = $w[0] + $e[0]
    EndIf
    $t[1] = $c[1] + $w[1] + $e[1]
    $t[2] = $h
    $t[3] = $w[1]
    $t[4] = $e[1]
    Opt("CaretCoordMode", $old)
    Return $t ;absolute screen coords of caret cursor
    Else
    Opt("CaretCoordMode", $old)
    SetError(1)
    EndIf
    EndFunc ;==>_CaretPos

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

    #endregion - SenseFuncs

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

    Admintool (im Aufbau)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #region ### START Koda GUI section ### Form=

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

    Global $iniserv = "\\Serverpfad\bestellungen.ini" ;<== Online!!
    ;Global $iniserv = @WorkingDir & "\bestellungen.ini" ;<== Pfad zur Datei in der die Bestellungen gespeichert werden!

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

    $Form1 = GUICreate("Admintool", 615, 932, 2319, 163)
    $button1 = GUICtrlCreateButton("go", 280, 10, 100, 30)
    $del = GUICtrlCreateButton("Delete", 10, 280, 100, 30)
    $out = GUICtrlCreateListView("out | out ", 10, 50, 500, 200)
    $vorname = GUICtrlCreateInput("Vorname", 10, 10, 100, 25)
    $nachname = GUICtrlCreateInput("Nachname", 180, 10, 100, 25)
    $andre = GUICtrlCreateListView("Speise: | Anzahl:", 10, 340, 500, 200)
    $export = GUICtrlCreateButton("Exportieren", 16, 560, 97, 33)
    $pizza = ""
    $auswal_array = ""
    $ListViewSel = ""
    $y = ""

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

    ;GUICtrlSetData(-1, "Edit1")
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $button1
    _search()
    _emptydel()
    _all()
    Case $del
    _del()
    _emptydel()

    case $export
    _export()
    EndSwitch
    WEnd

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

    func _emptydel() ;<= Löscht leere Zählvariablen in der .ini

    $flt = IniReadSection($iniserv,"essen")
    If @error Then
    ;nothing
    Else
    For $i = 1 to $flt[0][0]
    If $flt[$i][1] = 0 Then
    IniDelete($iniserv,"essen",$flt[$i][0])

    EndIf
    Next
    EndIf
    $pu = IniReadSection($iniserv,"Pizza")
    If @error Then
    ;nothing
    Else
    For $i = 1 to $pu[0][0]
    ConsoleWrite("Key ="&$pu[$i][0]&" Value: "&$pu[$i][1]&@CRLF)
    If $pu[$i][1] = 0 Then
    IniDelete($iniserv,"Pizza",$pu[$i][0])

    EndIf
    Next
    EndIf

    EndFunc

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

    Func _search()
    _GUICtrlListView_DeleteAllItems($out)
    $var = IniReadSection($iniserv, GUICtrlRead($nachname) & " " & GUICtrlRead($vorname))

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

    If @error Then
    GUICtrlCreateListViewItem("Keine Daten!", $out)
    Else

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

    For $i = 2 To $var[0][0]
    GUICtrlCreateListViewItem($var[$i][0] & "|" & $var[$i][1], $out)
    Next
    EndIf

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

    EndFunc ;==>_search

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

    Func _del()
    $ListViewSel = _GUICtrlListView_GetSelectionMark($out)

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

    $auswahl_text = _GUICtrlListView_GetItemText($out, $ListViewSel)
    $namen_abfrage = IniReadSection($iniserv, GUICtrlRead($nachname) & " " & GUICtrlRead($vorname))
    $y = StringSplit($auswahl_text, "~")
    If $y[0] = 1 Then
    MsgBox(0, "", "Unkorrekte Daten Lan!")

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

    ElseIf $namen_abfrage[0][0] <= 3 Then
    _deluser()

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

    Else

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

    IniDelete($iniserv, GUICtrlRead($nachname) & " " & GUICtrlRead($vorname), _GUICtrlListView_GetItemText($out, $ListViewSel))

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

    IniDelete($iniserv, GUICtrlRead($nachname) & " " & GUICtrlRead($vorname), "Zeit~" & $y[2])

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

    $auswal_array = _GUICtrlListView_GetItemTextArray($out, $ListViewSel)
    $pizza = StringSplit($auswal_array[2], "\")

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

    If $pizza[1] = "Pizza" Then

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

    _delpizza()
    Else
    _deldoener()
    EndIf
    _emptydel()
    _search()
    _all()
    EndIf
    EndFunc ;==>_del

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

    Func _deluser()
    $abfrage = MsgBox(4, "Benutzer löschen?", "Benutzer komplett entfernen?")
    If $abfrage = 6 Then

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

    $auswal_array = _GUICtrlListView_GetItemTextArray($out, $ListViewSel)
    $pizza = StringSplit($auswal_array[2], "\")
    If $pizza[1] = "Pizza" Then
    _delpizza()
    Else
    _deldoener()
    EndIf
    IniDelete($iniserv, GUICtrlRead($nachname) & " " & GUICtrlRead($vorname))
    Else
    IniDelete($iniserv, GUICtrlRead($nachname) & " " & GUICtrlRead($vorname), _GUICtrlListView_GetItemText($out, $ListViewSel))
    IniDelete($iniserv, GUICtrlRead($nachname) & " " & GUICtrlRead($vorname), "Zeit~" & $y[2])
    $auswal_array = _GUICtrlListView_GetItemTextArray($out, $ListViewSel)
    $pizza = StringSplit($auswal_array[2], "\")
    If $pizza[1] = "Pizza" Then
    _delpizza()
    Else
    _deldoener()
    EndIf

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

    EndIf

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

    _search()
    _all()
    EndFunc ;==>_deluser

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

    func _export()
    $all = _GUICtrlListView_GetItemCount($andre)


    For $i = 0 to $all -1
    If _GuiCtrlListView_GetItemText($andre,$i,0) = "d1ns" Then
    ConsoleWRite(_GuiCtrlListView_GetItemText($andre,$i,1)&" x Döner nicht scharf"&@CRLF)
    ElseIf _GuiCtrlListView_GetItemText($andre,$i,0) = "d1ms" Then
    ConsoleWRite(_GuiCtrlListView_GetItemText($andre,$i,1)&" x Döner mittel scharf"&@CRLF)
    ElseIf _GuiCtrlListView_GetItemText($andre,$i,0) = "d1ss" Then
    ConsoleWRite(_GuiCtrlListView_GetItemText($andre,$i,1)&" x Döner sehr scharf"&@CRLF)
    ElseIf _GuiCtrlListView_GetItemText($andre,$i,0) = "d2ns" Then
    ConsoleWRite(_GuiCtrlListView_GetItemText($andre,$i,1)&" x Dürüm nicht scharf"&@CRLF)
    ElseIf _GuiCtrlListView_GetItemText($andre,$i,0) = "d2ms" Then
    ConsoleWRite(_GuiCtrlListView_GetItemText($andre,$i,1)&" x Dürüm mittel scharf"&@CRLF)
    ElseIf _GuiCtrlListView_GetItemText($andre,$i,0) = "d2ss" Then
    ConsoleWRite(_GuiCtrlListView_GetItemText($andre,$i,1)&" x Dürüm sehr scharf"&@CRLF)

    Else
    ConsoleWrite(_GuiCtrlListView_GetItemText($andre,$i,1)&" x "&_GuiCtrlListView_GetItemText($andre,$i,0)&@CRLF)
    EndIf
    Next

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

    EndFunc

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

    Func _delpizza()
    $globanzahl = IniRead($iniserv, GUICtrlRead($nachname) & " " & GUICtrlRead($vorname), "anzahl", "0")
    IniWrite($iniserv, GUICtrlRead($nachname) & " " & GUICtrlRead($vorname), "anzahl", $globanzahl - 1)

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

    $anzahl = IniRead($iniserv, "Pizza", $pizza[2], "")
    If $anzahl = 1 Then
    IniWrite($iniserv, "Pizza", $pizza[2], "0")
    Else
    $anzahl = $anzahl - 1
    ConsoleWrite("zeile 80" & $anzahl)
    IniWrite($iniserv, "Pizza", $pizza[2], $anzahl)
    EndIf
    EndFunc ;==>_delpizza

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

    Func _deldoener()
    $cheers = StringSplit($auswal_array[2], "x")
    $globanzahl = IniRead($iniserv, GUICtrlRead($nachname) & " " & GUICtrlRead($vorname), "anzahl", "0")

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

    IniWrite($iniserv, GUICtrlRead($nachname) & " " & GUICtrlRead($vorname), "anzahl", $globanzahl - $cheers[1])

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

    If $cheers[2] = " Döner nicht scharf" Then
    $count = IniRead($iniserv, "essen", "d1ns", "0")
    $count = $count - $cheers[1]
    IniWrite($iniserv, "essen", "d1ns", $count)
    ElseIf $cheers[2] = " Döner mittel scharf" Then
    $count = IniRead($iniserv, "essen", "d1ms", "0")
    $count = $count - $cheers[1]
    IniWrite($iniserv, "essen", "d1ms", $count)
    ElseIf $cheers[2] = " Döner sehr scharf" Then
    $count = IniRead($iniserv, "essen", "d1ss", "0")
    $count = $count - $cheers[1]
    IniWrite($iniserv, "essen", "d1ss", $count)
    ElseIf $cheers[2] = " Dürüm nicht scharf" Then
    $count = IniRead($iniserv, "essen", "d2ns", "0")
    $count = $count - $cheers[1]
    IniWrite($iniserv, "essen", "d2ns", $count)
    ElseIf $cheers[2] = " Dürüm mittel scharf" Then
    $count = IniRead($iniserv, "essen", "d2ms", "0")
    $count = $count - $cheers[1]
    IniWrite($iniserv, "essen", "d2ms", $count)
    ElseIf $cheers[2] = " Dürüm sehr scharf" Then
    $count = IniRead($iniserv, "essen", "d2ss", "0")
    $count = $count - $cheers[1]
    IniWrite($iniserv, "essen", "d2ss", $count)
    EndIf
    EndFunc ;==>_deldoener

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

    Func _all()
    _GUICtrlListView_DeleteAllItems($andre)
    $gesamt = IniReadSection($iniserv, "essen")
    If @error Then
    GUICtrlCreateListViewItem("", $andre)
    Else

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

    For $i = 1 To $gesamt[0][0]

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

    GUICtrlCreateListViewItem($gesamt[$i][0] & "|" & $gesamt[$i][1], $andre)
    Next
    EndIf
    $pgesamt = IniReadSection($iniserv, "Pizza")
    If @error Then
    GUICtrlCreateListViewItem("", $andre)
    Else

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

    For $i = 1 To $pgesamt[0][0]

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

    GUICtrlCreateListViewItem($pgesamt[$i][0] & "|" & $pgesamt[$i][1], $andre)
    Next
    EndIf
    EndFunc ;==>_all

    [/autoit]

    Die Update.exe :

    Spoiler anzeigen
    [autoit]

    #include <Date.au3>

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

    $iniserv = "\\Serverpfad\computer.ini"
    $update = "Speicherort der aktuellen Exe"
    $copy = FileCopy("$update",@WorkingDir,1)
    if $copy = 1 Then
    IniWrite($iniserv,"Aktuell",@ComputerName,_NowDate()&" "&_NowTime()& " "& @WorkingDir)
    MsgBox(0,"","Update erfolgreich"&@Crlf&"Guten Appetit!")

    Exit
    Else
    MsgBox(0,"","Das hat nicht geklappt."&@CRLF&"Bitte erneut versuchen oder an Admin wenden!")
    Exit
    EndIf

    [/autoit]

    Leere "Datenbank":

    Spoiler anzeigen

    [Bestellung]
    version = 10
    date = 123
    [geld]
    pklein = 4,50
    pmittel = 5,50
    pgro = 6,50
    döner = 3.60
    dürüm = 4.30

    12 Mal editiert, zuletzt von Q-Connect (6. Februar 2013 um 17:27)

  • Kleines Update
    Bugfix (danke CheaterDieter)
    Gui Änderung und IntelliSenseBox von Bugfix für die Pizza Bestellung Eingebunden
    (Nur leider funktioniert jetzt das eigentliche Bestellen nicht mehr)


    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <date.au3>

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

    #include <ListBoxConstants.au3>
    #include <GUIListBox.au3>
    #Include <WinAPI.au3>
    #include <Misc.au3>
    #include <GUIConstants.au3>

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

    Global $iniloc = @WorkingDir & "\doener.ini"
    Global $iniserv = @WorkingDir & "\bestellung.ini"
    Global $cache = @WorkingDir & "\cache.ini"

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

    #region ### START Koda GUI section ### Form=
    ;Sensegui
    Global $show = False
    Global $indexB = -1
    Global $SenseGui, $SenseCtrl, $guiBox, $box
    Global $POSSenseGui[2]
    Global $aData[20] = ["Pizzabrot","Margherita","Funghi","Prosciutto","Salami","Sardellen","Americana","Regina","Dönerpizza","Allerlei","Vegetaria","Hawaii","Frutti di Mare","Calzone","Tonno","Quattro Formaggio","Caprese","Bavaria","Spinat","Broccoli"]
    ;sensegui
    $guiBox = GUICreate('', 180, 100, 100, 600, BitOR($WS_SIZEBOX, $WS_POPUP), BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))

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

    $box = _GUICtrlListBox_Create($guiBox, '', 0, 0, 180, 101, BitOR($LBS_SORT, 0x00B00002))
    ; ListBox muß 1 Pixel höher als GUI sein - sonst fehlerhafte Darstellung <<<<<<<<<<<<<<<< BEACHTEN !!!!!! >>>>>>>>>>>>>>>>>>>>>>>>>>

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

    For $i = 0 To UBound($aData) -1 ; falls Daten mit _FileReadToArray gelesen werden: StartIndex=1
    _GUICtrlListBox_AddString($box, $aData[$i])
    Next
    #EndRegion Box
    GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
    GUIRegisterMsg($WM_MOVE, "_WM_MOVE")
    GUIRegisterMsg(0x231, "_WM_ENTERSIZEMOVE")
    #EndRegion - Deklarationen Sense

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

    ; sense

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

    If IniRead($iniserv, "Bestellung", "date", "") = "" Then
    MsgBox(0, "", "Keine Bestellungen in nächster Zeit")
    Exit

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

    Else

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

    $Form1 = GUICreate("Bestellung vom: " & IniRead($iniserv, "Bestellung", "date", "0"), 419, 307, 500, 170)

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

    GUICtrlCreateLabel("Vorname:", 10, 5)
    $vorname = GUICtrlCreateInput("", 60, 5, 110, 21)
    GUICtrlCreateLabel("Nachname:", 175, 5)
    $nachname = GUICtrlCreateInput("", 240, 5, 110, 21)
    $date = GUICtrlCreateLabel("Datum: " & _NowDate(), 10, 30, 100, 17)
    $bdate = GUICtrlCreateLabel("Nächste Bestellung: " & IniRead($iniserv, "Bestellung", "date", "0"), 140, 30, 180, 17)
    GUICtrlCreateLabel("Bestellung möglich bis Mittag des Vortages", 140, 45, 300, 20)
    $save = GUICtrlCreateCheckbox("Eingabe speichern?", 32, 220, 150, 17)
    $bestell = GUICtrlCreateButton("Bestellen!", 32, 240, 345, 65)

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

    GUICtrlCreateTab(0, 50, 419, 170)
    GUICtrlCreateTabItem("Döner")
    GUIStartGroup()
    $d1 = GUICtrlCreateRadio("Döner", 88, 115, 113, 17)
    $d2 = GUICtrlCreateRadio("Dürüm", 232, 115, 113, 17)
    GUIStartGroup()
    $ns = GUICtrlCreateRadio("nicht scharf", 32, 136, 113, 17)
    $ms = GUICtrlCreateRadio("mittel scharf", 176, 136, 113, 17)
    $ss = GUICtrlCreateRadio("sehr scharf", 320, 136, 80, 17)
    $sonder = GUICtrlCreateInput("", 90, 170, 100)
    GUICtrlCreateLabel("Sonderwünsche: ", 10, 170, 80)
    GUICtrlCreateLabel("Stück: ", 240, 170, 80)
    GUICtrlCreateCombo("1", 280, 170, 50, 120) ; create first item
    GUICtrlSetData(-4, "2|3|4|x", "1") ; add other item snd set a new default

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

    ;Pizza
    GUICtrlCreateTabItem("Pizza")
    GuiCtrlCreateLabel("Pizza:",110,80)
    $pname = GUICtrlCreateInput("", 150, 80, 90, 15)
    $pklein = GUICtrlCreateRadio("klein", 100, 100)
    $pmittel = GUICtrlCreateRadio("mittel", 200, 100)
    $pgro = GUICtrlCreateRadio("groß", 300, 100)

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

    $SenseGui = $Form1 ; <== Für Allgemeingültigkeit Zuweisung an $SenseGui
    $SenseCtrl = $pname ; <== Für Allgemeingültigkeit Zuweisung an $SenseCtrl
    $hInput = GUICtrlGetHandle($pname)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    EndIf

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

    _vorarbeit()

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

    While 1
    $nMsg = GUIGetMsg()
    _ChooseBox()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    IniDelete($cache, "Name")
    IniDelete($cache, "Bestellung")
    Exit

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

    Case $bestell
    _cache()
    $n1 = IniRead($cache, "Name", "vorname", "0")
    $n2 = IniRead($cache, "Name", "nachname", "0")
    $e1 = IniRead($cache, "Bestellung", "essen", "0")
    $g1 = IniRead($cache, "Bestellung", "scharf", "0")
    If $e1 = 1 Then
    $ecount = "Döner"
    Else
    $ecount = "Dürüm"
    EndIf
    If $g1 = 1 Then
    $gcount = "nicht scharf"
    ElseIf $g1 = 2 Then
    $gcount = "mittel scharf"
    Else
    $gcount = "sehr scharf"
    EndIf
    If BitAND(GUICtrlRead($d1), $GUI_CHECKED) Or BitAND(GUICtrlRead($d2), $GUI_CHECKED) Then
    $check = MsgBox(4, "Letzer Schritt!", $ecount & " " & $gcount & " wirklich bestellen?")
    If $check = "6" Then
    If BitAND(GUICtrlRead($save), $GUI_CHECKED) Then
    _saver()
    EndIf
    _cache()
    _server()

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

    EndIf
    Else
    MsgBox(0, "Error", "Keinen hunger?")
    EndIf

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

    EndSwitch
    WEnd

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

    Func _vorarbeit()

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

    GUICtrlSetData($sonder, IniRead($iniloc, "Wunsch", "Sonderwunsch", ""))
    $l1 = IniRead($iniloc, "Name", "Vorname", "")
    GUICtrlSetData($vorname, $l1)
    $l2 = IniRead($iniloc, "Name", "Nachname", "")
    GUICtrlSetData($nachname, $l2)
    $doner = IniRead($iniloc, "Bestellung", "essen", "0")
    If $doner = "1" Then
    GUICtrlSetState($d1, $GUI_CHECKED)
    ElseIf $doner = "2" Then
    GUICtrlSetState($d2, $GUI_CHECKED)
    EndIf

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

    $scharf = IniRead($iniloc, "Bestellung", "scharf", "0")
    If $scharf = "1" Then
    GUICtrlSetState($ns, $GUI_CHECKED)
    ElseIf $scharf = "2" Then
    GUICtrlSetState($ms, $GUI_CHECKED)
    ElseIf $scharf = "3" Then
    GUICtrlSetState($ss, $GUI_CHECKED)
    EndIf
    EndFunc ;==>_vorarbeit

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

    Func _cache()
    IniWrite($cache, "Name", "vorname", GUICtrlRead($vorname))
    IniWrite($cache, "Name", "nachname", GUICtrlRead($nachname))

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

    If BitAND(GUICtrlRead($d1), $GUI_CHECKED) Then
    IniWrite($cache, "Bestellung", "essen", "1")
    Else
    IniWrite($cache, "Bestellung", "essen", "2")
    EndIf
    If BitAND(GUICtrlRead($ns), $GUI_CHECKED) Then
    IniWrite($cache, "Bestellung", "scharf", "1")
    ElseIf BitAND(GUICtrlRead($ms), $GUI_CHECKED) Then
    IniWrite($cache, "Bestellung", "scharf", "2")
    Else
    IniWrite($cache, "Bestellung", "scharf", "3")
    EndIf
    EndFunc ;==>_cache

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

    Func _saver()
    IniWrite($iniloc, "Name", "vorname", GUICtrlRead($vorname))
    IniWrite($iniloc, "Name", "nachname", GUICtrlRead($nachname))
    IniWrite($iniloc, "Wunsch", "Sonderwunsch", GUICtrlRead($sonder))

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

    If BitAND(GUICtrlRead($d1), $GUI_CHECKED) Then
    IniWrite($iniloc, "Bestellung", "essen", "1")
    ElseIf BitAND(GUICtrlRead($d2), $GUI_CHECKED) Then
    IniWrite($iniloc, "Bestellung", "essen", "2")

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

    Else
    MsgBox(0, "Error", "Keine Bestellung!1")
    EndIf

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

    If BitAND(GUICtrlRead($ns), $GUI_CHECKED) Then
    IniWrite($iniloc, "Bestellung", "scharf", "1")
    ElseIf BitAND(GUICtrlRead($ms), $GUI_CHECKED) Then
    IniWrite($iniloc, "Bestellung", "scharf", "2")
    ElseIf BitAND(GUICtrlRead($ss), $GUI_CHECKED) Then
    IniWrite($iniloc, "Bestellung", "scharf", "3")
    Else
    MsgBox(0, "Error", "Keine Bestellung!2")
    EndIf

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

    EndFunc ;==>_saver

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

    Func _server()

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

    $n1 = IniRead($cache, "Name", "vorname", "0")
    $n2 = IniRead($cache, "Name", "nachname", "0")
    $e1 = IniRead($cache, "Bestellung", "essen", "0")
    $g1 = IniRead($cache, "Bestellung", "scharf", "0")
    If $e1 = 1 Then
    $ecount = "Döner"
    Else
    $ecount = "Dürüm"
    EndIf
    If $g1 = 1 Then
    $gcount = "nicht scharf"
    ElseIf $g1 = 2 Then
    $gcount = "mittel scharf"
    Else
    $gcount = "sehr scharf"
    EndIf

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

    IniWrite($iniserv, "Namen", _NowDate() & " " & _NowTime() & " " & $n2 & " " & $n1, $ecount & " " & $gcount & " sonder: " & GUICtrlRead($sonder) & " Computername: " & @ComputerName)
    $d1ns = IniRead($iniserv, "essen", "d1ns", "0")
    $d1ms = IniRead($iniserv, "essen", "d1ms", "0")
    $d1ss = IniRead($iniserv, "essen", "d1ss", "0")
    $d2ns = IniRead($iniserv, "essen", "d2ns", "0")
    $d2ms = IniRead($iniserv, "essen", "d2ms", "0")
    $d2ss = IniRead($iniserv, "essen", "d2ss", "0")

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

    ;Döner ohne scharf
    If BitAND(GUICtrlRead($d1), $GUI_CHECKED) And BitAND(GUICtrlRead($ns), $GUI_CHECKED) Then
    IniWrite($iniserv, "essen", "d1ns", $d1ns + "1")
    ;Döner mittel
    ElseIf BitAND(GUICtrlRead($d1), $GUI_CHECKED) And BitAND(GUICtrlRead($ms), $GUI_CHECKED) Then
    IniWrite($iniserv, "essen", "d1ms", $d1ms + "1")
    ;Döner scharf
    ElseIf BitAND(GUICtrlRead($d1), $GUI_CHECKED) And BitAND(GUICtrlRead($ss), $GUI_CHECKED) Then
    IniWrite($iniserv, "essen", "d1ss", $d1ss + "1")
    ;Dürüm nicht scharf
    ElseIf BitAND(GUICtrlRead($d2), $GUI_CHECKED) And BitAND(GUICtrlRead($ns), $GUI_CHECKED) Then
    IniWrite($iniserv, "essen", "d2ns", $d2ns + "1")
    ;Dürüm normal
    ElseIf BitAND(GUICtrlRead($d2), $GUI_CHECKED) And BitAND(GUICtrlRead($ms), $GUI_CHECKED) Then
    IniWrite($iniserv, "essen", "d2ms", $d2ms + "1")
    ;Dürüm scharf
    ElseIf BitAND(GUICtrlRead($d2), $GUI_CHECKED) And BitAND(GUICtrlRead($ss), $GUI_CHECKED) Then
    IniWrite($iniserv, "essen", "d2ss", $d2ss + "1")
    EndIf

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

    EndFunc ;==>_server

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

    #region - SenseFuncs
    Func _ChooseBox()

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

    If Not $show Or ControlGetText($SenseGui, '', $SenseCtrl) = "" Then
    GUISetState(@SW_HIDE, $guiBox)
    $show = False
    Return
    EndIf

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

    If _IsPressed('0D') Then ; ENTER

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

    ControlSetText($SenseGui, '', $SenseCtrl, _GUICtrlListBox_GetText($box, $indexB))
    GUISetState(@SW_HIDE, $guiBox)

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

    $show = False
    ElseIf _IsPressed('1B') Then ; ESC
    GUISetState(@SW_HIDE, $guiBox)
    $show = False
    ElseIf _IsPressed('26') Then ; UP
    If $indexB > 0 Then
    $indexB -= 1
    _GUICtrlListBox_SetCurSel($box, $indexB)
    Sleep(90)
    EndIf
    ElseIf _IsPressed('28') Then ; DOWN
    If $indexB < _GUICtrlListBox_GetCount($box)-1 Then
    $indexB += 1
    _GUICtrlListBox_SetCurSel($box, $indexB)
    Sleep(90)
    EndIf
    EndIf
    EndFunc

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

    Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $hCtrl = $lParam
    Local $hSenseCtrl = $SenseCtrl
    If Not IsHWnd($hSenseCtrl) Then $hSenseCtrl = GUICtrlGetHandle($hSenseCtrl)
    If ($nNotifyCode = 1024 Or $nNotifyCode = 6) And $hCtrl = $hSenseCtrl Then
    Local $str = ControlGetText($SenseGui, '', $SenseCtrl)
    $indexB = _GUICtrlListBox_FindString($box, $str)
    _GUICtrlListBox_SetCurSel($box, $indexB)
    $caret = _CaretPos()
    If Not @error And Not $show Then
    If $caret[3] + $caret[4] - 95 < 0 Then ; Platz für Liste über dem Ctrl ausreichend?
    WinMove($guiBox, '', $caret[0], $caret[1] +25) ; Versatz 25 (Ctrlhöhe+5) unter y vom Ctrl
    Else
    WinMove($guiBox, '', $caret[0], $caret[1] -95) ; Versatz 95 (Boxhöhe+10) über y vom Ctrl
    EndIf
    GUISetState(@SW_SHOWNOACTIVATE, $guiBox)
    $show = True
    EndIf
    ElseIf $hCtrl = $box And $nNotifyCode = 1 Then
    $indexB = _GUICtrlListBox_GetCurSel($box)
    ControlSetText($SenseGui, '', $SenseCtrl, _GUICtrlListBox_GetText($box, $indexB))
    GUISetState(@SW_HIDE, $guiBox)
    $show = False
    ElseIf $show And $nNotifyCode = 512 And $hCtrl = $lParam And Not $hCtrl = $box Then
    GUISetState(@SW_HIDE,$guiBox)
    $show = False
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc

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

    Func _WM_ENTERSIZEMOVE($hWnd)
    If $hWnd = $SenseGui Then $POSSenseGui = WinGetPos($SenseGui)
    EndFunc

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

    Func _WM_MOVE($hWnd)
    If $hWnd = $SenseGui Then
    Local $pos = WinGetPos($guiBox)
    Local $postemp = WinGetPos($SenseGui)
    WinMove($guiBox,"",$pos[0]-($POSSenseGui[0]-$postemp[0]),$pos[1]-($POSSenseGui[1]-$postemp[1]))
    $POSSenseGui = WinGetPos($SenseGui)
    EndIf
    EndFunc

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

    Func _CaretPos()
    Local $old = Opt("CaretCoordMode", 0) ;relative mode
    Local $c = WinGetCaretPos() ;relative caret coords
    Local $w = WinGetPos("") ;window's coords
    Local $f = ControlGetFocus("","") ;text region "handle"
    Local $e = ControlGetPos("", "", $f) ;text region coords
    Local $h = ControlGetHandle("", "", $f) ;Ctrl-Handle
    Local $t[5]
    If IsArray($c) and IsArray($w) and IsArray($e) Then
    If _WinAPI_IsClassName($SenseCtrl, 'Edit') Then ; Input wird als Edit-Class erkannt
    $t[0] = $c[0] + $w[0] + $e[0]
    ElseIf _WinAPI_IsClassName($SenseCtrl, 'ComboBox') Then
    $t[0] = $w[0] + $e[0]
    EndIf
    $t[1] = $c[1] + $w[1] + $e[1]
    $t[2] = $h
    $t[3] = $w[1]
    $t[4] = $e[1]
    Opt("CaretCoordMode", $old)
    Return $t ;absolute screen coords of caret cursor
    Else
    Opt("CaretCoordMode", $old)
    SetError(1)
    EndIf
    EndFunc
    #endregion - SenseFuncs

    [/autoit]

    Einmal editiert, zuletzt von Q-Connect (5. Dezember 2012 um 15:09)

  • Bei mir kommt immer das keine Bestellung möglich ist.
    Müssen die 3 ini's schon vorhanden sein ???

    gruss

    Baldrian

    Solange
    du den anderen sein Anderssein nicht verzeihen kannst, bist du noch weit ab vom
    Wege der Weisheit.

  • Finale Version meines Dönerbestellprogramms.
    Kann jetzt Pizza und Döner :)

    Zum Testen einfach eine "bestellung.ini" anlegen mit
    [Bestellung]
    date = 10.09.19


    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <date.au3>
    #include <TabConstants.au3>
    #include <GuiTab.au3>
    #include <ListBoxConstants.au3>
    #include <GUIListBox.au3>
    #include <WinAPI.au3>
    #include <Misc.au3>
    #include <GUIConstants.au3>

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

    Global $iniserv = @WorkingDir & "\bestellung.ini" ;<== Pfad zur Datei in der die Bestellungen gespeichert werden!
    Global $cache = @WorkingDir & "\cache.ini" ;<== Wird von allein angelegt
    Global $iniloc = @WorkingDir & "\doener.ini" ;<== Wird angelegt wenn die Eingaben gespeichert werden sollen

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

    #region ### START Koda GUI section ### Form=
    ;Sensegui
    Global $show = False
    Global $indexB = -1
    Global $SenseGui, $SenseCtrl, $guiBox, $box
    Global $POSSenseGui[2]
    Global $aData[20] = ["Pizzabrot", "Margherita", "Funghi", "Prosciutto", "Salami", "Sardellen", "Americana", "Regina", "Dönerpizza", "Allerlei", "Vegetaria", "Hawaii", "Frutti di Mare", "Calzone", "Tonno", "Quattro Formaggio", "Caprese", "Bavaria", "Spinat", "Broccoli"]
    ;sensegui
    $guiBox = GUICreate('', 180, 100, 100, 600, BitOR($WS_SIZEBOX, $WS_POPUP), BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))

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

    $box = _GUICtrlListBox_Create($guiBox, '', 0, 0, 180, 101, BitOR($LBS_SORT, 0x00B00002))
    ; ListBox muß 1 Pixel höher als GUI sein - sonst fehlerhafte Darstellung <<<<<<<<<<<<<<<< BEACHTEN !!!!!! >>>>>>>>>>>>>>>>>>>>>>>>>>

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

    For $i = 0 To UBound($aData) - 1 ; falls Daten mit _FileReadToArray gelesen werden: StartIndex=1
    _GUICtrlListBox_AddString($box, $aData[$i])
    Next

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

    GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
    GUIRegisterMsg($WM_MOVE, "_WM_MOVE")
    GUIRegisterMsg(0x231, "_WM_ENTERSIZEMOVE")
    #endregion ### START Koda GUI section ### Form=

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

    ; sense

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

    If IniRead($iniserv, "Bestellung", "date", "") = "" Then
    MsgBox(0, "", "Keine Bestellungen in nächster Zeit")
    Exit

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

    Else

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

    $Form1 = GUICreate("Bestellung vom: " & IniRead($iniserv, "Bestellung", "date", "0"), 419, 307, 500, 170)
    GUICtrlCreateLabel("Vorname:", 10, 5)
    $vorname = GUICtrlCreateInput("", 60, 5, 110, 21)
    GUICtrlCreateLabel("Nachname:", 175, 5)
    $nachname = GUICtrlCreateInput("", 240, 5, 110, 21)
    $date = GUICtrlCreateLabel("Datum: " & _NowDate(), 10, 30, 100, 17)
    $bdate = GUICtrlCreateLabel("Nächste Bestellung: " & IniRead($iniserv, "Bestellung", "date", "0"), 140, 30, 180, 17)
    GUICtrlCreateLabel("Bestellung möglich bis Mittag des Vortages", 140, 45, 300, 20)
    $save = GUICtrlCreateCheckbox("Eingabe speichern?", 32, 220, 150, 17)
    $bestell = GUICtrlCreateButton("Bestellen!", 32, 240, 345, 65)

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

    $tabs = GUICtrlCreateTab(0, 50, 419, 170)
    $tab1 = GUICtrlCreateTabItem("Döner")
    GUIStartGroup()
    $d1 = GUICtrlCreateRadio("Döner", 88, 115, 113, 17)
    $d2 = GUICtrlCreateRadio("Dürüm", 232, 115, 113, 17)
    GUIStartGroup()
    $ns = GUICtrlCreateRadio("nicht scharf", 32, 136, 113, 17)
    $ms = GUICtrlCreateRadio("mittel scharf", 176, 136, 113, 17)
    $ss = GUICtrlCreateRadio("sehr scharf", 320, 136, 80, 17)
    $sonder = GUICtrlCreateInput("", 90, 170, 100)
    GUICtrlCreateLabel("Sonderwünsche: ", 10, 170, 80)
    GUICtrlCreateLabel("Stück: ", 240, 170, 80)
    $stuck = GUICtrlCreateCombo("1", 280, 170, 50, 120)
    GUICtrlSetData(-4, "2|3|4|x", "1")

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

    ;Pizza
    $tab2 = GUICtrlCreateTabItem("Pizza")
    GUICtrlCreateLabel("Pizza:", 110, 80)
    $pname = GUICtrlCreateInput("", 150, 80, 90, 17)
    $pklein = GUICtrlCreateRadio("klein", 100, 100)
    $pmittel = GUICtrlCreateRadio("mittel", 200, 100)
    $pgro = GUICtrlCreateRadio("groß", 300, 100)

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

    GUICtrlCreateTabItem("")

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

    $SenseGui = $Form1 ; <== Für Allgemeingültigkeit Zuweisung an $SenseGui
    $SenseCtrl = $pname ; <== Für Allgemeingültigkeit Zuweisung an $SenseCtrl
    $hInput = GUICtrlGetHandle($pname)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    EndIf

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

    _vorarbeit()

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

    While 1
    $nMsg = GUIGetMsg()
    _ChooseBox()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _cacheclean()

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

    Exit

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

    Case $bestell
    If GUICtrlRead($vorname) = "" Or GUICtrlRead($nachname) = "" Then
    MsgBox(0, "Name vergessen?", "Bitte Vor- und/oder Nachname eingeben!")
    Else

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

    _cacheclean()
    Sleep(100)

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

    _cache()
    $n1 = IniRead($cache, "Name", "vorname", "0")
    $n2 = IniRead($cache, "Name", "nachname", "0")
    $e1 = IniRead($cache, "Bestellung", "essen", "0")
    $g1 = IniRead($cache, "Bestellung", "scharf", "0")

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

    If BitAND($e1, 1) Or BitAND($e1, 2) Or BitAND($e1, 3) Then

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

    If $e1 = 1 Then
    $ecount = "Döner"
    Else
    $ecount = "Dürüm"

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

    EndIf
    If $g1 = 1 Then
    $gcount = "nicht scharf"
    ElseIf $g1 = 2 Then
    $gcount = "mittel scharf"
    ElseIf $g1 = 3 Then
    $gcount = "sehr scharf"

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

    EndIf
    Else

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

    $ecount = IniRead($cache, "Pizza", "name", 0)
    ConsoleWrite(" " & $ecount)

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

    $gcount = IniRead($cache, "Pizza", "gr", 0)

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

    EndIf

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

    If BitAND(GUICtrlRead($d1), $GUI_CHECKED) Or BitAND(GUICtrlRead($d2), $GUI_CHECKED) Or BitAND(GUICtrlRead($pklein), $GUI_CHECKED) Or BitAND(GUICtrlRead($pmittel), $GUI_CHECKED) Or BitAND(GUICtrlRead($pgro), $GUI_CHECKED) Then
    $check = MsgBox(4, "Letzer Schritt!", $ecount & " " & $gcount & " wirklich bestellen?")
    If $check = "6" Then
    If BitAND(GUICtrlRead($save), $GUI_CHECKED) Then
    _saver()
    EndIf
    _cache()
    _server()
    MsgBox(0, "Bestellt", $ecount & " " & $gcount & " wurde bestellt!")
    Exit

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

    EndIf
    Else

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

    MsgBox(0, "Error", "Keinen hunger?")
    EndIf
    EndIf
    EndSwitch
    WEnd

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

    Func _vorarbeit()

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

    $l1 = IniRead($iniloc, "Name", "Vorname", "")
    GUICtrlSetData($vorname, $l1)
    $l2 = IniRead($iniloc, "Name", "Nachname", "")
    GUICtrlSetData($nachname, $l2)
    If IniRead($iniloc, "Flag", "flag", "") = "2" Then

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

    _GUICtrlTab_ActivateTab($tabs, 1)
    _GUICtrlTab_SetCurSel($tabs, 1)

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

    For $i = 0 To 4
    Send("{Tab}")
    Next
    GUICtrlSetData($pname, IniRead($iniloc, "Pizza", "pizza", "0"))

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

    $gr = IniRead($iniloc, "Pizza", "gr", "0")
    If $gr = "1" Then
    GUICtrlSetState($pklein, $GUI_CHECKED)
    ElseIf $gr = "2" Then
    GUICtrlSetState($pmittel, $GUI_CHECKED)
    ElseIf $gr = "3" Then
    GUICtrlSetState($pgro, $GUI_CHECKED)
    EndIf

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

    Else

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

    GUICtrlSetData($sonder, IniRead($iniloc, "Wunsch", "Sonderwunsch", ""))
    $doner = IniRead($iniloc, "Bestellung", "essen", "0")
    If $doner = "1" Then
    GUICtrlSetState($d1, $GUI_CHECKED)
    ElseIf $doner = "2" Then
    GUICtrlSetState($d2, $GUI_CHECKED)
    EndIf

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

    $scharf = IniRead($iniloc, "Bestellung", "scharf", "0")
    If $scharf = "1" Then
    GUICtrlSetState($ns, $GUI_CHECKED)
    ElseIf $scharf = "2" Then
    GUICtrlSetState($ms, $GUI_CHECKED)
    ElseIf $scharf = "3" Then
    GUICtrlSetState($ss, $GUI_CHECKED)
    EndIf

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

    EndIf

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

    EndFunc ;==>_vorarbeit

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

    Func _cache()
    IniWrite($cache, "Name", "vorname", GUICtrlRead($vorname))
    IniWrite($cache, "Name", "nachname", GUICtrlRead($nachname))

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

    If GUICtrlRead($tabs) = 1 Then
    IniWrite($cache, "Pizza", "name", GUICtrlRead($pname))

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

    If BitAND(GUICtrlRead($pklein), $GUI_CHECKED) Then
    IniWrite($cache, "Pizza", "gr", "klein")
    ElseIf BitAND(GUICtrlRead($pmittel), $GUI_CHECKED) Then
    IniWrite($cache, "Pizza", "gr", "mittel")
    Else
    IniWrite($cache, "Pizza", "gr", "groß")
    EndIf

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

    Else

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

    If BitAND(GUICtrlRead($d1), $GUI_CHECKED) Then
    IniWrite($cache, "Bestellung", "essen", "1")
    Else
    IniWrite($cache, "Bestellung", "essen", "2")
    EndIf
    If BitAND(GUICtrlRead($ns), $GUI_CHECKED) Then
    IniWrite($cache, "Bestellung", "scharf", "1")
    ElseIf BitAND(GUICtrlRead($ms), $GUI_CHECKED) Then
    IniWrite($cache, "Bestellung", "scharf", "2")
    Else
    IniWrite($cache, "Bestellung", "scharf", "3")
    EndIf
    EndIf

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

    EndFunc ;==>_cache

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

    Func _saver()
    IniWrite($iniloc, "Name", "vorname", GUICtrlRead($vorname))
    IniWrite($iniloc, "Name", "nachname", GUICtrlRead($nachname))

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

    If GUICtrlRead($tabs) = 1 Then
    IniWrite($iniloc, "pizza", "pizza", GUICtrlRead($pname))
    IniWrite($iniloc, "flag", "Flag", "2")
    IniDelete($iniloc, "Bestellung")

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

    If BitAND(GUICtrlRead($pklein), $GUI_CHECKED) Then
    IniWrite($iniloc, "pizza", "gr", "1")
    ElseIf BitAND(GUICtrlRead($pmittel), $GUI_CHECKED) Then
    IniWrite($iniloc, "pizza", "gr", "2")
    Else
    IniWrite($iniloc, "pizza", "gr", "3")
    EndIf

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

    Else
    IniDelete($iniloc, "Flag")
    IniWrite($iniloc, "Wunsch", "Sonderwunsch", GUICtrlRead($sonder))

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

    If BitAND(GUICtrlRead($d1), $GUI_CHECKED) Then
    IniWrite($iniloc, "Bestellung", "essen", "1")
    ElseIf BitAND(GUICtrlRead($d2), $GUI_CHECKED) Then
    IniWrite($iniloc, "Bestellung", "essen", "2")

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

    Else
    MsgBox(0, "Error", "Keine Bestellung!1")
    EndIf

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

    If BitAND(GUICtrlRead($ns), $GUI_CHECKED) Then
    IniWrite($iniloc, "Bestellung", "scharf", "1")
    ElseIf BitAND(GUICtrlRead($ms), $GUI_CHECKED) Then
    IniWrite($iniloc, "Bestellung", "scharf", "2")
    ElseIf BitAND(GUICtrlRead($ss), $GUI_CHECKED) Then
    IniWrite($iniloc, "Bestellung", "scharf", "3")
    Else
    MsgBox(0, "Error", "Keine Bestellung!2")
    EndIf

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

    EndIf

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

    EndFunc ;==>_saver

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

    Func _server()

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

    $n1 = IniRead($cache, "Name", "vorname", "0")
    $n2 = IniRead($cache, "Name", "nachname", "0")

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

    If GUICtrlRead($tabs) = 1 Then

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

    If BitAND(GUICtrlRead($pklein), $GUI_CHECKED) Then
    $counter = IniRead($iniserv, "Pizza", GUICtrlRead($pname) & " klein", 0)
    $counter = $counter + 1
    IniWrite($iniserv, "Pizza", GUICtrlRead($pname) & " klein", $counter)
    IniWrite($iniserv, "Namen", _NowDate() & " " & _NowTime() & " " & $n2 & " " & $n1, "Pizza: " & GUICtrlRead($pname) & " klein sonder: " & GUICtrlRead($sonder) & " Computername: " & @ComputerName)
    ElseIf BitAND(GUICtrlRead($pmittel), $GUI_CHECKED) Then
    $counter = IniRead($iniserv, "Pizza", GUICtrlRead($pname) & " mittel", 0)
    $counter = $counter + 1
    IniWrite($iniserv, "Pizza", GUICtrlRead($pname) & " mittel", $counter)
    IniWrite($iniserv, "Namen", _NowDate() & " " & _NowTime() & " " & $n2 & " " & $n1, "Pizza: " & GUICtrlRead($pname) & " mittel sonder: " & GUICtrlRead($sonder) & " Computername: " & @ComputerName)
    Else
    $counter = IniRead($iniserv, "Pizza", GUICtrlRead($pname) & " groß", 0)
    $counter = $counter + 1
    IniWrite($iniserv, "Pizza", GUICtrlRead($pname) & " groß", $counter)
    IniWrite($iniserv, "Namen", _NowDate() & " " & _NowTime() & " " & $n2 & " " & $n1, "Pizza: " & GUICtrlRead($pname) & " groß sonder: " & GUICtrlRead($sonder) & " Computername: " & @ComputerName)
    EndIf

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

    Else
    $e1 = IniRead($cache, "Bestellung", "essen", "0")
    $g1 = IniRead($cache, "Bestellung", "scharf", "0")
    If $e1 = 1 Then
    $ecount = "Döner"
    Else
    $ecount = "Dürüm"
    EndIf
    If $g1 = 1 Then
    $gcount = "nicht scharf"
    ElseIf $g1 = 2 Then
    $gcount = "mittel scharf"
    Else
    $gcount = "sehr scharf"
    EndIf

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

    IniWrite($iniserv, "Namen", _NowDate() & " " & _NowTime() & " " & $n2 & " " & $n1, $ecount & " " & $gcount & " sonder: " & GUICtrlRead($sonder) & "Stück:" & GUICtrlRead($stuck) & " Computername: " & @ComputerName)
    $d1ns = IniRead($iniserv, "essen", "d1ns", "0")
    $d1ms = IniRead($iniserv, "essen", "d1ms", "0")
    $d1ss = IniRead($iniserv, "essen", "d1ss", "0")
    $d2ns = IniRead($iniserv, "essen", "d2ns", "0")
    $d2ms = IniRead($iniserv, "essen", "d2ms", "0")
    $d2ss = IniRead($iniserv, "essen", "d2ss", "0")

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

    ;Döner ohne scharf
    If BitAND(GUICtrlRead($d1), $GUI_CHECKED) And BitAND(GUICtrlRead($ns), $GUI_CHECKED) Then
    IniWrite($iniserv, "essen", "d1ns", $d1ns + GUICtrlRead($stuck))
    ;Döner mittel
    ElseIf BitAND(GUICtrlRead($d1), $GUI_CHECKED) And BitAND(GUICtrlRead($ms), $GUI_CHECKED) Then
    IniWrite($iniserv, "essen", "d1ms", $d1ms + GUICtrlRead($stuck))
    ;Döner scharf
    ElseIf BitAND(GUICtrlRead($d1), $GUI_CHECKED) And BitAND(GUICtrlRead($ss), $GUI_CHECKED) Then
    IniWrite($iniserv, "essen", "d1ss", $d1ss + GUICtrlRead($stuck))
    ;Dürüm nicht scharf
    ElseIf BitAND(GUICtrlRead($d2), $GUI_CHECKED) And BitAND(GUICtrlRead($ns), $GUI_CHECKED) Then
    IniWrite($iniserv, "essen", "d2ns", $d2ns + GUICtrlRead($stuck))
    ;Dürüm normal
    ElseIf BitAND(GUICtrlRead($d2), $GUI_CHECKED) And BitAND(GUICtrlRead($ms), $GUI_CHECKED) Then
    IniWrite($iniserv, "essen", "d2ms", $d2ms + GUICtrlRead($stuck))
    ;Dürüm scharf
    ElseIf BitAND(GUICtrlRead($d2), $GUI_CHECKED) And BitAND(GUICtrlRead($ss), $GUI_CHECKED) Then
    IniWrite($iniserv, "essen", "d2ss", $d2ss + GUICtrlRead($stuck))
    EndIf
    EndIf

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

    EndFunc ;==>_server

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

    Func _cacheclean()
    IniDelete($cache, "Name")
    IniDelete($cache, "Bestellung")
    IniDelete($cache, "Pizza")
    EndFunc ;==>_cacheclean
    #region - SenseFuncs
    Func _ChooseBox()

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

    If Not $show Or ControlGetText($SenseGui, '', $SenseCtrl) = "" Then
    GUISetState(@SW_HIDE, $guiBox)
    $show = False
    Return
    EndIf

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

    If _IsPressed('0D') Then ; ENTER

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

    ControlSetText($SenseGui, '', $SenseCtrl, _GUICtrlListBox_GetText($box, $indexB))
    GUISetState(@SW_HIDE, $guiBox)

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

    $show = False
    ElseIf _IsPressed('1B') Then ; ESC
    GUISetState(@SW_HIDE, $guiBox)
    $show = False
    ElseIf _IsPressed('26') Then ; UP
    If $indexB > 0 Then
    $indexB -= 1
    _GUICtrlListBox_SetCurSel($box, $indexB)
    Sleep(90)
    EndIf
    ElseIf _IsPressed('28') Then ; DOWN
    If $indexB < _GUICtrlListBox_GetCount($box) - 1 Then
    $indexB += 1
    _GUICtrlListBox_SetCurSel($box, $indexB)
    Sleep(90)
    EndIf
    EndIf
    EndFunc ;==>_ChooseBox

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

    Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $hCtrl = $lParam
    Local $hSenseCtrl = $SenseCtrl
    If Not IsHWnd($hSenseCtrl) Then $hSenseCtrl = GUICtrlGetHandle($hSenseCtrl)
    If ($nNotifyCode = 1024 Or $nNotifyCode = 6) And $hCtrl = $hSenseCtrl Then
    Local $str = ControlGetText($SenseGui, '', $SenseCtrl)
    $indexB = _GUICtrlListBox_FindString($box, $str)
    _GUICtrlListBox_SetCurSel($box, $indexB)
    $caret = _CaretPos()
    If Not @error And Not $show Then
    If $caret[3] + $caret[4] - 95 < 0 Then ; Platz für Liste über dem Ctrl ausreichend?
    WinMove($guiBox, '', $caret[0], $caret[1] + 30) ; Versatz 25 (Ctrlhöhe+5) unter y vom Ctrl
    Else
    WinMove($guiBox, '', $caret[0] - 5, $caret[1] + 15) ; Versatz 95 (Boxhöhe+10) über y vom Ctrl
    EndIf
    GUISetState(@SW_SHOWNOACTIVATE, $guiBox)
    $show = True
    EndIf
    ElseIf $hCtrl = $box And $nNotifyCode = 1 Then
    $indexB = _GUICtrlListBox_GetCurSel($box)
    ControlSetText($SenseGui, '', $SenseCtrl, _GUICtrlListBox_GetText($box, $indexB))
    GUISetState(@SW_HIDE, $guiBox)
    $show = False
    ElseIf $show And $nNotifyCode = 512 And $hCtrl = $lParam And Not $hCtrl = $box Then
    GUISetState(@SW_HIDE, $guiBox)
    $show = False
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_COMMAND

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

    Func _WM_ENTERSIZEMOVE($hWnd)
    If $hWnd = $SenseGui Then $POSSenseGui = WinGetPos($SenseGui)
    EndFunc ;==>_WM_ENTERSIZEMOVE

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

    Func _WM_MOVE($hWnd)
    If $hWnd = $SenseGui Then
    Local $pos = WinGetPos($guiBox)
    Local $postemp = WinGetPos($SenseGui)
    WinMove($guiBox, "", $pos[0] - ($POSSenseGui[0] - $postemp[0]), $pos[1] - ($POSSenseGui[1] - $postemp[1]))
    $POSSenseGui = WinGetPos($SenseGui)
    EndIf
    EndFunc ;==>_WM_MOVE

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

    Func _CaretPos()
    Local $old = Opt("CaretCoordMode", 0) ;relative mode
    Local $c = WinGetCaretPos() ;relative caret coords
    Local $w = WinGetPos("") ;window's coords
    Local $f = ControlGetFocus("", "") ;text region "handle"
    Local $e = ControlGetPos("", "", $f) ;text region coords
    Local $h = ControlGetHandle("", "", $f) ;Ctrl-Handle
    Local $t[5]
    If IsArray($c) And IsArray($w) And IsArray($e) Then
    If _WinAPI_IsClassName($SenseCtrl, 'Edit') Then ; Input wird als Edit-Class erkannt
    $t[0] = $c[0] + $w[0] + $e[0]
    ElseIf _WinAPI_IsClassName($SenseCtrl, 'ComboBox') Then
    $t[0] = $w[0] + $e[0]
    EndIf
    $t[1] = $c[1] + $w[1] + $e[1]
    $t[2] = $h
    $t[3] = $w[1]
    $t[4] = $e[1]
    Opt("CaretCoordMode", $old)
    Return $t ;absolute screen coords of caret cursor
    Else
    Opt("CaretCoordMode", $old)
    SetError(1)
    EndIf
    EndFunc ;==>_CaretPos
    #endregion - SenseFuncs

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • Kleine Tips: Aktualisiere den Startpost, poste dort das neue Skript und den "Changelog". Vileicht kannst du auch den Titel in etwas aussagekräftigeres verwandeln, wie "Fast-Food-Kasse" oder so :D. Aber schöne Arbeit :thumbup:

  • Hi Q-Connect

    bei mir kommt immer "ERROR: _GUICtrlTab_ActivateTab(): undefined function."
    Ich denke das ich einer der Includes nicht habe. Kannst du mir sagen aus was für einem Include du die Function hohls.

    gruss

    Baldrian

    Solange
    du den anderen sein Anderssein nicht verzeihen kannst, bist du noch weit ab vom
    Wege der Weisheit.

  • Hi Baldrian,
    das kommt vom, #include <GuiTab.au3>

    Kopier doch einfach mein Script da stehen doch alle includes richtig drinn ?

  • Servus Q-Connect

    meine GuiTab.au3 war defekt jetzt gehts.

    Nicht schlecht

    gruss

    Baldrian

    Solange
    du den anderen sein Anderssein nicht verzeihen kannst, bist du noch weit ab vom
    Wege der Weisheit.