• Moinsen

    Ich bin zurzeit u.A. im Telefonsupport tätig. Dabei hatte ich schon immer das Problem, dass ich bisher meine Notizen von Hand machen musste.
    Wenn ich also mal keinen Stift zur Hand hatte, ists halt öfters passiert, dass die Notizen dann halt nicht gemacht wurden. So habe ich immer wieder die Namen & Nummern der Anrufer vergessen und das bedeutet im Telefonsupport eigentlich immer Ärger (beschwerden etc.).
    Damit ich sowas in Zukunft vermeiden kann, habe ich nun ein kurzes Skript für einen Notizblock geschrieben.
    Das Ganze wird bei einem Anruf von der Telefonsoftware automatisch gestartet womit es auch die Aufmerksamkeit auf sich zieht (den Teil habe ich hier aber aus Sicherheitsgründen rausnehmen müssen).
    Die erstellten Notizen können gespeichert werden, dadurch kann man sie zu einem späteren Zeitpunkt wieder anzeigen und natürlich auch wieder löschen.
    Gelöschte Notizen werden sicherheitshalber archiviert und können wieder zurück in die Originaldatei kopiert werden.
    Das Skript ist relativ einfach gehalten, da ich nicht allzuviel Zeit damit vergeuden wollte. Es ist bei weitem nicht perfekt, aber für meine Zwecke reicht es absolut.

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListView.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>

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

    $Form1 = GUICreate("Notizblock", 1128, 438, 192, 124)
    $Label1 = GUICtrlCreateLabel("Name:", 5, 5, 35, 17)
    $Label2 = GUICtrlCreateLabel("Standort:", 5, 30, 47, 17)
    $Label3 = GUICtrlCreateLabel("Kontakt:", 5, 55, 44, 17)
    $Label4 = GUICtrlCreateLabel("Protokoll:", 5, 80, 48, 17)
    $Input1 = GUICtrlCreateInput("", 55, 5, 546, 21)
    $Input2 = GUICtrlCreateInput("", 55, 30, 546, 21)
    $Input3 = GUICtrlCreateInput("", 55, 55, 546, 21)
    $Input4 = GUICtrlCreateEdit("", 55, 80, 546, 300, BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL))
    $Button1 = GUICtrlCreateButton("Speichern", 440, 390, 75, 25)
    $List1 = GUICtrlCreateListView("ID|Datum|Zeit|Name", 615, 10, 501, 370, BitOr($LVS_REPORT, $LVS_SHOWSELALWAYS))
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 100)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 50)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 397)
    $Button2 = GUICtrlCreateButton("Leeren", 525, 390, 75, 25)
    $Button3 = GUICtrlCreateButton("Löschen", 1040, 390, 75, 25)
    $Button4 = GUICtrlCreateButton("Anzeigen", 955, 390, 75, 25)
    UpdateList()
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $Time = @HOUR &":" &@MIN
    $Date = @MDAY &"." &@MON &"." &@YEAR
    $Name = StringReplace(StringReplace(GUICtrlRead($Input1), "&", "+"), "#", "*")
    $Place = StringReplace(StringReplace(GUICtrlRead($Input2), "&", "+"), "#", "*")
    $Contact = StringReplace(StringReplace(GUICtrlRead($Input3), "&", "+"), "#", "*")
    $Protocol = StringReplace(StringReplace(GUICtrlRead($Input4), "&", "+"), "#", "*")
    $LineCount = FileCountItems(@ScriptDir &"\Data\reports.log")
    $ReportFile = FileOpen(@ScriptDir &"\Data\reports.log", 1)
    $StringToWrite = $LineCount + 1 &"&" &$Date &"&" &$Time &"&" &$Name &"&" &$Place &"&" &$Contact &"&" &$Protocol &"#"
    FileWriteLine($ReportFile, $StringToWrite)
    GUICtrlSetData($Input1, "")
    GUICtrlSetData($Input2, "")
    GUICtrlSetData($Input3, "")
    GUICtrlSetData($Input4, "")
    FileClose($ReportFile)
    UpdateList()
    GUICtrlSetState($Button3, $GUI_ENABLE)
    GUICtrlSetState($Button4, $GUI_ENABLE)
    Case $Button2
    GUICtrlSetState($Button1, $GUI_ENABLE)
    GUICtrlSetState($Button3, $GUI_ENABLE)
    GUICtrlSetData($Input1, "")
    GUICtrlSetData($Input2, "")
    GUICtrlSetData($Input3, "")
    GUICtrlSetData($Input4, "")
    Case $Button3
    $ToDel = _GUICtrlListView_GetSelectedIndices($List1)
    If $ToDel >= 0 Then
    Archive($ToDel + 1)
    _GUICtrlListView_DeleteItemsSelected($List1)
    FileDeleteItem($ToDel + 1)
    Else
    MsgBox(16, "Eintrag auswählen!", "Sie müssen zuerst einen Eintrag auswählen, den Sie löschen möchten!", 2)
    EndIf
    UpdateList()
    Case $Button4
    GUICtrlSetState($Button1, $GUI_DISABLE)
    GUICtrlSetState($Button3, $GUI_DISABLE)
    $GetLine = _GUICtrlListView_GetSelectedIndices($List1)
    If $GetLine >= 0 Then
    $LineText = FileReadEntry($GetLine + 1)
    $View = StringSplit($LineText, "&")
    GUICtrlSetData($Input1, $View[4])
    GUICtrlSetData($Input2, $View[5])
    GUICtrlSetData($Input3, $View[6])
    GUICtrlSetData($Input4, $View[7])
    Else
    MsgBox(16, "Eintrag auswählen!", "Sie müssen zuerst einen Eintrag auswählen, den Sie anzeigen möchten!", 2)
    EndIf
    UpdateList()
    EndSwitch
    WEnd

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

    Func UpdateList()
    $Select = _GUICtrlListView_GetSelectedIndices($List1)
    GUICtrlDelete($List1)
    $List1 = GUICtrlCreateListView("ID|Datum|Zeit|Name", 615, 10, 501, 370)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 100)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 50)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 297)
    $LineCount = FileCountItems(@ScriptDir &"\Data\reports.log")
    For $i = 1 To $LineCount
    $LineText = FileReadEntry($i)
    $Items = StringSplit($LineText, "&")
    _GUICtrlListView_AddItem($List1, $Items[1])
    _GUICtrlListView_AddSubItem($List1, $i - 1, $Items[2], 1)
    _GUICtrlListView_AddSubItem($List1, $i - 1, $Items[3], 2)
    _GUICtrlListView_AddSubItem($List1, $i - 1, $Items[4], 3)
    Next
    $test = _GUICtrlListView_SetItemSelected(GUICtrlGetHandle($List1), $Select, True)
    If $LineCount = 0 Then
    _GUICtrlListView_AddItem($List1, "")
    _GUICtrlListView_AddSubItem($List1, 0, "Keine Einträge vorhanden!", 3)
    GUICtrlSetState($Button3, $GUI_DISABLE)
    GUICtrlSetState($Button4, $GUI_DISABLE)
    EndIf
    EndFunc

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

    Func FileReadEntry($Entry)
    $FileHandle = FileOpen(@ScriptDir &"\Data\reports.log", 0)
    $String = FileRead($FileHandle)
    $Array = StringSplit($String, "#")
    $Return = $Array[$Entry]
    FileClose($FileHandle)
    Return $Return
    EndFunc

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

    Func FileCountItems($FilePath)
    $FileHandle = FileOpen(@ScriptDir &"\Data\reports.log", 0)
    $String = FileRead($FileHandle)
    $Array = StringSplit($String, "#")
    $ItemCount = $Array[0]
    $Return = $ItemCount - 1
    Return $Return
    EndFunc

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

    Func FileDeleteItem($Entry)
    $FileHandle = FileOpen(@ScriptDir &"\Data\reports.log", 0)
    $String = FileRead($FileHandle)
    FileClose($FileHandle)
    $Array = StringSplit($String, "#")
    _ArrayDelete($Array, $Entry)
    _ArrayDelete($Array, 0)
    $FileHandle = FileOpen(@ScriptDir &"\Data\reports.log", 2)
    $NewString = _ArrayToString($Array, "#")
    FileWrite($FileHandle, $NewString)
    FileClose($FileHandle)
    EndFunc

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

    Func Archive($Entry)
    $FileHandle = FileOpen(@ScriptDir &"\Data\reports.log", 0)
    $String = FileRead($FileHandle)
    FileClose($FileHandle)
    $Array = StringSplit($String, "#")
    $EntryToArchive = $Array[$Entry]
    $ClosedHandle = FileOpen(@ScriptDir &"\Data\closed.log", 1)
    FileWriteLine($ClosedHandle, $EntryToArchive)
    FileClose($ClosedHandle)
    EndFunc

    [/autoit]

    Wer s brauchen kann/anpassen will, solls nehmen "It's free" ;)

    lg Gene

  • Danke, werd ich mir für die Zukunft merken ^^ das hab ich eg. sowieso nur dort reingeschrieben, weil ich dieses Feld im Standardtemplate drinn hatte und zu faul bin die jedes mal speziell anzupassen ;)

    Bild1: Ich beim debuggen

  • Schönes Skript ;)

    [size=8]Vielleicht als nächstes einen Lizenzvereinbarungsgenerator...

    Du wirst lachen, aber sowas habe ich bereits seid etwa 2 Monaten in den Startlöchern für ein anderes Projektchen :D
    Gabz schön kompliziert sowas, aber ich hab mir da mal ein paar andere solche Generatoren (online & offline) angesehen und ich denke da sollte sich was zusammenbasteln lassen.

    Bild1: Ich beim debuggen