Rechnungswesen - Grundbuch Script

  • Hallo,

    vllt hat jmd schonmal sowas geschrieben oder gesehen ... und zwar suche ich ein script, in dem man grundbuch-einträge von rechnungswesen-buchungssätzen eingeben kann.

    das würde mir schon reichen, würde natürlich auch 1 nehmen, was bilanzen und konten anlegt *g*

    PS: ok, dachte mir schon, dass es sowas nicht gibt.
    ich habe schonmal angefangen (das grundgerüsst drumrum) ... könnte aber was hilfe gebrauchen.

    ich bin mir auch noch nicht ganz im klaren, wie ich es machen soll. als erstes will ich die kto-liste schonmal vorfüllen, mit kto und nr. dann wäre es schon, wenn man mit einem doppelklick/ drag&drop, kto+nr in die dafür vorgesehenden felder befördern könnte. ist das möglich?
    dann sollte er auch (mit nem button prüfen, oder schöner wäre, wenn er immer automatisch prüft), das wenn in konto der name steht, er automatisch die nr raussucht um umgekehrt.
    zu guter letzt muss das ganze irgendwie gespeichert werden, wobei ich da an ne einfach txt denke, das sollte reichen.

    hat jmd ideen/ansätze zur umsetzung?

    weiterhin soll es möglich sein, die liste weiter zu füllen, daran werd ich mich heute/morgen setzen ...

    also leute, ein projekt an dem ihr mitwirken könnt *g* zeigt euch =)

    Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.2.4.9
    Author: sc4ry

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

    Script Function:
    hiermit kann man Grundbucheinträge für Rewe erstellen

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

    #ce ----------------------------------------------------------------------------

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

    #include <guiconstants.au3>

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

    $maingui = GUICreate("Grundbuch 0.01", 500, 300)
    $menu = GUICtrlCreateMenu("&Konto")
    $add = GUICtrlCreateMenuItem("&einfügen", $menu)
    $remove = GUICtrlCreateMenuItem("&löschen", $menu)
    $edit = GUICtrlCreateMenuItem("&bearbeiten", $menu)
    GUICtrlCreateGroup("Konten-Liste", 5, 5, 160, 270)
    $list = GUICtrlCreateListView("Konto|Nr.", 10, 20, 150, 250)
    GUICtrlCreateGroup("Grundbuch", 170, 5, 325, 270)
    GUICtrlCreateLabel("Konto", 180, 20)
    GUICtrlCreateLabel("Nr.", 360, 20)
    GUICtrlCreateLabel("Betrag", 430, 20)
    $input1 = GUICtrlCreateInput("", 180, 35, 170, 15)
    $input2 = GUICtrlCreateInput("", 180, 55, 170, 15)
    $input3 = GUICtrlCreateInput("", 180, 75, 170, 15)
    $input4 = GUICtrlCreateInput("", 180, 95, 170, 15)
    GUICtrlCreateLabel("an...", 180, 115)
    $input5 = GUICtrlCreateInput("", 180, 135, 170, 15)
    $input6 = GUICtrlCreateInput("", 180, 155, 170, 15)
    $input7 = GUICtrlCreateInput("", 180, 175, 170, 15)
    $input8 = GUICtrlCreateInput("", 180, 195, 170, 15)
    $input11 = GUICtrlCreateInput("", 360, 35, 60, 15)
    $input12 = GUICtrlCreateInput("", 360, 55, 60, 15)
    $input13 = GUICtrlCreateInput("", 360, 75, 60, 15)
    $input14 = GUICtrlCreateInput("", 360, 95, 60, 15)
    $input15 = GUICtrlCreateInput("", 360, 135, 60, 15)
    $input16 = GUICtrlCreateInput("", 360, 155, 60, 15)
    $input17 = GUICtrlCreateInput("", 360, 175, 60, 15)
    $input18 = GUICtrlCreateInput("", 360, 195, 60, 15)
    $input111 = GUICtrlCreateInput("", 430, 35, 60, 15)
    $input112 = GUICtrlCreateInput("", 430, 55, 60, 15)
    $input113 = GUICtrlCreateInput("", 430, 75, 60, 15)
    $input114 = GUICtrlCreateInput("", 430, 95, 60, 15)
    $input115 = GUICtrlCreateInput("", 430, 135, 60, 15)
    $input116 = GUICtrlCreateInput("", 430, 155, 60, 15)
    $input117 = GUICtrlCreateInput("", 430, 175, 60, 15)
    $input118 = GUICtrlCreateInput("", 430, 195, 60, 15)

    GUISetState ()

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $gui_event_close
    Exit
    EndSelect
    Wend

    [/autoit]
    • Offizieller Beitrag

    Habe Bilanzen zwar niemals mit Enthusiasmus geschrieben, aber noch einige Erinnerungen daran. :D
    Deinem Post entnehme ich, dass es sich um Buchungen für einen Mandanten handelt - also ein fester Kontenplan existiert.

    Zum Speichern reicht hier eine Textdatei vollkommen, da keinerlei Datenbankfunktionalität erforderlich ist.
    ...Textdatei:
    Kontoname1|Kontonummer1
    Kontoname2|Kontonummer2
    Kontoname3|Kontonummer3
    ...
    Kannst du mit _FileReadToArray einlesen und dann in deine Liste (ListView) eintragen.
    Mit Drag&Drop hab ich bisher nicht gearbeitet, aber Doppelklick zum Übernehmen sollte kein Problem sein.
    Die Prüfung auf zugehörige Nr/Kontoname ist an sich kein Problem. Um es automatisch zu tun, kannst du im OnEvent-Mode deinem Input-Feld ein Ereignis zuordnen ( z.B. "Input1Change"). Wird der Wert im Inputfeld verändert und du verläßt mit TAB oder ENTER das Feld, tritt das Ereignis ein.
    Mit der Funktion "Input1Change" kannst du dann auf zugehörigen Namen/Nr prüfen und entsprechend eintragen.
    Die Liste weiter füllen (oder auch löschen, ändern) kannst du super über Kontextmenü machen.

  • ah, du bist zu geil ... =)

    war grad dabei, die liste per ini füllen zu lassen, was aber bissel umständlich ist. filereadtoarray und die sachen direkt mit | zu trennen ist einfach genial *g*

    mal gucken wie ich deine anderen tips verwerten kann *geilgeilgeil*

    PS: was mir grad noch einfällt ... wenn ich einträge löschen will, kann ich das ja so machen:

    Case $msg = $remove
    _GUICtrlListViewDeleteItemsSelected($list)

    jetzt bleiben die natürlich in der txt drin und werden beim nächsten start wieder geladen. also müssen die da auch gelöscht werden. ich könnte natürlich beim beenden filewritefromarray machen ... oder direkt in einem abwasch die zeile aus der txt löschen (würde ich bevorzugen) ... jedoch fehlt mir der ansatz, wie ich das machen soll, da ich in der hilfe keine entsprechende funktion gefunden habe.
    wobei da fällt mir ein, die zeile im listview ist auch die zeile in der txt ... also muss ich sie nicht umständlich suchen ... wie mach ich da weiter? filewritetoline?

    • Offizieller Beitrag

    Hab mal schnell 'nen Entwurf gemacht:

    Spoiler anzeigen
    [autoit]

    #include <guiconstants.au3>
    #include <guilistview.au3>
    #include <file.au3>
    Opt("GUIOnEventMode", 1)

    Global $list
    Global Const $WM_NOTIFY = 0x004E
    Global Const $NM_FIRST = 0
    Global Const $NM_LAST = (-99)
    Global Const $NM_CLICK = ($NM_FIRST - 2)
    Global Const $NM_DBLCLK = ($NM_FIRST - 3)
    Global Const $NM_RCLICK = ($NM_FIRST - 5)
    Global Const $NM_RDBLCLK = ($NM_FIRST - 6)

    Dim $pathKonten = 'testkonten.txt', $pathUndo = $pathKonten & '.BAK'
    Dim $arKonten, $arListe[1]

    $maingui = GUICreate("Grundbuch 0.01", 500, 300)
    GUISetOnEvent($GUI_Event_Close, 'CloseGUI')
    $menu = GUICtrlCreateMenu("&Konto")
    $add = GUICtrlCreateMenuItem("&einfügen", $menu)
    GUICtrlSetOnEvent(-1, 'InsertAcc')
    $edit = GUICtrlCreateMenuItem("&bearbeiten", $menu)
    GUICtrlSetOnEvent(-1, 'EditAcc')
    $blind = GUICtrlCreateMenuItem("", $menu)
    $remove = GUICtrlCreateMenuItem("&löschen", $menu)
    GUICtrlSetOnEvent(-1, 'DeleteAcc')
    $blind = GUICtrlCreateMenuItem("", $menu)
    $undo = GUICtrlCreateMenuItem("&undo", $menu)
    GUICtrlSetOnEvent(-1, 'Undo')
    GUICtrlCreateGroup("Konten-Liste", 5, 5, 160, 270)
    $list = GUICtrlCreateListView("Konto|Nr.", 10, 20, 150, 250, -1, BitOR($LVS_EX_GRIDLINES,$LVS_EX_FULLROWSELECT))
    _GUICtrlListViewSetColumnWidth(-1, 0, 88)
    _GUICtrlListViewSetColumnWidth(-1, 1, 57)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("Grundbuch", 170, 5, 325, 270)
    GUICtrlCreateLabel("Konto", 180, 20)
    GUICtrlCreateLabel("Nr.", 360, 20)
    GUICtrlCreateLabel("Betrag", 430, 20)
    $input1 = GUICtrlCreateInput("", 180, 35, 170, 15)
    $input2 = GUICtrlCreateInput("", 180, 55, 170, 15)
    $input3 = GUICtrlCreateInput("", 180, 75, 170, 15)
    $input4 = GUICtrlCreateInput("", 180, 95, 170, 15)
    GUICtrlCreateLabel("an...", 180, 115)
    $input5 = GUICtrlCreateInput("", 180, 135, 170, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input6 = GUICtrlCreateInput("", 180, 155, 170, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input7 = GUICtrlCreateInput("", 180, 175, 170, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input8 = GUICtrlCreateInput("", 180, 195, 170, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input11 = GUICtrlCreateInput("", 360, 35, 60, 15)
    $input12 = GUICtrlCreateInput("", 360, 55, 60, 15)
    $input13 = GUICtrlCreateInput("", 360, 75, 60, 15)
    $input14 = GUICtrlCreateInput("", 360, 95, 60, 15)
    $input15 = GUICtrlCreateInput("", 360, 135, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg')
    $input16 = GUICtrlCreateInput("", 360, 155, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg')
    $input17 = GUICtrlCreateInput("", 360, 175, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg')
    $input18 = GUICtrlCreateInput("", 360, 195, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg')
    $input111 = GUICtrlCreateInput("", 430, 35, 60, 15)
    $input112 = GUICtrlCreateInput("", 430, 55, 60, 15)
    $input113 = GUICtrlCreateInput("", 430, 75, 60, 15)
    $input114 = GUICtrlCreateInput("", 430, 95, 60, 15)
    $input115 = GUICtrlCreateInput("", 430, 135, 60, 15)
    $input116 = GUICtrlCreateInput("", 430, 155, 60, 15)
    $input117 = GUICtrlCreateInput("", 430, 175, 60, 15)
    $input118 = GUICtrlCreateInput("", 430, 195, 60, 15)
    GUICtrlCreateGroup("", -99, -99, 1, 1)

    GUISetState(@SW_SHOW, $maingui)
    ReadAcc($pathKonten)

    GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events")

    While 1
    Sleep(100)
    Wend

    Func CloseGUI()
    Exit
    EndFunc

    Func ReadAcc($PATH) ; aus Datei in ListView schreiben
    _FileReadToArray($PATH, $arKonten)
    If (Not IsArray($arKonten)) Then
    MsgBox(0, 'Fehler', 'Kontenliste konnte nicht gelesen werden!')
    Return
    EndIf
    ReDim $arListe[UBound($arKonten)-1]
    For $i = 1 To $arKonten[0]
    $arListe[$i-1] = GUICtrlCreateListViewItem($arKonten[$i], $list)
    Next
    EndFunc

    Func WriteAcc() ; aus ListView in Datei schreiben (nach jedem Edit, Add und Löschen)
    $anz = _GUICtrlListViewGetItemCount($list)
    ReDim $arKonten[$anz]
    For $i = 0 To UBound($arKonten)-1
    $arKonten[$i] = _GUICtrlListViewGetItemText($list, $i, 0) & '|' & _GUICtrlListViewGetItemText($list, $i, 1)
    Next
    If FileExists($pathKonten) Then FileMove($pathKonten, $pathKonten & '.BAK', 1)
    _FileWriteFromArray($pathKonten, $arKonten)
    EndFunc

    Func InsertAcc() ; Konto hinzufügen
    ReDim $arListe[UBound($arListe)+1]
    $arListe[UBound($arListe)-1] = GUICtrlCreateListViewItem( InputBox('Kontoname', 'Bitte Namen des neuen Kontos eingeben:') & '|' & _
    InputBox('Kontonummer', 'Bitte die Nummer des neuen Kontos eingeben:'), $list)
    WriteAcc()
    EndFunc

    Func DeleteAcc() ; Konto löschen
    $index = _GUICtrlListViewGetCurSel($list)
    _GUICtrlListViewDeleteItem ($list, $index)
    WriteAcc()
    EndFunc

    Func EditAcc() ; Konto bearbeiten
    $index = _GUICtrlListViewGetCurSel($list)
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    $number = _GUICtrlListViewGetItemText($list, $index, 1)
    $name = InputBox('Kontoname', 'Hier können Sie den Kontennamen ändern:', $name)
    $number = InputBox('Kontonummer', 'Hier können Sie die Kontonummer ändern:', $number)
    _GUICtrlListViewSetItemText($list, $index, 0, $name)
    _GUICtrlListViewSetItemText($list, $index, 1, $number)
    WriteAcc()
    EndFunc

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

    Func Undo() ; letzte Aktion (Edit, New, Delete) rückgängig machen
    _GUICtrlListViewDeleteAllItems($list)
    ReadAcc($pathUndo)
    WriteAcc()
    EndFunc

    Func ListView_DoubleClick() ; Werte übertragen
    $index = _GUICtrlListViewGetCurSel($list)
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    $number = _GUICtrlListViewGetItemText($list, $index, 1)
    For $i = $input1 To $input4
    If GUICtrlRead($i) = '' Then
    GUICtrlSetData($i, $name)
    Switch $i
    Case $input1
    GUICtrlSetData($input11, $number)
    Case $input2
    GUICtrlSetData($input12, $number)
    Case $input3
    GUICtrlSetData($input13, $number)
    Case $input4
    GUICtrlSetData($input14, $number)
    EndSwitch
    ExitLoop
    EndIf
    Next
    EndFunc

    Func NameChg() ; einfach alle Namensfelder prüfen
    ; Kontoname hat sich geändert, Nummer zuordnen
    EndFunc

    Func NumberChg() ; einfach alle Nummerfelder prüfen
    ; Kontonummer hat sich geändert, Namen zuordnen
    EndFunc

    ; WM_NOTIFY event handler
    Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam)
    ;#forceref $hWndGUI, $MsgID, $wParam
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam);NMHDR (hwndFrom, idFrom, code)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3)
    Select
    Case $wParam = $list
    Select
    Case $event = $NM_CLICK
    ;~ ListView_Click ()
    Case $event = $NM_DBLCLK
    ListView_DoubleClick ()
    Case $event = $NM_RCLICK
    ;~ ListView_RightClick ()
    Case $event = $NM_RDBLCLK
    ;~ ListView_RightDblClick ()
    EndSelect
    EndSelect
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc ;==>WM_Notify_Events

    [/autoit]

    Den Rest schaffst du schon. ;)
    Ansonsten fragen.

    Edit: Ich war grad so schön in Gange.. da hab ich die ListView-Funktionen noch fertig gemacht. ;) Was dir jetzt noch bleibt, ist die Übergabe der Kontonamen/nummern und der Autocheck.
    Viel Spaß dabei.

    Edit2: OK, Werte übertragen per Doppelklick ist auch erledigt.

    Edit3: Hab noch ein Undo als Aktion eingebunden. Somit kann die jeweils letzte Listenaktion (Neu, Ändern, Löschen) rückgängig gemacht werden.
    Hinweis:
    In der jetzigen Form ist Voraussetzung, dass die Textdatei mit den Konten mindestens einen Eintrag enthält.

  • morgen bugfix ... big thx, muss mich jetzt erstmal einlesen.
    bis jetzt scheint ja alles super zu klappen =)

    hab nur 1 sache ... die einträge per doppelklick übertragen ist ne super sache, aber die buchungssätze sind unterschiedlich lang, d.h. es werden nicht immer alle 8, bzw die ersten und letzten 4 vollständig genutzt.

    da müsste es ne andere möglichkeit geben, evtl nen kleinen button vor jedem eintrag, der, wenn man darauf klickt, automatisch die markierten werte in die inputboxen einträgt.
    und evtl autoausfüllen ... mal gucken wieviel ich während der schule heute schaffe *g*

    bzw ich fang mal mit der output-datei an =)

    thx thx thx

  • so, hab jetzt theoretisch alles fertig.
    es fehlt eigentlich nur noch der check, dass wenn ich was eingebe, er sich die nr oder den namen zieht.

    mal gucken ob ich das schaffe, der rest schaut so aus

    PS: hab grad mal wg drag&drop geschaut.
    das geht eigentlich schon mit "GUICtrlSetState(-1, $GUI_DROPACCEPTED )" , aber er schreibt dann natürlich aus guilistview beide/alle spalten in eine box. wie kann man das aufteilen, dass er spalte 1 in inputbox1 schreibt, und spalte 2 in inputbox2 ?
    also mit setdata sollte das ja gehen, aber wie fange ich diese drag&drop ab, so dass ich danach was ausführen kann?

    Spoiler anzeigen
    [autoit]

    #include <guiconstants.au3>
    #include <guilistview.au3>
    #include <file.au3>
    Opt("GUIOnEventMode", 1)

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

    Global $flag
    Global $list
    Global $nr = 1
    Global Const $WM_NOTIFY = 0x004E
    Global Const $NM_FIRST = 0
    Global Const $NM_LAST = (-99)
    Global Const $NM_CLICK = ($NM_FIRST - 2)
    Global Const $NM_DBLCLK = ($NM_FIRST - 3)
    Global Const $NM_RCLICK = ($NM_FIRST - 5)
    Global Const $NM_RDBLCLK = ($NM_FIRST - 6)

    Dim $pathKonten = 'konten.txt', $pathUndo = $pathKonten & '.BAK'
    Dim $arKonten, $arListe[1]

    $maingui = GUICreate("Grundbuch 0.01", 500, 300)
    GUISetOnEvent($GUI_Event_Close, 'CloseGUI')
    $menu = GUICtrlCreateMenu("&Konto")
    $add = GUICtrlCreateMenuItem("&einfügen", $menu)
    GUICtrlSetOnEvent(-1, 'InsertAcc')
    $edit = GUICtrlCreateMenuItem("&bearbeiten", $menu)
    GUICtrlSetOnEvent(-1, 'EditAcc')
    $blind = GUICtrlCreateMenuItem("", $menu)
    $remove = GUICtrlCreateMenuItem("&löschen", $menu)
    GUICtrlSetOnEvent(-1, 'DeleteAcc')
    $blind = GUICtrlCreateMenuItem("", $menu)
    $undo = GUICtrlCreateMenuItem("&undo", $menu)
    GUICtrlSetOnEvent(-1, 'Undo')
    GUICtrlCreateGroup("Konten-Liste", 5, 5, 160, 270)
    $list = GUICtrlCreateListView("Konto|Nr.", 10, 20, 150, 250, -1, BitOR($LVS_EX_GRIDLINES,$LVS_EX_FULLROWSELECT))
    _GUICtrlListViewSetColumnWidth(-1, 0, 88)
    _GUICtrlListViewSetColumnWidth(-1, 1, 57)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("Grundbuch", 170, 5, 325, 270)
    GUICtrlCreateLabel("Konto", 180, 20)
    GUICtrlCreateLabel("Nr.", 360, 20)
    GUICtrlCreateLabel("Betrag", 430, 20)
    GUICtrlCreateLabel("an...", 180, 115)
    $button1 = GUICtrlCreateButton(">", 175, 35, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn1')
    $button2 = GUICtrlCreateButton(">", 175, 55, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn2')
    $button3 = GUICtrlCreateButton(">", 175, 75, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn3')
    $button4 = GUICtrlCreateButton(">", 175, 95, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn4')
    $button5 = GUICtrlCreateButton(">", 175, 135, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn5')
    $button6 = GUICtrlCreateButton(">", 175, 155, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn6')
    $button7 = GUICtrlCreateButton(">", 175, 175, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn7')
    $button8 = GUICtrlCreateButton(">", 175, 195, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn8')
    $input1 = GUICtrlCreateInput("", 195, 35, 155, 15)
    $input2 = GUICtrlCreateInput("", 195, 55, 155, 15)
    $input3 = GUICtrlCreateInput("", 195, 75, 155, 15)
    $input4 = GUICtrlCreateInput("", 195, 95, 155, 15)
    $input5 = GUICtrlCreateInput("", 195, 135, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input6 = GUICtrlCreateInput("", 195, 155, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input7 = GUICtrlCreateInput("", 195, 175, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input8 = GUICtrlCreateInput("", 195, 195, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input11 = GUICtrlCreateInput("", 360, 35, 60, 15)
    $input12 = GUICtrlCreateInput("", 360, 55, 60, 15)
    $input13 = GUICtrlCreateInput("", 360, 75, 60, 15)
    $input14 = GUICtrlCreateInput("", 360, 95, 60, 15)
    $input15 = GUICtrlCreateInput("", 360, 135, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg')
    $input16 = GUICtrlCreateInput("", 360, 155, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg')
    $input17 = GUICtrlCreateInput("", 360, 175, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg')
    $input18 = GUICtrlCreateInput("", 360, 195, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg')
    $input111 = GUICtrlCreateInput("", 430, 35, 60, 15)
    $input112 = GUICtrlCreateInput("", 430, 55, 60, 15)
    $input113 = GUICtrlCreateInput("", 430, 75, 60, 15)
    $input114 = GUICtrlCreateInput("", 430, 95, 60, 15)
    $input115 = GUICtrlCreateInput("", 430, 135, 60, 15)
    $input116 = GUICtrlCreateInput("", 430, 155, 60, 15)
    $input117 = GUICtrlCreateInput("", 430, 175, 60, 15)
    $input118 = GUICtrlCreateInput("", 430, 195, 60, 15)
    GUICtrlCreateLabel("File-Name", 180, 225)
    $filename = GUICtrlCreateInput("", 240, 225, 200, 15)
    GUICtrlCreateButton("speicher Buchungssatz", 280, 245, -1, -1, $BS_DEFPUSHBUTTON)
    GUICtrlSetOnEvent(-1, 'save')
    GUICtrlCreateGroup("", -99, -99, 1, 1)

    GUISetState(@SW_SHOW, $maingui)
    ReadAcc($pathKonten)

    GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events")

    While 1
    Sleep(100)
    Wend

    Func CloseGUI()
    Exit
    EndFunc

    Func ReadAcc($PATH) ; aus Datei in ListView schreiben
    _FileReadToArray($PATH, $arKonten)
    If (Not IsArray($arKonten)) Then
    MsgBox(0, 'Fehler', 'Kontenliste konnte nicht gelesen werden!')
    Return
    EndIf
    ReDim $arListe[UBound($arKonten)-1]
    For $i = 1 To $arKonten[0]
    $arListe[$i-1] = GUICtrlCreateListViewItem($arKonten[$i], $list)
    Next
    EndFunc

    Func WriteAcc() ; aus ListView in Datei schreiben (nach jedem Edit, Add und Löschen)
    $anz = _GUICtrlListViewGetItemCount($list)
    ReDim $arKonten[$anz]
    For $i = 0 To UBound($arKonten)-1
    $arKonten[$i] = _GUICtrlListViewGetItemText($list, $i, 0) & '|' & _GUICtrlListViewGetItemText($list, $i, 1)
    Next
    If FileExists($pathKonten) Then FileMove($pathKonten, $pathKonten & '.BAK', 1)
    _FileWriteFromArray($pathKonten, $arKonten)
    EndFunc

    Func InsertAcc() ; Konto hinzufügen
    ReDim $arListe[UBound($arListe)+1]
    $arListe[UBound($arListe)-1] = GUICtrlCreateListViewItem( InputBox('Kontoname', 'Bitte Namen des neuen Kontos eingeben:', "", "", 300, 120) & '|' & _
    InputBox('Kontonummer', 'Bitte die Nummer des neuen Kontos eingeben:', "", "", 300, 120), $list)
    WriteAcc()
    EndFunc

    Func DeleteAcc() ; Konto löschen
    $index = _GUICtrlListViewGetCurSel($list)
    _GUICtrlListViewDeleteItem ($list, $index)
    WriteAcc()
    EndFunc

    Func EditAcc() ; Konto bearbeiten
    $index = _GUICtrlListViewGetCurSel($list)
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    $number = _GUICtrlListViewGetItemText($list, $index, 1)
    $name = InputBox('Kontoname', 'Hier können Sie den Kontennamen ändern:', $name, "", 300, 120)
    $number = InputBox('Kontonummer', 'Hier können Sie die Kontonummer ändern:', $number, "", 300, 120)
    _GUICtrlListViewSetItemText($list, $index, 0, $name)
    _GUICtrlListViewSetItemText($list, $index, 1, $number)
    WriteAcc()
    EndFunc

    Func Undo() ; letzte Aktion (Edit, New, Delete) rückgängig machen
    _GUICtrlListViewDeleteAllItems($list)
    ReadAcc($pathUndo)
    WriteAcc()
    EndFunc

    Func ListView_DoubleClick() ; Werte übertragen
    $index = _GUICtrlListViewGetCurSel($list)
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    $number = _GUICtrlListViewGetItemText($list, $index, 1)
    For $i = $input1 To $input8
    If GUICtrlRead($i) = '' Then
    GUICtrlSetData($i, $name)
    Switch $i
    Case $input1
    GUICtrlSetData($input11, $number)
    Case $input2
    GUICtrlSetData($input12, $number)
    Case $input3
    GUICtrlSetData($input13, $number)
    Case $input4
    GUICtrlSetData($input14, $number)
    Case $input5
    GUICtrlSetData($input15, $number)
    Case $input6
    GUICtrlSetData($input16, $number)
    Case $input7
    GUICtrlSetData($input17, $number)
    Case $input8
    GUICtrlSetData($input18, $number)
    EndSwitch
    ExitLoop
    EndIf
    Next
    EndFunc

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

    Func FillIn1()
    $index = _GUICtrlListViewGetCurSel($list)
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    $number = _GUICtrlListViewGetItemText($list, $index, 1)
    GUICtrlSetData($input1, $name)
    GUICtrlSetData($input11, $number)
    EndFunc
    Func FillIn2()
    $index = _GUICtrlListViewGetCurSel($list)
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    $number = _GUICtrlListViewGetItemText($list, $index, 1)
    GUICtrlSetData($input2, $name)
    GUICtrlSetData($input12, $number)
    EndFunc
    Func FillIn3()
    $index = _GUICtrlListViewGetCurSel($list)
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    $number = _GUICtrlListViewGetItemText($list, $index, 1)
    GUICtrlSetData($input3, $name)
    GUICtrlSetData($input13, $number)
    EndFunc
    Func FillIn4()
    $index = _GUICtrlListViewGetCurSel($list)
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    $number = _GUICtrlListViewGetItemText($list, $index, 1)
    GUICtrlSetData($input4, $name)
    GUICtrlSetData($input14, $number)
    EndFunc
    Func FillIn5()
    $index = _GUICtrlListViewGetCurSel($list)
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    $number = _GUICtrlListViewGetItemText($list, $index, 1)
    GUICtrlSetData($input5, $name)
    GUICtrlSetData($input15, $number)
    EndFunc
    Func FillIn6()
    $index = _GUICtrlListViewGetCurSel($list)
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    $number = _GUICtrlListViewGetItemText($list, $index, 1)
    GUICtrlSetData($input6, $name)
    GUICtrlSetData($input16, $number)
    EndFunc
    Func FillIn7()
    $index = _GUICtrlListViewGetCurSel($list)
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    $number = _GUICtrlListViewGetItemText($list, $index, 1)
    GUICtrlSetData($input7, $name)
    GUICtrlSetData($input17, $number)
    EndFunc
    Func FillIn8()
    $index = _GUICtrlListViewGetCurSel($list)
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    $number = _GUICtrlListViewGetItemText($list, $index, 1)
    GUICtrlSetData($input8, $name)
    GUICtrlSetData($input18, $number)
    EndFunc

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

    Func NameChg() ; einfach alle Namensfelder prüfen
    ; Kontoname hat sich geändert, Nummer zuordnen
    EndFunc

    Func NumberChg() ; einfach alle Nummerfelder prüfen
    ; Kontonummer hat sich geändert, Namen zuordnen
    EndFunc

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

    Func save()
    If GUICtrlRead($filename) = "" Then
    $flag = True
    $file2 = InputBox("File-Name", "Geben Sie einen File-Namen ein", "", "", 300,120)
    $file = $file2 & ".txt"
    Else
    $file = GUICtrlRead($filename) & ".txt"
    EndIf
    $save = FileOpen($file, 1)
    FileWrite($save, "> " & $nr & "." & @CRLF)
    If GUICtrlRead($input1) = "" Then
    Else
    FileWrite($save, GUICtrlRead($input11) & " " & GUICtrlRead($input1) & " " & GUICtrlRead($input111) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input2) = "" Then
    Else
    FileWrite($save, GUICtrlRead($input12) & " " & GUICtrlRead($input2) & " " & GUICtrlRead($input112) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input3) = "" Then
    Else
    FileWrite($save, GUICtrlRead($input13) & " " & GUICtrlRead($input3) & " " & GUICtrlRead($input113) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input4) = "" Then
    Else
    FileWrite($save, GUICtrlRead($input14) & " " & GUICtrlRead($input4) & " " & GUICtrlRead($input114) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input5) = "" Then
    Else
    FileWrite($save, "an " & GUICtrlRead($input15) & " " & GUICtrlRead($input5) & " " & GUICtrlRead($input115) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input6) = "" Then
    Else
    FileWrite($save, "an " & GUICtrlRead($input16) & " " & GUICtrlRead($input6) & " " & GUICtrlRead($input116) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input7) = "" Then
    Else
    FileWrite($save, "an " & GUICtrlRead($input17) & " " & GUICtrlRead($input7) & " " & GUICtrlRead($input117) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input8) = "" Then
    Else
    FileWrite($save, "an " & GUICtrlRead($input18) & " " & GUICtrlRead($input8) & " " & GUICtrlRead($input118) & " €" & @CRLF)
    EndIf
    $sum1 = GUICtrlRead($input111) + GUICtrlRead($input112) + GUICtrlRead($input113) + GUICtrlRead($input114)
    $sum2 = GUICtrlRead($input115) + GUICtrlRead($input116) + GUICtrlRead($input117) + GUICtrlRead($input118)
    FileWrite($save, "-" & @CRLF)
    If $sum1 = $sum2 Then
    FileWrite($save, "Check: OK Ergebnis: " & $sum1 & " €" & @CRLF)
    Else
    FileWrite($save, "Check: " & $sum1 & " zu " & $sum2 & " Differenz: " & $sum1 - $sum2 & " €" & @CRLF)
    EndIf
    FileWrite($save, @CRLF)
    FileClose($save)
    For $i = $input1 To $input118
    GUICtrlSetData($i, "")
    Next
    If $flag = True Then
    GUICtrlSetData($filename, $file2)
    $flag = False
    Else
    EndIf
    $nr = $nr + 1
    EndFunc

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

    ; WM_NOTIFY event handler
    Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam)
    ;#forceref $hWndGUI, $MsgID, $wParam
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam);NMHDR (hwndFrom, idFrom, code)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3)
    Select
    Case $wParam = $list
    Select
    Case $event = $NM_CLICK
    ;~ ListView_Click ()
    Case $event = $NM_DBLCLK
    ListView_DoubleClick ()
    Case $event = $NM_RCLICK
    ;~ ListView_RightClick ()
    Case $event = $NM_RDBLCLK
    ;~ ListView_RightDblClick ()
    EndSelect
    EndSelect
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc ;==>WM_Notify_Events

    [/autoit]
    • Offizieller Beitrag

    Hier für Drag'nDrop:

    EDIT: Auto-Ausfüllen bei Eintrag Kontoname hinzugefügt.
    EDIT2: Auto-Ausfüllen bei Eintrag Nummer hinzugefügt. Jetzt mußt du nur noch komplettieren.
    EDIT3: Wohl hoffentlich das letzte Edit :D - Fehlerbehandlung eingefügt, falls Nummer/Name nicht gefunden

    Spoiler anzeigen
    [autoit]

    $input1 = GUICtrlCreateInput("", 195, 35, 155, 15)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED )
    GUICtrlSetOnEvent(-1, 'NameChg1')
    ;..
    $input11 = GUICtrlCreateInput("", 360, 35, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg1')
    ;..
    ;..
    Func NameChg1() ; ###### für jedes $Input eine Funktion #########
    If StringInStr(GUICtrlRead($input1), '|') Then
    $str = StringSplit(GUICtrlRead($input1), '|')
    GUICtrlSetData($input1, $str[1])
    GUICtrlSetData($input11, $str[2])
    Else
    $index = _LV_Search($list, GUICtrlRead($input1))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontoname nicht vorhanden!')
    Return
    EndIf
    $number = _GUICtrlListViewGetItemText($list, $index, 1)
    GUICtrlSetData($input11, $number)
    EndIf
    EndFunc

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

    Func NumberChg1()
    $index = _LV_Search($list, GUICtrlRead($input11))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    GUICtrlSetData($input1, $name)
    EndFunc

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

    ; Die Funktion _GUICtrlListViewFindItem() ist zwar schön kompliziert, findet aber nix in SubItems.
    ; Also habe ich hier noch eine neue Suchfunktion geschrieben.

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

    Func _LV_Search($LV, $What2Find)
    $count = _GUICtrlListViewGetItemCount($LV)
    If $count < 1 Then Return -1 ; Return -1 ; leere Liste
    $countSub = _GUICtrlListViewGetSubItemsCount($LV)
    For $i = 0 To $count-1
    For $k = 0 To $countSub-1
    If _GUICtrlListViewGetItemText($LV, $i, $k) = $What2Find Then Return $i
    Next
    Next
    Return -2 ; Return -2 ; nicht gefunden
    EndFunc

    [/autoit]

    Wenn der Wert in Input1 (.. 8 ) gezogen wurde, muß ENTER gedrückt werden damit das Ereignis eintritt.
    Deshalb kannst du deinen Speicher-Button NICHT als $BS_DEFPUSHBUTTON definieren.

    [autoit]

    GUICtrlCreateButton("speicher Buchungssatz", 280, 245);, -1, -1, $BS_DEFPUSHBUTTON)

    [/autoit]
  • danke bugfix, werd es mir mal schnell angucken.
    auf dem weg zu meinen verwandten, hab ich im auto am lappi auch weitergemacht.

    das ist dabei rumgekommen...

    nicht geklappt hat bis jetzt nur, den namen nach eingabe des names
    drag&drop bin ich net zu gekommen =)

    PS: ah, ich wollte schon fragen warum ich das mit der nr. nicht hinbekomme ... halbe hinfahrt und ganze rückfahrt probiert (1 h) =)

    PPS: so, hier mal die finale version. habe mal auf drag&drop verzichtet, hoffe das ok und du hast nicht zuviel arbeit investiert. meinst du das ist soweit erstmal ok (um es unter die leute zu bringen?)?
    werde noch minimale sachen ändern, die mit dem speichern in der txt zu tun haben ...
    aber ich habe schon ne idee für ne weitere version, die das ganze in excel exportiert (werd ich mich die tage dransetzen, sollte auch net soviel arbeit sein, mit excel.udf)

    aber vielen lieben großen dank an bugfix =)
    wenns soweit fertig ist, kommts in scripte *g*

    Spoiler anzeigen
    [autoit]

    #include <guiconstants.au3>
    #include <guilistview.au3>
    #include <file.au3>
    Opt("GUIOnEventMode", 1)

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

    HotKeySet("^z", 'Undo')
    HotKeySet("{F1}", 'InsertAcc')
    HotKeySet("{F2}", 'EditAcc')
    HotKeySet("{F3}", 'DeleteAcc')
    HotKeySet("{F5}", 'save')

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

    Global $flag
    Global $list
    Global $nr = 1
    Global $input, $iinput, $iiinput
    Global Const $WM_NOTIFY = 0x004E
    Global Const $NM_FIRST = 0
    Global Const $NM_LAST = (-99)
    Global Const $NM_CLICK = ($NM_FIRST - 2)
    Global Const $NM_DBLCLK = ($NM_FIRST - 3)
    Global Const $NM_RCLICK = ($NM_FIRST - 5)
    Global Const $NM_RDBLCLK = ($NM_FIRST - 6)

    Dim $pathKonten = 'konten.txt', $pathUndo = $pathKonten & '.BAK'
    Dim $arKonten, $arListe[1]

    $maingui = GUICreate("Grundbuch 0.01", 500, 300)
    GUISetOnEvent($GUI_Event_Close, 'CloseGUI')
    $menu = GUICtrlCreateMenu("&Konto")
    $add = GUICtrlCreateMenuItem("&einfügen F1", $menu)
    GUICtrlSetOnEvent(-1, 'InsertAcc')
    $edit = GUICtrlCreateMenuItem("&bearbeiten F2", $menu)
    GUICtrlSetOnEvent(-1, 'EditAcc')
    $blind = GUICtrlCreateMenuItem("", $menu)
    $remove = GUICtrlCreateMenuItem("&löschen F3", $menu)
    GUICtrlSetOnEvent(-1, 'DeleteAcc')
    $blind = GUICtrlCreateMenuItem("", $menu)
    $undo = GUICtrlCreateMenuItem("&undo STRG+Z", $menu)
    GUICtrlSetOnEvent(-1, 'Undo')
    GUICtrlCreateGroup("Konten-Liste", 0, 5, 170, 270)
    $list = GUICtrlCreateListView("Konto|Nr.", 5, 20, 160, 250, -1, BitOR($LVS_EX_GRIDLINES,$LVS_EX_FULLROWSELECT))
    _GUICtrlListViewSetColumnWidth(-1, 0, 88)
    _GUICtrlListViewSetColumnWidth(-1, 1, 57)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("Grundbuch", 170, 5, 330, 270)
    GUICtrlCreateLabel("Konto", 180, 20)
    GUICtrlCreateLabel("Nr.", 360, 20)
    GUICtrlCreateLabel("Betrag", 430, 20)
    GUICtrlCreateLabel("an...", 180, 115)
    $button1 = GUICtrlCreateButton(">", 175, 35, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button2 = GUICtrlCreateButton(">", 175, 55, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button3 = GUICtrlCreateButton(">", 175, 75, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button4 = GUICtrlCreateButton(">", 175, 95, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button5 = GUICtrlCreateButton(">", 175, 135, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button6 = GUICtrlCreateButton(">", 175, 155, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button7 = GUICtrlCreateButton(">", 175, 175, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button8 = GUICtrlCreateButton(">", 175, 195, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $input1 = GUICtrlCreateInput("", 195, 35, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input2 = GUICtrlCreateInput("", 195, 55, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input3 = GUICtrlCreateInput("", 195, 75, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input4 = GUICtrlCreateInput("", 195, 95, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input5 = GUICtrlCreateInput("", 195, 135, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input6 = GUICtrlCreateInput("", 195, 155, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input7 = GUICtrlCreateInput("", 195, 175, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input8 = GUICtrlCreateInput("", 195, 195, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $iinput1 = GUICtrlCreateInput("", 360, 35, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg1')
    $iinput2 = GUICtrlCreateInput("", 360, 55, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg2')
    $iinput3 = GUICtrlCreateInput("", 360, 75, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg3')
    $iinput4 = GUICtrlCreateInput("", 360, 95, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg4')
    $iinput5 = GUICtrlCreateInput("", 360, 135, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg5')
    $iinput6 = GUICtrlCreateInput("", 360, 155, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg6')
    $iinput7 = GUICtrlCreateInput("", 360, 175, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg7')
    $iinput8 = GUICtrlCreateInput("", 360, 195, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg8')
    $iiinput1 = GUICtrlCreateInput("", 430, 35, 60, 15)
    $iiinput2 = GUICtrlCreateInput("", 430, 55, 60, 15)
    $iiinput3 = GUICtrlCreateInput("", 430, 75, 60, 15)
    $iiinput4 = GUICtrlCreateInput("", 430, 95, 60, 15)
    $iiinput5 = GUICtrlCreateInput("", 430, 135, 60, 15)
    $iiinput6 = GUICtrlCreateInput("", 430, 155, 60, 15)
    $iiinput7 = GUICtrlCreateInput("", 430, 175, 60, 15)
    $iiinput8 = GUICtrlCreateInput("", 430, 195, 60, 15)
    GUICtrlCreateLabel("File-Name", 180, 225)
    $filename = GUICtrlCreateInput("", 240, 225, 200, 15)
    GUICtrlSetTip(-1, "Name der Datei, OHNE Zusatzt -txt-")
    GUICtrlCreateButton("speichere Buchungssatz (F5)", 265, 245)
    GUICtrlSetTip(-1, "speichert den angegebenen Buchungssatz in einer txt-Datei")
    GUICtrlSetOnEvent(-1, 'save')
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    For $i = $button1 to $button8
    GUICtrlSetTip($i, "übernimmt markierten Kontennamen + Konten-Nr.")
    Next
    For $i = $input1 To $input8
    GUICtrlSetTip($i, "... gewünschter Kontenname (Nr. wird, sofern vorhanden, übernommen)")
    Next
    For $i = $iinput1 To $iinput8
    GUICtrlSetTip($i, "... gewünschte Konten-Nr. (Name wird, sofern vorhanden, übernommen)")
    Next
    For $i = $iiinput1 To $iiinput8
    GUICtrlSetTip($i, "... Betrag ohne Währung (wird in € angegeben)")
    Next

    GUISetState(@SW_SHOW, $maingui)
    ReadAcc($pathKonten)

    GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events")

    While 1
    Sleep(100)
    Wend

    Func CloseGUI()
    Exit
    EndFunc

    Func ReadAcc($PATH) ; aus Datei in ListView schreiben
    _FileReadToArray($PATH, $arKonten)
    If (Not IsArray($arKonten)) Then
    MsgBox(0, 'Fehler', 'Kontenliste konnte nicht gelesen werden!')
    Return
    EndIf
    ReDim $arListe[UBound($arKonten)-1]
    For $i = 1 To $arKonten[0]
    $arListe[$i-1] = GUICtrlCreateListViewItem($arKonten[$i], $list)
    Next
    EndFunc

    Func WriteAcc() ; aus ListView in Datei schreiben (nach jedem Edit, Add und Löschen)
    $anz = _GUICtrlListViewGetItemCount($list)
    ReDim $arKonten[$anz]
    For $i = 0 To UBound($arKonten)-1
    $arKonten[$i] = _GUICtrlListViewGetItemText($list, $i, 0) & '|' & _GUICtrlListViewGetItemText($list, $i, 1)
    Next
    If FileExists($pathKonten) Then FileMove($pathKonten, $pathKonten & '.BAK', 1)
    _FileWriteFromArray($pathKonten, $arKonten)
    EndFunc

    Func InsertAcc() ; Konto hinzufügen
    ReDim $arListe[UBound($arListe)+1]
    $arListe[UBound($arListe)-1] = GUICtrlCreateListViewItem( InputBox('Kontoname', 'Bitte Namen des neuen Kontos eingeben:', "", "", 300, 120) & '|' & _
    InputBox('Kontonummer', 'Bitte die Nummer des neuen Kontos eingeben:', "", "", 300, 120), $list)
    WriteAcc()
    EndFunc

    Func DeleteAcc() ; Konto löschen
    $index = _GUICtrlListViewGetCurSel($list)
    _GUICtrlListViewDeleteItem ($list, $index)
    WriteAcc()
    EndFunc

    Func EditAcc() ; Konto bearbeiten
    $index = _GUICtrlListViewGetCurSel($list)
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    $number = _GUICtrlListViewGetItemText($list, $index, 1)
    $name = InputBox('Kontoname', 'Hier können Sie den Kontennamen ändern:', $name, "", 300, 120)
    $number = InputBox('Kontonummer', 'Hier können Sie die Kontonummer ändern:', $number, "", 300, 120)
    _GUICtrlListViewSetItemText($list, $index, 0, $name)
    _GUICtrlListViewSetItemText($list, $index, 1, $number)
    WriteAcc()
    EndFunc

    Func Undo() ; letzte Aktion (Edit, New, Delete) rückgängig machen
    _GUICtrlListViewDeleteAllItems($list)
    ReadAcc($pathUndo)
    WriteAcc()
    EndFunc

    Func ListView_DoubleClick() ; Werte übertragen
    $index = _GUICtrlListViewGetCurSel($list)
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    $number = _GUICtrlListViewGetItemText($list, $index, 1)
    For $i = $input1 To $input8
    If GUICtrlRead($i) = '' Then
    GUICtrlSetData($i, $name)
    Switch $i
    Case $input1
    GUICtrlSetData($iinput1, $number)
    Case $input2
    GUICtrlSetData($iinput2, $number)
    Case $input3
    GUICtrlSetData($iinput3, $number)
    Case $input4
    GUICtrlSetData($iinput4, $number)
    Case $input5
    GUICtrlSetData($iinput5, $number)
    Case $input6
    GUICtrlSetData($iinput6, $number)
    Case $input7
    GUICtrlSetData($iinput7, $number)
    Case $input8
    GUICtrlSetData($iinput8, $number)
    EndSwitch
    ExitLoop
    EndIf
    Next
    EndFunc

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

    Func FillIn()
    $index = _GUICtrlListViewGetCurSel($list)
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    $number = _GUICtrlListViewGetItemText($list, $index, 1)
    $i = @GUI_CTRLID
    Switch $i
    Case 18
    GUICtrlSetData($input1, $name)
    GUICtrlSetData($iinput1, $number)
    Case 19
    GUICtrlSetData($input2, $name)
    GUICtrlSetData($iinput2, $number)
    Case 20
    GUICtrlSetData($input3, $name)
    GUICtrlSetData($iinput3, $number)
    Case 21
    GUICtrlSetData($input4, $name)
    GUICtrlSetData($iinput4, $number)
    Case 22
    GUICtrlSetData($input5, $name)
    GUICtrlSetData($iinput5, $number)
    Case 23
    GUICtrlSetData($input6, $name)
    GUICtrlSetData($iinput6, $number)
    Case 24
    GUICtrlSetData($input7, $name)
    GUICtrlSetData($iinput7, $number)
    Case 25
    GUICtrlSetData($input8, $name)
    GUICtrlSetData($iinput8, $number)
    EndSwitch
    EndFunc

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

    Func NameChg()
    $i = @GUI_CTRLID
    $index = _GUICtrlListViewFindItem($list, GUICtrlRead($i))
    $number = _GUICtrlListViewGetItemText($list, $index, 1)
    Switch $i
    Case 26
    GUICtrlSetData($iinput1, $number)
    Case 27
    GUICtrlSetData($iinput2, $number)
    Case 28
    GUICtrlSetData($iinput3, $number)
    Case 29
    GUICtrlSetData($iinput4, $number)
    Case 30
    GUICtrlSetData($iinput5, $number)
    Case 31
    GUICtrlSetData($iinput6, $number)
    Case 32
    GUICtrlSetData($iinput7, $number)
    Case 33
    GUICtrlSetData($iinput8, $number)
    EndSwitch
    EndFunc

    Func save()
    $sum1 = GUICtrlRead($iiinput1) + GUICtrlRead($iiinput2) + GUICtrlRead($iiinput3) + GUICtrlRead($iiinput4)
    $sum2 = GUICtrlRead($iiinput5) + GUICtrlRead($iiinput6) + GUICtrlRead($iiinput7) + GUICtrlRead($iiinput8)
    If $sum1 <> $sum2 Then
    MsgBox(16, "Fehler", "Summen stimmen nicht überein" & @CRLF & @CRLF & $sum1 & " - " & $sum2 & " = " & $sum1 - $sum2)
    Else

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

    If GUICtrlRead($filename) = "" Then
    $flag = True
    $file2 = InputBox("File-Name", "Geben Sie einen File-Namen ein", "", "", 300,120)
    $file = $file2 & ".txt"
    Else
    $file = GUICtrlRead($filename) & ".txt"
    EndIf
    $save = FileOpen($file, 1)
    FileWrite($save, "> " & $nr & "." & @CRLF)
    If GUICtrlRead($input1) = "" Then
    Else
    FileWrite($save, GUICtrlRead($iinput1) & " " & GUICtrlRead($input1) & " " & GUICtrlRead($iiinput1) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input2) = "" Then
    Else
    FileWrite($save, GUICtrlRead($iinput2) & " " & GUICtrlRead($input2) & " " & GUICtrlRead($iiinput2) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input3) = "" Then
    Else
    FileWrite($save, GUICtrlRead($iinput3) & " " & GUICtrlRead($input3) & " " & GUICtrlRead($iiinput3) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input4) = "" Then
    Else
    FileWrite($save, GUICtrlRead($iinput4) & " " & GUICtrlRead($input4) & " " & GUICtrlRead($iiinput4) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input5) = "" Then
    Else
    FileWrite($save, "an " & GUICtrlRead($iinput5) & " " & GUICtrlRead($input5) & " " & GUICtrlRead($iiinput5) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input6) = "" Then
    Else
    FileWrite($save, "an " & GUICtrlRead($iinput6) & " " & GUICtrlRead($input6) & " " & GUICtrlRead($iiinput6) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input7) = "" Then
    Else
    FileWrite($save, "an " & GUICtrlRead($iinput7) & " " & GUICtrlRead($input7) & " " & GUICtrlRead($iiinput7) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input8) = "" Then
    Else
    FileWrite($save, "an " & GUICtrlRead($iinput8) & " " & GUICtrlRead($input8) & " " & GUICtrlRead($iiinput8) & " €" & @CRLF)
    EndIf
    FileWrite($save, "-" & @CRLF)
    FileWrite($save, "Summe: " & $sum1 & " €" & @CRLF)
    FileWrite($save, @CRLF)
    FileClose($save)
    For $i = $input1 To $input8
    GUICtrlSetData($i, "")
    Next
    For $i = $iinput1 To $iinput8
    GUICtrlSetData($i, "")
    Next
    For $i = $iiinput1 To $iiinput8
    GUICtrlSetData($i, "")
    Next
    If $flag = True Then
    GUICtrlSetData($filename, $file2)
    $flag = False
    Else
    EndIf
    $nr = $nr + 1
    EndIf
    EndFunc

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

    ; WM_NOTIFY event handler
    Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam)
    ;#forceref $hWndGUI, $MsgID, $wParam
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam);NMHDR (hwndFrom, idFrom, code)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3)
    Select
    Case $wParam = $list
    Select
    Case $event = $NM_CLICK
    ;~ ListView_Click ()
    Case $event = $NM_DBLCLK
    ListView_DoubleClick ()
    Case $event = $NM_RCLICK
    ;~ ListView_RightClick ()
    Case $event = $NM_RDBLCLK
    ;~ ListView_RightDblClick ()
    EndSelect
    EndSelect
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc ;==>WM_Notify_Events

    Func NumberChg1()
    $index = _LV_Search($list, GUICtrlRead($iinput1))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    GUICtrlSetData($input1, $name)
    EndFunc
    Func NumberChg2()
    $index = _LV_Search($list, GUICtrlRead($iinput2))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    GUICtrlSetData($input2, $name)
    EndFunc
    Func NumberChg3()
    $index = _LV_Search($list, GUICtrlRead($iinput3))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    GUICtrlSetData($input3, $name)
    EndFunc
    Func NumberChg4()
    $index = _LV_Search($list, GUICtrlRead($iinput4))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    GUICtrlSetData($input4, $name)
    EndFunc
    Func NumberChg5()
    $index = _LV_Search($list, GUICtrlRead($iinput5))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    GUICtrlSetData($input5, $name)
    EndFunc
    Func NumberChg6()
    $index = _LV_Search($list, GUICtrlRead($iinput6))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    GUICtrlSetData($input6, $name)
    EndFunc
    Func NumberChg7()
    $index = _LV_Search($list, GUICtrlRead($iinput7))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    GUICtrlSetData($input7, $name)
    EndFunc
    Func NumberChg8()
    $index = _LV_Search($list, GUICtrlRead($iinput8))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListViewGetItemText($list, $index, 0)
    GUICtrlSetData($input8, $name)
    EndFunc

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

    Func _LV_Search($LV, $What2Find)
    $count = _GUICtrlListViewGetItemCount($LV)
    If $count < 1 Then Return -1 ; Return -1 ; leere Liste
    $countSub = _GUICtrlListViewGetSubItemsCount($LV)
    For $i = 0 To $count-1
    For $k = 0 To $countSub-1
    If _GUICtrlListViewGetItemText($LV, $i, $k) = $What2Find Then Return $i
    Next
    Next
    Return -2 ; Return -2 ; nicht gefunden
    EndFunc

    [/autoit]
  • sorry das ich das wieder ausgrabe, doch sowas habe ich auch vor...

    bei dem beispiel hier findet er "_GUICtrlListViewSetColumnWidth" nicht.
    Würde mir das teil gerne mal anschauen :)

    Gruß GerhardSchr

  • Hallo GerhardSchr,

    das (und die anderen Fehler liegt daran, dass sich seitdem die Schreibweise (und zum Teil auch die Syntax) der Befehle geändert hat. Habe das ganze jetzt auf 3.4.4.0 abgeändert. Bei einigen Zeilen war ich mir nicht ganz sicher, diese sind mit ;************** gekennzeichnet.
    Es startet jetzt zumindest, musst es aber noch austesten:

    Spoiler anzeigen
    [autoit]

    #include <guiconstants.au3>
    #include <guilistview.au3>
    #include <file.au3>
    Opt("GUIOnEventMode", 1)

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

    HotKeySet("^z", 'Undo')
    HotKeySet("{F1}", 'InsertAcc')
    HotKeySet("{F2}", 'EditAcc')
    HotKeySet("{F3}", 'DeleteAcc')
    HotKeySet("{F5}", 'save')

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

    Global $flag
    Global $list
    Global $nr = 1
    Global $input, $iinput, $iiinput
    Global Const $WM_NOTIFY = 0x004E
    Global Const $NM_FIRST = 0
    Global Const $NM_LAST = (-99)
    Global Const $NM_CLICK = ($NM_FIRST - 2)
    Global Const $NM_DBLCLK = ($NM_FIRST - 3)
    Global Const $NM_RCLICK = ($NM_FIRST - 5)
    Global Const $NM_RDBLCLK = ($NM_FIRST - 6)

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

    Dim $pathKonten = 'konten.txt', $pathUndo = $pathKonten & '.BAK'
    Dim $arKonten, $arListe[1]

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

    $maingui = GUICreate("Grundbuch 0.01", 500, 300)
    GUISetOnEvent($GUI_Event_Close, 'CloseGUI')
    $menu = GUICtrlCreateMenu("&Konto")
    $add = GUICtrlCreateMenuItem("&einfügen F1", $menu)
    GUICtrlSetOnEvent(-1, 'InsertAcc')
    $edit = GUICtrlCreateMenuItem("&bearbeiten F2", $menu)
    GUICtrlSetOnEvent(-1, 'EditAcc')
    $blind = GUICtrlCreateMenuItem("", $menu)
    $remove = GUICtrlCreateMenuItem("&löschen F3", $menu)
    GUICtrlSetOnEvent(-1, 'DeleteAcc')
    $blind = GUICtrlCreateMenuItem("", $menu)
    $undo = GUICtrlCreateMenuItem("&undo STRG+Z", $menu)
    GUICtrlSetOnEvent(-1, 'Undo')
    GUICtrlCreateGroup("Konten-Liste", 0, 5, 170, 270)
    $list = GUICtrlCreateListView("Konto|Nr.", 5, 20, 160, 250, -1, BitOR($LVS_EX_GRIDLINES,$LVS_EX_FULLROWSELECT))
    _GUICtrlListView_SetColumnWidth(-1, 0, 88)
    _GUICtrlListView_SetColumnWidth(-1, 1, 57)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("Grundbuch", 170, 5, 330, 270)
    GUICtrlCreateLabel("Konto", 180, 20)
    GUICtrlCreateLabel("Nr.", 360, 20)
    GUICtrlCreateLabel("Betrag", 430, 20)
    GUICtrlCreateLabel("an...", 180, 115)
    $button1 = GUICtrlCreateButton(">", 175, 35, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button2 = GUICtrlCreateButton(">", 175, 55, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button3 = GUICtrlCreateButton(">", 175, 75, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button4 = GUICtrlCreateButton(">", 175, 95, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button5 = GUICtrlCreateButton(">", 175, 135, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button6 = GUICtrlCreateButton(">", 175, 155, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button7 = GUICtrlCreateButton(">", 175, 175, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button8 = GUICtrlCreateButton(">", 175, 195, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $input1 = GUICtrlCreateInput("", 195, 35, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input2 = GUICtrlCreateInput("", 195, 55, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input3 = GUICtrlCreateInput("", 195, 75, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input4 = GUICtrlCreateInput("", 195, 95, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input5 = GUICtrlCreateInput("", 195, 135, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input6 = GUICtrlCreateInput("", 195, 155, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input7 = GUICtrlCreateInput("", 195, 175, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input8 = GUICtrlCreateInput("", 195, 195, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $iinput1 = GUICtrlCreateInput("", 360, 35, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg1')
    $iinput2 = GUICtrlCreateInput("", 360, 55, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg2')
    $iinput3 = GUICtrlCreateInput("", 360, 75, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg3')
    $iinput4 = GUICtrlCreateInput("", 360, 95, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg4')
    $iinput5 = GUICtrlCreateInput("", 360, 135, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg5')
    $iinput6 = GUICtrlCreateInput("", 360, 155, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg6')
    $iinput7 = GUICtrlCreateInput("", 360, 175, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg7')
    $iinput8 = GUICtrlCreateInput("", 360, 195, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg8')
    $iiinput1 = GUICtrlCreateInput("", 430, 35, 60, 15)
    $iiinput2 = GUICtrlCreateInput("", 430, 55, 60, 15)
    $iiinput3 = GUICtrlCreateInput("", 430, 75, 60, 15)
    $iiinput4 = GUICtrlCreateInput("", 430, 95, 60, 15)
    $iiinput5 = GUICtrlCreateInput("", 430, 135, 60, 15)
    $iiinput6 = GUICtrlCreateInput("", 430, 155, 60, 15)
    $iiinput7 = GUICtrlCreateInput("", 430, 175, 60, 15)
    $iiinput8 = GUICtrlCreateInput("", 430, 195, 60, 15)
    GUICtrlCreateLabel("File-Name", 180, 225)
    $filename = GUICtrlCreateInput("", 240, 225, 200, 15)
    GUICtrlSetTip(-1, "Name der Datei, OHNE Zusatzt -txt-")
    GUICtrlCreateButton("speichere Buchungssatz (F5)", 265, 245)
    GUICtrlSetTip(-1, "speichert den angegebenen Buchungssatz in einer txt-Datei")
    GUICtrlSetOnEvent(-1, 'save')
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    For $i = $button1 to $button8
    GUICtrlSetTip($i, "übernimmt markierten Kontennamen + Konten-Nr.")
    Next
    For $i = $input1 To $input8
    GUICtrlSetTip($i, "... gewünschter Kontenname (Nr. wird, sofern vorhanden, übernommen)")
    Next
    For $i = $iinput1 To $iinput8
    GUICtrlSetTip($i, "... gewünschte Konten-Nr. (Name wird, sofern vorhanden, übernommen)")
    Next
    For $i = $iiinput1 To $iiinput8
    GUICtrlSetTip($i, "... Betrag ohne Währung (wird in € angegeben)")
    Next

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

    GUISetState(@SW_SHOW, $maingui)
    ReadAcc($pathKonten)

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

    GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events")

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

    While 1
    Sleep(100)
    Wend

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

    Func CloseGUI()
    Exit
    EndFunc

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

    Func ReadAcc($PATH) ; aus Datei in ListView schreiben
    _FileReadToArray($PATH, $arKonten)
    If (Not IsArray($arKonten)) Then
    MsgBox(0, 'Fehler', 'Kontenliste konnte nicht gelesen werden!')
    Return
    EndIf
    ReDim $arListe[UBound($arKonten)-1]
    For $i = 1 To $arKonten[0]
    $arListe[$i-1] = GUICtrlCreateListViewItem($arKonten[$i], $list)
    Next
    EndFunc

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

    Func WriteAcc() ; aus ListView in Datei schreiben (nach jedem Edit, Add und Löschen)
    $anz = _GUICtrlListView_GetItemCount($list)
    if IsArray($arKonten) then
    ReDim $arKonten[$anz]
    Else ;*************************** eingefügt AutoBert
    Dim $arKonten[$anz] ;*************************** eingefügt AutoBert
    EndIf ;*************************** eingefügt AutoBert
    For $i = 0 To UBound($arKonten)-1
    $arKonten[$i] = _GUICtrlListView_GetItemText($list, $i, 0) & '|' & _GUICtrlListView_GetItemText($list, $i, 1)
    Next
    If FileExists($pathKonten) Then FileMove($pathKonten, $pathKonten & '.BAK', 1)
    _FileWriteFromArray($pathKonten, $arKonten)
    EndFunc

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

    Func InsertAcc() ; Konto hinzufügen
    ReDim $arListe[UBound($arListe)+1]
    $arListe[UBound($arListe)-1] = GUICtrlCreateListViewItem( InputBox('Kontoname', 'Bitte Namen des neuen Kontos eingeben:', "", "", 300, 120) & '|' & _
    InputBox('Kontonummer', 'Bitte die Nummer des neuen Kontos eingeben:', "", "", 300, 120), $list)
    WriteAcc()
    EndFunc

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

    Func DeleteAcc() ; Konto löschen
    $index = GuiCtrlRead($list) ;_GUICtrlListViewGetCurSel($list)
    _GUICtrlListView_DeleteItem ($list, $index)
    WriteAcc()
    EndFunc

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

    Func EditAcc() ; Konto bearbeiten
    $index = GuiCtrlRead($list) ;_GUICtrlListViewGetCurSel($list)
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    $number = _GUICtrlListView_GetItemText($list, $index, 1)
    $name = InputBox('Kontoname', 'Hier können Sie den Kontennamen ändern:', $name, "", 300, 120)
    $number = InputBox('Kontonummer', 'Hier können Sie die Kontonummer ändern:', $number, "", 300, 120)
    _GUICtrlListView_SetItemText($list, $index, 0, $name)
    _GUICtrlListView_SetItemText($list, $index, 1, $number)
    WriteAcc()
    EndFunc

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

    Func Undo() ; letzte Aktion (Edit, New, Delete) rückgängig machen
    _GUICtrlListView_DeleteAllItems($list)
    ReadAcc($pathUndo)
    WriteAcc()
    EndFunc

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

    Func ListView_DoubleClick() ; Werte übertragen
    $index = GuiCtrlRead($list) ;_GUICtrlListViewGetCurSel($list)
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    $number = _GUICtrlListView_GetItemText($list, $index, 1)
    For $i = $input1 To $input8
    If GUICtrlRead($i) = '' Then
    GUICtrlSetData($i, $name)
    Switch $i
    Case $input1
    GUICtrlSetData($iinput1, $number)
    Case $input2
    GUICtrlSetData($iinput2, $number)
    Case $input3
    GUICtrlSetData($iinput3, $number)
    Case $input4
    GUICtrlSetData($iinput4, $number)
    Case $input5
    GUICtrlSetData($iinput5, $number)
    Case $input6
    GUICtrlSetData($iinput6, $number)
    Case $input7
    GUICtrlSetData($iinput7, $number)
    Case $input8
    GUICtrlSetData($iinput8, $number)
    EndSwitch
    ExitLoop
    EndIf
    Next
    EndFunc

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

    Func FillIn()
    $index = GuiCtrlRead($list) ;_GUICtrlListViewGetCurSel($list)
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    $number = _GUICtrlListView_GetItemText($list, $index, 1)
    $i = @GUI_CTRLID
    Switch $i
    Case 18
    GUICtrlSetData($input1, $name)
    GUICtrlSetData($iinput1, $number)
    Case 19
    GUICtrlSetData($input2, $name)
    GUICtrlSetData($iinput2, $number)
    Case 20
    GUICtrlSetData($input3, $name)
    GUICtrlSetData($iinput3, $number)
    Case 21
    GUICtrlSetData($input4, $name)
    GUICtrlSetData($iinput4, $number)
    Case 22
    GUICtrlSetData($input5, $name)
    GUICtrlSetData($iinput5, $number)
    Case 23
    GUICtrlSetData($input6, $name)
    GUICtrlSetData($iinput6, $number)
    Case 24
    GUICtrlSetData($input7, $name)
    GUICtrlSetData($iinput7, $number)
    Case 25
    GUICtrlSetData($input8, $name)
    GUICtrlSetData($iinput8, $number)
    EndSwitch
    EndFunc

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

    Func NameChg()
    $i = @GUI_CTRLID
    ;*************************************************************
    $index = _GUICtrlListView_FindText($list,GuiCtrlRead($i)); _GUICtrlListViewFindItem($list, GUICtrlRead($i))
    ;*************************************************************
    $number = _GUICtrlListView_GetItemText($list, $index, 1)
    Switch $i
    Case 26
    GUICtrlSetData($iinput1, $number)
    Case 27
    GUICtrlSetData($iinput2, $number)
    Case 28
    GUICtrlSetData($iinput3, $number)
    Case 29
    GUICtrlSetData($iinput4, $number)
    Case 30
    GUICtrlSetData($iinput5, $number)
    Case 31
    GUICtrlSetData($iinput6, $number)
    Case 32
    GUICtrlSetData($iinput7, $number)
    Case 33
    GUICtrlSetData($iinput8, $number)
    EndSwitch
    EndFunc

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

    Func save()
    $sum1 = GUICtrlRead($iiinput1) + GUICtrlRead($iiinput2) + GUICtrlRead($iiinput3) + GUICtrlRead($iiinput4)
    $sum2 = GUICtrlRead($iiinput5) + GUICtrlRead($iiinput6) + GUICtrlRead($iiinput7) + GUICtrlRead($iiinput8)
    If $sum1 <> $sum2 Then
    MsgBox(16, "Fehler", "Summen stimmen nicht überein" & @CRLF & @CRLF & $sum1 & " - " & $sum2 & " = " & $sum1 - $sum2)
    Else

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

    If GUICtrlRead($filename) = "" Then
    $flag = True
    $file2 = InputBox("File-Name", "Geben Sie einen File-Namen ein", "", "", 300,120)
    $file = $file2 & ".txt"
    Else
    $file = GUICtrlRead($filename) & ".txt"
    EndIf
    $save = FileOpen($file, 1)
    FileWrite($save, "> " & $nr & "." & @CRLF)
    If GUICtrlRead($input1) = "" Then
    Else
    FileWrite($save, GUICtrlRead($iinput1) & " " & GUICtrlRead($input1) & " " & GUICtrlRead($iiinput1) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input2) = "" Then
    Else
    FileWrite($save, GUICtrlRead($iinput2) & " " & GUICtrlRead($input2) & " " & GUICtrlRead($iiinput2) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input3) = "" Then
    Else
    FileWrite($save, GUICtrlRead($iinput3) & " " & GUICtrlRead($input3) & " " & GUICtrlRead($iiinput3) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input4) = "" Then
    Else
    FileWrite($save, GUICtrlRead($iinput4) & " " & GUICtrlRead($input4) & " " & GUICtrlRead($iiinput4) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input5) = "" Then
    Else
    FileWrite($save, "an " & GUICtrlRead($iinput5) & " " & GUICtrlRead($input5) & " " & GUICtrlRead($iiinput5) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input6) = "" Then
    Else
    FileWrite($save, "an " & GUICtrlRead($iinput6) & " " & GUICtrlRead($input6) & " " & GUICtrlRead($iiinput6) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input7) = "" Then
    Else
    FileWrite($save, "an " & GUICtrlRead($iinput7) & " " & GUICtrlRead($input7) & " " & GUICtrlRead($iiinput7) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input8) = "" Then
    Else
    FileWrite($save, "an " & GUICtrlRead($iinput8) & " " & GUICtrlRead($input8) & " " & GUICtrlRead($iiinput8) & " €" & @CRLF)
    EndIf
    FileWrite($save, "-" & @CRLF)
    FileWrite($save, "Summe: " & $sum1 & " €" & @CRLF)
    FileWrite($save, @CRLF)
    FileClose($save)
    For $i = $input1 To $input8
    GUICtrlSetData($i, "")
    Next
    For $i = $iinput1 To $iinput8
    GUICtrlSetData($i, "")
    Next
    For $i = $iiinput1 To $iiinput8
    GUICtrlSetData($i, "")
    Next
    If $flag = True Then
    GUICtrlSetData($filename, $file2)
    $flag = False
    Else
    EndIf
    $nr = $nr + 1
    EndIf
    EndFunc

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

    ; WM_NOTIFY event handler
    Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam)
    ;#forceref $hWndGUI, $MsgID, $wParam
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam);NMHDR (hwndFrom, idFrom, code)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3)
    Select
    Case $wParam = $list
    Select
    Case $event = $NM_CLICK
    ;~ ListView_Click ()
    Case $event = $NM_DBLCLK
    ListView_DoubleClick ()
    Case $event = $NM_RCLICK
    ;~ ListView_RightClick ()
    Case $event = $NM_RDBLCLK
    ;~ ListView_RightDblClick ()
    EndSelect
    EndSelect
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc ;==>WM_Notify_Events

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

    Func NumberChg1()
    $index = _LV_Search($list, GUICtrlRead($iinput1))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    GUICtrlSetData($input1, $name)
    EndFunc
    Func NumberChg2()
    $index = _LV_Search($list, GUICtrlRead($iinput2))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    GUICtrlSetData($input2, $name)
    EndFunc
    Func NumberChg3()
    $index = _LV_Search($list, GUICtrlRead($iinput3))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    GUICtrlSetData($input3, $name)
    EndFunc
    Func NumberChg4()
    $index = _LV_Search($list, GUICtrlRead($iinput4))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    GUICtrlSetData($input4, $name)
    EndFunc
    Func NumberChg5()
    $index = _LV_Search($list, GUICtrlRead($iinput5))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    GUICtrlSetData($input5, $name)
    EndFunc
    Func NumberChg6()
    $index = _LV_Search($list, GUICtrlRead($iinput6))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    GUICtrlSetData($input6, $name)
    EndFunc
    Func NumberChg7()
    $index = _LV_Search($list, GUICtrlRead($iinput7))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    GUICtrlSetData($input7, $name)
    EndFunc
    Func NumberChg8()
    $index = _LV_Search($list, GUICtrlRead($iinput8))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    GUICtrlSetData($input8, $name)
    EndFunc

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

    Func _LV_Search($LV, $What2Find)
    $count = _GUICtrlListView_GetItemCount($LV)
    If $count < 1 Then Return -1 ; Return -1 ; leere Liste
    $countSub = _GUICtrlListView_GetColumnCount($LV) -1 ;_GUICtrlListViewGetSubItemsCount($LV)
    For $i = 0 To $count-1
    For $k = 0 To $countSub-1
    If _GUICtrlListView_GetItemText($LV, $i, $k) = $What2Find Then Return $i
    Next
    Next
    Return -2 ; Return -2 ; nicht gefunden
    EndFunc

    [/autoit]

    Edit: sorry, hatte versehentlich das falsche hochgeladen ==>> Sktipt ausgetauscht
    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (28. Februar 2010 um 11:37)

    • Offizieller Beitrag

    GerhardSchr ich hab dir das mal auf die neuen Listview Funktionen umgestellt.

    Spoiler anzeigen
    [autoit]

    #include <guiconstants.au3>
    #include <guilistview.au3>
    #include <file.au3>
    Opt("GUIOnEventMode", 1)

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

    HotKeySet("^z", 'Undo')
    HotKeySet("{F1}", 'InsertAcc')
    HotKeySet("{F2}", 'EditAcc')
    HotKeySet("{F3}", 'DeleteAcc')
    HotKeySet("{F5}", 'save')

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

    Global $flag
    Global $list
    Global $nr = 1
    Global $input, $iinput, $iiinput
    Global Const $WM_NOTIFY = 0x004E
    Global Const $NM_FIRST = 0
    Global Const $NM_LAST = (-99)
    Global Const $NM_CLICK = ($NM_FIRST - 2)
    Global Const $NM_DBLCLK = ($NM_FIRST - 3)
    Global Const $NM_RCLICK = ($NM_FIRST - 5)
    Global Const $NM_RDBLCLK = ($NM_FIRST - 6)

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

    Dim $pathKonten = 'konten.txt', $pathUndo = $pathKonten & '.BAK'
    Dim $arKonten, $arListe[1]

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

    $maingui = GUICreate("Grundbuch 0.01", 500, 300)
    GUISetOnEvent($GUI_Event_Close, 'CloseGUI')
    $menu = GUICtrlCreateMenu("&Konto")
    $add = GUICtrlCreateMenuItem("&einfügen F1", $menu)
    GUICtrlSetOnEvent(-1, 'InsertAcc')
    $edit = GUICtrlCreateMenuItem("&bearbeiten F2", $menu)
    GUICtrlSetOnEvent(-1, 'EditAcc')
    $blind = GUICtrlCreateMenuItem("", $menu)
    $remove = GUICtrlCreateMenuItem("&löschen F3", $menu)
    GUICtrlSetOnEvent(-1, 'DeleteAcc')
    $blind = GUICtrlCreateMenuItem("", $menu)
    $undo = GUICtrlCreateMenuItem("&undo STRG+Z", $menu)
    GUICtrlSetOnEvent(-1, 'Undo')
    GUICtrlCreateGroup("Konten-Liste", 0, 5, 170, 270)
    $list = GUICtrlCreateListView("Konto|Nr.", 5, 20, 160, 250, -1, BitOR($LVS_EX_GRIDLINES,$LVS_EX_FULLROWSELECT))
    _GUICtrlListView_SetColumnWidth(-1, 0, 88)
    _GUICtrlListView_SetColumnWidth(-1, 1, 57)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("Grundbuch", 170, 5, 330, 270)
    GUICtrlCreateLabel("Konto", 180, 20)
    GUICtrlCreateLabel("Nr.", 360, 20)
    GUICtrlCreateLabel("Betrag", 430, 20)
    GUICtrlCreateLabel("an...", 180, 115)
    $button1 = GUICtrlCreateButton(">", 175, 35, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button2 = GUICtrlCreateButton(">", 175, 55, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button3 = GUICtrlCreateButton(">", 175, 75, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button4 = GUICtrlCreateButton(">", 175, 95, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button5 = GUICtrlCreateButton(">", 175, 135, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button6 = GUICtrlCreateButton(">", 175, 155, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button7 = GUICtrlCreateButton(">", 175, 175, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $button8 = GUICtrlCreateButton(">", 175, 195, 15, 15)
    GUICtrlSetOnEvent(-1, 'FiLLIn')
    $input1 = GUICtrlCreateInput("", 195, 35, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input2 = GUICtrlCreateInput("", 195, 55, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input3 = GUICtrlCreateInput("", 195, 75, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input4 = GUICtrlCreateInput("", 195, 95, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input5 = GUICtrlCreateInput("", 195, 135, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input6 = GUICtrlCreateInput("", 195, 155, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input7 = GUICtrlCreateInput("", 195, 175, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $input8 = GUICtrlCreateInput("", 195, 195, 155, 15)
    GUICtrlSetOnEvent(-1, 'NameChg')
    $iinput1 = GUICtrlCreateInput("", 360, 35, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg1')
    $iinput2 = GUICtrlCreateInput("", 360, 55, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg2')
    $iinput3 = GUICtrlCreateInput("", 360, 75, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg3')
    $iinput4 = GUICtrlCreateInput("", 360, 95, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg4')
    $iinput5 = GUICtrlCreateInput("", 360, 135, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg5')
    $iinput6 = GUICtrlCreateInput("", 360, 155, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg6')
    $iinput7 = GUICtrlCreateInput("", 360, 175, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg7')
    $iinput8 = GUICtrlCreateInput("", 360, 195, 60, 15)
    GUICtrlSetOnEvent(-1, 'NumberChg8')
    $iiinput1 = GUICtrlCreateInput("", 430, 35, 60, 15)
    $iiinput2 = GUICtrlCreateInput("", 430, 55, 60, 15)
    $iiinput3 = GUICtrlCreateInput("", 430, 75, 60, 15)
    $iiinput4 = GUICtrlCreateInput("", 430, 95, 60, 15)
    $iiinput5 = GUICtrlCreateInput("", 430, 135, 60, 15)
    $iiinput6 = GUICtrlCreateInput("", 430, 155, 60, 15)
    $iiinput7 = GUICtrlCreateInput("", 430, 175, 60, 15)
    $iiinput8 = GUICtrlCreateInput("", 430, 195, 60, 15)
    GUICtrlCreateLabel("File-Name", 180, 225)
    $filename = GUICtrlCreateInput("", 240, 225, 200, 15)
    GUICtrlSetTip(-1, "Name der Datei, OHNE Zusatzt -txt-")
    GUICtrlCreateButton("speichere Buchungssatz (F5)", 265, 245)
    GUICtrlSetTip(-1, "speichert den angegebenen Buchungssatz in einer txt-Datei")
    GUICtrlSetOnEvent(-1, 'save')
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    For $i = $button1 to $button8
    GUICtrlSetTip($i, "übernimmt markierten Kontennamen + Konten-Nr.")
    Next
    For $i = $input1 To $input8
    GUICtrlSetTip($i, "... gewünschter Kontenname (Nr. wird, sofern vorhanden, übernommen)")
    Next
    For $i = $iinput1 To $iinput8
    GUICtrlSetTip($i, "... gewünschte Konten-Nr. (Name wird, sofern vorhanden, übernommen)")
    Next
    For $i = $iiinput1 To $iiinput8
    GUICtrlSetTip($i, "... Betrag ohne Währung (wird in € angegeben)")
    Next

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

    GUISetState(@SW_SHOW, $maingui)
    ReadAcc($pathKonten)

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

    GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events")

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

    While 1
    Sleep(100)
    Wend

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

    Func CloseGUI()
    Exit
    EndFunc

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

    Func ReadAcc($PATH) ; aus Datei in ListView schreiben
    _FileReadToArray($PATH, $arKonten)
    If (Not IsArray($arKonten)) Then
    MsgBox(0, 'Fehler', 'Kontenliste konnte nicht gelesen werden!')
    Return
    EndIf
    ReDim $arListe[UBound($arKonten)-1]
    For $i = 1 To $arKonten[0]
    $arListe[$i-1] = GUICtrlCreateListViewItem($arKonten[$i], $list)
    Next
    EndFunc

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

    Func WriteAcc() ; aus ListView in Datei schreiben (nach jedem Edit, Add und Löschen)
    $anz = _GUICtrlListView_GetItemCount($list)
    ReDim $arKonten[$anz]
    For $i = 0 To UBound($arKonten)-1
    $arKonten[$i] = _GUICtrlListView_GetItemText($list, $i, 0) & '|' & _GUICtrlListView_GetItemText($list, $i, 1)
    Next
    If FileExists($pathKonten) Then FileMove($pathKonten, $pathKonten & '.BAK', 1)
    _FileWriteFromArray($pathKonten, $arKonten)
    EndFunc

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

    Func InsertAcc() ; Konto hinzufügen
    ReDim $arListe[UBound($arListe)+1]
    $arListe[UBound($arListe)-1] = GUICtrlCreateListViewItem( InputBox('Kontoname', 'Bitte Namen des neuen Kontos eingeben:', "", "", 300, 120) & '|' & _
    InputBox('Kontonummer', 'Bitte die Nummer des neuen Kontos eingeben:', "", "", 300, 120), $list)
    WriteAcc()
    EndFunc

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

    Func DeleteAcc() ; Konto löschen
    $index = _GUICtrlListView_GetNextItem($list)
    _GUICtrlListView_DeleteItem ($list, $index)
    WriteAcc()
    EndFunc

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

    Func EditAcc() ; Konto bearbeiten
    $index = _GUICtrlListView_GetNextItem($list)
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    $number = _GUICtrlListView_GetItemText($list, $index, 1)
    $name = InputBox('Kontoname', 'Hier können Sie den Kontennamen ändern:', $name, "", 300, 120)
    $number = InputBox('Kontonummer', 'Hier können Sie die Kontonummer ändern:', $number, "", 300, 120)
    _GUICtrlListView_SetItemText($list, $index, 0, $name)
    _GUICtrlListView_SetItemText($list, $index, 1, $number)
    WriteAcc()
    EndFunc

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

    Func Undo() ; letzte Aktion (Edit, New, Delete) rückgängig machen
    _GUICtrlListView_DeleteAllItems($list)
    ReadAcc($pathUndo)
    WriteAcc()
    EndFunc

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

    Func ListView_DoubleClick() ; Werte übertragen
    $index = _GUICtrlListView_GetNextItem($list)
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    $number = _GUICtrlListView_GetItemText($list, $index, 1)
    For $i = $input1 To $input8
    If GUICtrlRead($i) = '' Then
    GUICtrlSetData($i, $name)
    Switch $i
    Case $input1
    GUICtrlSetData($iinput1, $number)
    Case $input2
    GUICtrlSetData($iinput2, $number)
    Case $input3
    GUICtrlSetData($iinput3, $number)
    Case $input4
    GUICtrlSetData($iinput4, $number)
    Case $input5
    GUICtrlSetData($iinput5, $number)
    Case $input6
    GUICtrlSetData($iinput6, $number)
    Case $input7
    GUICtrlSetData($iinput7, $number)
    Case $input8
    GUICtrlSetData($iinput8, $number)
    EndSwitch
    ExitLoop
    EndIf
    Next
    EndFunc

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

    Func FillIn()
    $index = _GUICtrlListView_GetNextItem($list)
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    $number = _GUICtrlListView_GetItemText($list, $index, 1)
    $i = @GUI_CTRLID
    Switch $i
    Case 18
    GUICtrlSetData($input1, $name)
    GUICtrlSetData($iinput1, $number)
    Case 19
    GUICtrlSetData($input2, $name)
    GUICtrlSetData($iinput2, $number)
    Case 20
    GUICtrlSetData($input3, $name)
    GUICtrlSetData($iinput3, $number)
    Case 21
    GUICtrlSetData($input4, $name)
    GUICtrlSetData($iinput4, $number)
    Case 22
    GUICtrlSetData($input5, $name)
    GUICtrlSetData($iinput5, $number)
    Case 23
    GUICtrlSetData($input6, $name)
    GUICtrlSetData($iinput6, $number)
    Case 24
    GUICtrlSetData($input7, $name)
    GUICtrlSetData($iinput7, $number)
    Case 25
    GUICtrlSetData($input8, $name)
    GUICtrlSetData($iinput8, $number)
    EndSwitch
    EndFunc

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

    Func NameChg()
    $i = @GUI_CTRLID
    $index = _GUICtrlListView_FindInText ($list, GUICtrlRead($i))
    $number = _GUICtrlListView_GetItemText($list, $index, 1)
    Switch $i
    Case 26
    GUICtrlSetData($iinput1, $number)
    Case 27
    GUICtrlSetData($iinput2, $number)
    Case 28
    GUICtrlSetData($iinput3, $number)
    Case 29
    GUICtrlSetData($iinput4, $number)
    Case 30
    GUICtrlSetData($iinput5, $number)
    Case 31
    GUICtrlSetData($iinput6, $number)
    Case 32
    GUICtrlSetData($iinput7, $number)
    Case 33
    GUICtrlSetData($iinput8, $number)
    EndSwitch
    EndFunc

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

    Func save()
    $sum1 = GUICtrlRead($iiinput1) + GUICtrlRead($iiinput2) + GUICtrlRead($iiinput3) + GUICtrlRead($iiinput4)
    $sum2 = GUICtrlRead($iiinput5) + GUICtrlRead($iiinput6) + GUICtrlRead($iiinput7) + GUICtrlRead($iiinput8)
    If $sum1 <> $sum2 Then
    MsgBox(16, "Fehler", "Summen stimmen nicht überein" & @CRLF & @CRLF & $sum1 & " - " & $sum2 & " = " & $sum1 - $sum2)
    Else

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

    If GUICtrlRead($filename) = "" Then
    $flag = True
    $file2 = InputBox("File-Name", "Geben Sie einen File-Namen ein", "", "", 300,120)
    $file = $file2 & ".txt"
    Else
    $file = GUICtrlRead($filename) & ".txt"
    EndIf
    $save = FileOpen($file, 1)
    FileWrite($save, "> " & $nr & "." & @CRLF)
    If GUICtrlRead($input1) = "" Then
    Else
    FileWrite($save, GUICtrlRead($iinput1) & " " & GUICtrlRead($input1) & " " & GUICtrlRead($iiinput1) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input2) = "" Then
    Else
    FileWrite($save, GUICtrlRead($iinput2) & " " & GUICtrlRead($input2) & " " & GUICtrlRead($iiinput2) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input3) = "" Then
    Else
    FileWrite($save, GUICtrlRead($iinput3) & " " & GUICtrlRead($input3) & " " & GUICtrlRead($iiinput3) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input4) = "" Then
    Else
    FileWrite($save, GUICtrlRead($iinput4) & " " & GUICtrlRead($input4) & " " & GUICtrlRead($iiinput4) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input5) = "" Then
    Else
    FileWrite($save, "an " & GUICtrlRead($iinput5) & " " & GUICtrlRead($input5) & " " & GUICtrlRead($iiinput5) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input6) = "" Then
    Else
    FileWrite($save, "an " & GUICtrlRead($iinput6) & " " & GUICtrlRead($input6) & " " & GUICtrlRead($iiinput6) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input7) = "" Then
    Else
    FileWrite($save, "an " & GUICtrlRead($iinput7) & " " & GUICtrlRead($input7) & " " & GUICtrlRead($iiinput7) & " €" & @CRLF)
    EndIf
    If GUICtrlRead($input8) = "" Then
    Else
    FileWrite($save, "an " & GUICtrlRead($iinput8) & " " & GUICtrlRead($input8) & " " & GUICtrlRead($iiinput8) & " €" & @CRLF)
    EndIf
    FileWrite($save, "-" & @CRLF)
    FileWrite($save, "Summe: " & $sum1 & " €" & @CRLF)
    FileWrite($save, @CRLF)
    FileClose($save)
    For $i = $input1 To $input8
    GUICtrlSetData($i, "")
    Next
    For $i = $iinput1 To $iinput8
    GUICtrlSetData($i, "")
    Next
    For $i = $iiinput1 To $iiinput8
    GUICtrlSetData($i, "")
    Next
    If $flag = True Then
    GUICtrlSetData($filename, $file2)
    $flag = False
    Else
    EndIf
    $nr = $nr + 1
    EndIf
    EndFunc

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

    ; WM_NOTIFY event handler
    Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam)
    ;#forceref $hWndGUI, $MsgID, $wParam
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam);NMHDR (hwndFrom, idFrom, code)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3)
    Select
    Case $wParam = $list
    Select
    Case $event = $NM_CLICK
    ;~ ListView_Click ()
    Case $event = $NM_DBLCLK
    ListView_DoubleClick ()
    Case $event = $NM_RCLICK
    ;~ ListView_RightClick ()
    Case $event = $NM_RDBLCLK
    ;~ ListView_RightDblClick ()
    EndSelect
    EndSelect
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc ;==>WM_Notify_Events

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

    Func NumberChg1()
    $index = _LV_Search($list, GUICtrlRead($iinput1))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    GUICtrlSetData($input1, $name)
    EndFunc
    Func NumberChg2()
    $index = _LV_Search($list, GUICtrlRead($iinput2))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    GUICtrlSetData($input2, $name)
    EndFunc
    Func NumberChg3()
    $index = _LV_Search($list, GUICtrlRead($iinput3))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    GUICtrlSetData($input3, $name)
    EndFunc
    Func NumberChg4()
    $index = _LV_Search($list, GUICtrlRead($iinput4))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    GUICtrlSetData($input4, $name)
    EndFunc
    Func NumberChg5()
    $index = _LV_Search($list, GUICtrlRead($iinput5))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    GUICtrlSetData($input5, $name)
    EndFunc
    Func NumberChg6()
    $index = _LV_Search($list, GUICtrlRead($iinput6))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    GUICtrlSetData($input6, $name)
    EndFunc
    Func NumberChg7()
    $index = _LV_Search($list, GUICtrlRead($iinput7))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    GUICtrlSetData($input7, $name)
    EndFunc
    Func NumberChg8()
    $index = _LV_Search($list, GUICtrlRead($iinput8))
    If $index < 0 Then
    MsgBox(0, 'Fehler', 'Kontonummer nicht vorhanden!')
    Return
    EndIf
    $name = _GUICtrlListView_GetItemText($list, $index, 0)
    GUICtrlSetData($input8, $name)
    EndFunc

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

    Func _LV_Search($LV, $What2Find)
    $count = _GUICtrlListView_GetItemCount($LV)
    If $count < 1 Then Return -1 ; Return -1 ; leere Liste
    $countSub = _GUICtrlListView_GetColumnCount($LV)
    For $i = 0 To $count-1
    For $k = 0 To $countSub-1
    If _GUICtrlListView_GetItemText($LV, $i, $k) = $What2Find Then Return $i
    Next
    Next
    Return -2 ; Return -2 ; nicht gefunden
    EndFunc

    [/autoit]

    Edit: Wenn du wissen willst, wie die neue Bezeichnungen der Funktionen von alten Scripts sind, kannst du dir auch die Include Dateien ansehen.
    Auszug aus GUIListview.au3:

    Spoiler anzeigen
    [autoit]

    ; #OLD_FUNCTIONS#================================================================================================================
    ; Old Function/Name ; --> New Function/Name/Replacement(s)
    ;
    ; deprecated functions will no longer work
    ;_GUICtrlListViewCopyItems ; --> _GUICtrlListView_CopyItems
    ;_GUICtrlListViewDeleteAllItems ; --> _GUICtrlListView_DeleteAllItems
    ;_GUICtrlListViewDeleteColumn ; --> _GUICtrlListView_DeleteColumn
    ;_GUICtrlListViewDeleteItem ; --> _GUICtrlListView_DeleteItem
    ;_GUICtrlListViewDeleteItemsSelected ; --> _GUICtrlListView_DeleteItemsSelected
    ;_GUICtrlListViewEnsureVisible ; --> _GUICtrlListView_EnsureVisible
    ;_GUICtrlListViewFindItem ; --> _GUICtrlListView_FindInText, _GUICtrlListView_FindItem, _GUICtrlListView_FindNearest, _GUICtrlListView_FindParam, _GUICtrlListView_FindText
    ;_GUICtrlListViewGetBackColor ; --> _GUICtrlListView_GetBkColor
    ;_GUICtrlListViewGetCallbackMask ; --> _GUICtrlListView_GetCallbackMask
    ;_GUICtrlListViewGetCheckedState ; --> _GUICtrlListView_GetItemChecked
    ;_GUICtrlListViewGetColumnOrder ; --> _GUICtrlListView_GetColumnOrder
    ;_GUICtrlListViewGetColumnWidth ; --> _GUICtrlListView_GetColumnWidth
    ;_GUICtrlListViewGetCounterPage ; --> _GUICtrlListView_GetCounterPage
    ;_GUICtrlListViewGetCurSel ; --> _GUICtrlListView_GetNextItem
    ;_GUICtrlListViewGetExtendedListViewStyle ; --> _GUICtrlListView_GetExtendedListViewStyle
    ;_GUICtrlListViewGetHeader ; --> _GUICtrlListView_GetHeader
    ;_GUICtrlListViewGetHotCursor ; --> _GUICtrlListView_GetHotCursor
    ;_GUICtrlListViewGetHotItem ; --> _GUICtrlListView_GetHotItem
    ;_GUICtrlListViewGetHoverTime ; --> _GUICtrlListView_GetHoverTime
    ;_GUICtrlListViewGetItemCount ; --> _GUICtrlListView_GetItemCount
    ;_GUICtrlListViewGetItemTextArray ; --> _GUICtrlListView_GetItemTextArray
    ;_GUICtrlListViewGetItemText ; --> _GUICtrlListView_GetItemTextString
    ;_GUICtrlListViewGetNextItem ; --> _GUICtrlListView_GetNextItem
    ;_GUICtrlListViewGetSelectedCount ; --> _GUICtrlListView_GetSelectedCount
    ;_GUICtrlListViewGetSelectedIndices ; --> _GUICtrlListView_GetSelectedIndices
    ;_GUICtrlListViewGetSubItemsCount ; --> _GUICtrlListView_GetColumnCount
    ;_GUICtrlListViewGetTopIndex ; --> _GUICtrlListView_GetTopIndex
    ;_GUICtrlListViewGetUnicodeFormat ; --> _GUICtrlListView_GetUnicodeFormat
    ;_GUICtrlListViewGetView ; --> _GUICtrlListView_GetView
    ;_GUICtrlListViewHideColumn ; --> _GUICtrlListView_HideColumn
    ;_GUICtrlListViewInsertColumn ; --> _GUICtrlListView_InsertColumn
    ;_GUICtrlListViewInsertItem ; --> _GUICtrlListView_InsertItem
    ;_GUICtrlListViewJustifyColumn ; --> _GUICtrlListView_JustifyColumn
    ;_GUICtrlListViewScroll ; --> _GUICtrlListView_Scroll
    ;_GUICtrlListViewSetColumnHeaderText ; --> _GUICtrlListView_SetColumn
    ;_GUICtrlListViewSetColumnWidth ; --> _GUICtrlListView_SetColumnWidth
    ;_GUICtrlListViewSetColumnOrder ; --> _GUICtrlListView_SetColumnOrder
    ;_GUICtrlListViewSetCheckState ; --> _GUICtrlListView_SetItemChecked
    ;_GUICtrlListViewSetHotItem ; --> _GUICtrlListView_SetHotItem
    ;_GUICtrlListViewSetHoverTime ; --> _GUICtrlListView_SetHoverTime
    ;_GUICtrlListViewSetItemCount ; --> _GUICtrlListView_SetItemCount
    ;_GUICtrlListViewSetItemSelState ; --> _GUICtrlListView_SetItemSelected
    ;_GUICtrlListViewSetItemText ; --> _GUICtrlListView_SetItemText
    ;_GUICtrlListViewSort ; --> _GUICtrlListView_SimpleSort

    [/autoit]
  • Hallo GerhardSchr,

    Zitat

    moin moin

    Danke Autobert, aber wofür ist dieser code?
    kann da keinen zusammenhang erkennen ^^

    Gruß
    GerhardSchr

    ups, da hatte ich letzte Nacht etwas falsches hochgeladen. :sleeping:
    Ist jetzt berichtigt,

    mfg (Auto)Bert