EinkaufsRechner (ZielGruppe : Hausfrauen) ^^

  • Hallo Liebe Gemeinde

    Ich habe mit Hilfe von nuts (Danke Nochmal) einen kleinen Script geschrieben der einem ermöglicht eine Datenbank mit Artikeln und dem Jeweiligen Preis anzulegen,
    wenn man diese dann auswählt kann man sich einen EinkaufsZettel schreiben welcher dann Direkt auf dem Desktop gespeichert wird.

    Ich hoffe ihr könnt es gebrauchen

    MFG Eistee


    Edit :
    Einzelne Strings Löschbar
    Auswahl auch per DoppelKlick
    Danke an nuts

    MFG Eistee

  • Hey,

    kleine konstruktive Kritik zum Aufbau (wenn ich darf):

    1. Ein Textfile für alle Artikel würde es auch tun, der Aufbau wäre dann ca. so:

    Code
    Artikel1|1,99
    Artikel2|2,73 
    usw.


    Mit _Filelisttoarray dann einlesen und ab in die Listbox damit.

    2. Zum Berechnen werden jetzt immer wieder alle Artikel zusammengezählt. Das ist natürlich nicht sehr schnell!
    Man könnte auch den Wert des hinzugekommenden Artikels zum Input addieren.

    3. Es werden immer alle Artikel entfernt? Man könnte noch einen zusätzlichen Button für ausgewählte Artikel hinzufügen.

    4. Hinzufügen / Entfernen per Doppelklick ist vielleicht auch nett.

    So das wars erstmal, bei Fragen zur Umsetzung kannste dich ja melden.

  • Ehrlich gesagt wollte ich des sogar das ma einzelne Elemente aus der Listview entfernen kann habe es aber nicht hingekriegt weshalb ich wenigstens den clear button drinnen habe
    das alles in einer Datei läuft finde ich persönlich nicht so toll da gefällt mir der jetzige weg besser
    Und das mit dem Doppelklick wäre schon auch Praktisch du siehst ja den Source Code kannste ja evtl. anpassen ?

    MFG Eistee

  • Mit Doppelklick: (wie man einzelne strings löscht siehst du in der WM:Command() Funktion - s.Kommentar)

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListBoxConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIListBox.au3>
    #NoTrayIcon

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

    DirCreate("C:\BS\EK-RECHNER\DB")
    DirCreate("C:\BS\EK-RECHNER\NEU")
    DirCreate("C:\BS\EK-RECHNER\PIC")
    FileInstall("NEU.exe", @ScriptDir & "\NEU.exe")
    FileInstall("Spaghetti.txt", "C:\BS\EK-RECHNER\DB\Spaghetti.txt")
    FileInstall("HackFleisch.txt", "C:\BS\EK-RECHNER\DB\HackFleisch.txt")
    FileInstall("BG.jpg", "C:\BS\EK-RECHNER\PIC\BG.jpg")

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

    $search = FileFindFirstFile("C:\BS\EK-RECHNER\DB" & "\*.*")

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

    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    $F1 = FileOpen("C:\1.txt", 1)
    FileWrite($F1, $file)
    FileClose($F1)
    $file1 = FileRead("C:\1.txt")
    $file2 = StringRegExpReplace($file1, '.txt', "|")
    WEnd

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

    $Form1 = GUICreate("EinkaufsRechner", 400, 345, -1, -1)
    GUISetBkColor(0x000000)
    $List1 = GUICtrlCreateList("", 8, 28, 160, 240)
    GUICtrlSetData(-1, $file2)
    $List2 = GUICtrlCreateList("", 230, 28, 160, 240)
    $hlist2 = GUICtrlGetHandle($List2)
    $Button1 = GUICtrlCreateButton(">", 184, 124, 30, 25, 0)
    $Button2 = GUICtrlCreateButton("Clear", 179, 164, 40, 25, 0)
    $Input1 = GUICtrlCreateInput("Preis Einkauf in €", 230, 270, 160, 25)
    $Button3 = GUICtrlCreateButton("Neuer Artikel", 8, 270, 160, 25, 0)
    $Button4 = GUICtrlCreateButton("Einkauf Speichern", 148, 309, 100, 25, 0)
    $Pic1 = GUICtrlCreatePic("C:\BS\EK-RECHNER\PIC\BG.jpg", 0, 0, 400, 345, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS, $WS_DISABLED))
    GUICtrlCreateLabel("Artikel", 12, 8)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlCreateLabel("Einkaufs Liste", 234, 8)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUISetState(@SW_SHOW)

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

    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    FileDelete(@ScriptDir & "\NEU.exe")
    FileDelete("C:\1.txt")
    Exit
    Case $Button1
    _1()
    _5()
    Case $Button2
    _2()
    Case $Button3
    _3()
    Case $Button4
    _4()
    EndSwitch
    WEnd

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

    Func _1()
    GUICtrlSetData($List2, GUICtrlRead($List1))
    EndFunc ;==>_1

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

    Func _2()
    GUICtrlSetData($List2, "")
    GUICtrlSetData($input1, "Preis Einkauf in €")
    EndFunc ;==>_2

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

    Func _3()
    ShellExecute(@ScriptDir & "\NEU.exe")
    FileDelete("C:\1.txt")
    Exit
    EndFunc ;==>_3

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

    Func _4()
    Local $lcount = _GUICtrlListBox_GetCount($hlist2)
    Local $open = FileOpen(@DesktopDir & "\EinkaufsZettel " & @MDAY & " . " & @MON & " . " & @YEAR & ".txt", 2) ;den Pfad zum File noch angeben, ggf noch erstellen mit _FileCreate
    For $i = 1 To $lcount
    FileWriteLine($open, _GUICtrlListBox_GetText($hlist2, $i - 1))
    Next
    FileWriteLine($open, GUICtrlRead($Input1))
    FileClose($open)
    EndFunc ;==>_4

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

    Func _5()
    Local $price
    Local $lcount = _GUICtrlListBox_GetCount($hlist2)
    For $i = 1 To $lcount
    Local $open = FileOpen("C:\BS\EK-RECHNER\DB\" & _GUICtrlListBox_GetText($hlist2, $i - 1) & ".txt", 0)
    Local $read = FileReadLine($open, 2)
    FileClose($open)
    $price += StringReplace($read, ",", ".")
    Next
    GUICtrlSetData($Input1, $price & " €")
    EndFunc ;==>_5

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
    If Not IsHWnd($List1) Then $hWndListBox1 = GUICtrlGetHandle($List1)
    If Not IsHWnd($List2) Then $hWndListBox2 = GUICtrlGetHandle($List2)
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word
    Switch $hWndFrom
    Case $List1, $hWndListBox1
    Switch $iCode
    Case $LBN_DBLCLK
    GUICtrlSetData($List2, GUICtrlRead($List1))
    _5()
    EndSwitch
    Case $List2, $hWndListBox2
    Switch $iCode
    Case $LBN_DBLCLK
    _GUICtrlListBox_DeleteString($hlist2, _GUICtrlListBox_GetCurSel($hlist2)) ;so lassen sich einzelne strings löschen
    _5()
    EndSwitch

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

    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND (Bugfix - http://www.autoit.de)

    [/autoit]
  • Hehe, ich finde das Script ganz cool. Die Gui sieht gut aus, es funktioniert soweit auch alles gut - und vllt. wird es wirklich mal gebraucht.

    Nur ich finde mal sollte den gleichen Artikel auch 2mal hinzufügen können, weil man ja durchaus auch mal 2 Packete Spaghetti kauft ;)

    Sonst: Schönes Script!

    Jaja, Moo does the Cow!