Ich Komm hier nicht weiter... Bitte um Hilfe

  • Ich schaffe es nicht...

    Ich habe eine GUI erstellt mit Treeview Element und Listview!
    wenn ich auf ein Treeview Element klicke öffnet sich das Listview mit den entsprechenden Einträgen, jetzt kann ich mit einen Doppelklick eine Zeile auswählen aber wenn ich nun im Listview wieder klicke ist die Funktion Doppelklick weg????????

    Kann mir jemand sagen warum?
    Ich versteh das nicht!!!

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #Include <Date.au3>
    #include <file.au3>
    #include <Array.au3>
    #include <GUIConstants.au3>
    #Include <GuiMonthCal.au3>
    #include <GuiListview.au3>
    #include <GUICombo.au3>

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

    Opt("TrayIconDebug", 1)
    Opt("GUIOnEventMode", 1)

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

    Global Const $THRESHOLD = Number(RegRead("HKEY_CURRENT_USER\Control Panel\Mouse", "DoubleClickSpeed"))
    Global $TIMER = TimerInit(), $aRecords, $x, $listview, $Anrede, $name, $vorname, $Strasse, $Hausnummer, $PLZ, $Ort, $einfuegen, $Button_Abbrechen, $Button_Beenden, $Button_KundenAnlegen, $Button_KundenBearbeiten, $Button_Speichern, $Button_Suche, $Button_Suchen, $uebernehmen, $nr, $x_n, $Anrede_read, $vorname_read, $name_read, $Strasse_read, $Ort_read, $PLZ_read
    Global $Button_Speichern_KundenHinzufuegen
    Global $Button_Speichern_KundenBearbeiten
    Global $Button_Loeschen_KundenLoeschen
    Global Const $NM_FIRST = 0
    Global Const $NM_DBLCLK = -3
    Global Const $ListviewItem = "Anrede|Vorname|Name|Strasse|Nr.|PLZ|Ort"
    $Picture_file = ""
    $Listview = ""

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

    if FileExists ("*.bmp") Then
    $Picture = _FileListToArray(@ScriptDir,"*.Bmp", 1)
    For $i = 1 To $Picture[0]
    $Picture_file = $Picture[$i]
    Next
    EndIf
    if FileExists ("*.jpg") Then
    $Picture = _FileListToArray(@ScriptDir,"*.Jpg", 1)
    For $i = 1 To $Picture[0]
    $Picture_file = $Picture[$i]
    Next
    EndIf

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

    $file = @ScriptDir & "\KundenDaten.dat"
    $fileName = StringTrimRight($file, 4)
    $statuszeile = GUICtrlCreateLabel("Gerade verwendete Datei ist " & $file,10, 480,520,20,-1 )
    GuiCreate($fileName, 800, 600,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSE")
    $Treeview_1 = GuiCtrlCreateTreeview(10, 10, 170, 240, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE)
    $KundenItem = GUICtrlCreateTreeViewitem ("Kunden Verwalten",$Treeview_1)
    $KundenanlegenItem = GUICtrlCreateTreeViewitem ("Kunden anlegen",$KundenItem)
    GUICtrlSetOnEvent($KundenanlegenItem, "Kundenhinzufuegen")
    $KundenbearbeitenItem = GUICtrlCreateTreeViewitem ("Kunden bearbeiten",$KundenItem)
    GUICtrlSetOnEvent($KundenbearbeitenItem, "Kundenbearbeiten")
    $KundenLoeschenItem = GUICtrlCreateTreeViewitem ("Kunden löschen",$KundenItem)
    GUICtrlSetOnEvent($KundenLoeschenItem, "Kundenloeschen")
    $KundenService = GUICtrlCreateTreeViewitem ("Service",$Treeview_1)
    $GeburtstageItem = GUICtrlCreateTreeViewitem ("Geburtstags Liste",$KundenService)
    $TermineItem = GUICtrlCreateTreeViewitem ("Fällige Brillen",$KundenService)
    GUICtrlSetState($KundenItem, BitOR($GUI_EXPAND, $GUI_DEFBUTTON))
    GUICtrlSetState($KundenService, BitOR($GUI_EXPAND, $GUI_DEFBUTTON))
    $Kalender_1 = GUICtrlCreateMonthCal(_NowCalcDate(), 10, 260, 170, 160)
    $Logo = GuiCtrlCreatePic($Picture_file, 10, 430, 170, 160)
    GuiSetState()

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

    While 1
    Sleep(1000)
    WEnd

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

    Func CLOSE()
    Exit
    EndFunc

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

    Func KundenBearbeiten()
    Listview()
    Eingabefeld()
    Bearbeiten()
    GUICtrlSetState($Button_Speichern_KundenHinzufuegen, $GUI_HIDE)
    GUICtrlSetState($Button_Loeschen_KundenLoeschen, $GUI_HIDE)
    $Button_Speichern_KundenBearbeiten = GuiCtrlCreateButton("Speichern", 230, 560, 100, 30)
    GUICtrlSetOnEvent($Button_Speichern_KundenBearbeiten, "Button_Speichern_KundenBearbeiten")
    $Button_Abbrechen = GuiCtrlCreateButton("Abbrechen", 340, 560, 100, 30)
    EndFunc
    Func Button_Speichern_KundenBearbeiten()
    uebernehmen()
    EndFunc

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

    Func Kundenhinzufuegen()
    Listview()
    Eingabefeld()
    ;Button
    GUICtrlSetState($Button_Speichern_KundenBearbeiten, $GUI_HIDE)
    GUICtrlSetState($Button_Loeschen_KundenLoeschen, $GUI_HIDE)
    $Button_Speichern_KundenHinzufuegen = GuiCtrlCreateButton("Speichern", 230, 560, 100, 30)
    GUICtrlSetOnEvent($Button_Speichern_KundenHinzufuegen, "Button_Speichern_KundenHinzufuegen")
    $Button_Abbrechen = GuiCtrlCreateButton("Abbrechen", 340, 560, 100, 30)
    EndFunc
    Func Button_Speichern_KundenHinzufuegen()
    hinzufuegen()
    EndFunc

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

    Func KundenLoeschen()
    Listview()
    Eingabefeld()
    GUICtrlSetState($Button_Speichern_KundenHinzufuegen, $GUI_HIDE)
    GUICtrlSetState($Button_Speichern_KundenBearbeiten, $GUI_HIDE)
    $Button_Loeschen_KundenLoeschen = GuiCtrlCreateButton("Löschen", 230, 560, 100, 30)
    GUICtrlSetOnEvent($Button_Loeschen_KundenLoeschen, "Button_Loeschen_KundenLoeschen")
    $Button_Abbrechen = GuiCtrlCreateButton("Abbrechen", 340, 560, 100, 30)
    EndFunc
    func Button_Loeschen_KundenLoeschen()
    loeschen()
    EndFunc

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

    Func Eingabefeld()
    ;Label
    $VornameText = GuiCtrlCreateLabel("Vorname", 190, 390, 100, 20)
    $nameText = GuiCtrlCreateLabel("Name", 300, 390, 100, 20)
    $StrasseText = GuiCtrlCreateLabel("Strasse", 190, 440, 150, 20)
    $HausnummerText = GuiCtrlCreateLabel("Nr.", 350, 440, 50, 20)
    $PLZText = GuiCtrlCreateLabel("PLZ", 190, 490, 50, 20)
    $OrtText = GUICtrlCreateLabel("Ort", 250, 490, 150, 20)
    ;Input
    $Anrede = GuiCtrlCreateCombo("", 190, 350, 80, 21)
    $AnredeText = GUICtrlSetData(-1,"Herr|Frau|Firma","Anrede")
    $vorname = GuiCtrlCreateInput("", 190, 410, 100, 20)
    $name = GuiCtrlCreateInput("", 300, 410, 100, 20)
    $Strasse = GuiCtrlCreateInput("", 190, 460, 150, 20)
    $Hausnummer = GuiCtrlCreateInput("", 350, 460, 50, 20)
    $PLZ = GuiCtrlCreateInput("", 190, 510, 50, 20)
    $Ort = GuiCtrlCreateInput("", 250, 510, 150, 20)
    EndFunc

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

    Func Listview()
    $listview = GUICtrlCreateListView ($ListviewItem,190,10,600,335)
    If Not _FileReadToArray($file, $aRecords) Then
    MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
    Exit
    EndIf
    For $x = 1 to $aRecords[0]
    if $aRecords[$x] = "" Then
    _ArrayDelete($aRecords,$x)
    $help = $aRecords[0]
    $aRecords[0]= $help-1
    Else
    GUICtrlCreateListViewItem($aRecords[$x],$listview)
    EndIf
    Next
    Dim $B_DESCENDING[ _GUICtrlListViewGetSubItemsCount ($listview) ]
    GUIRegisterMsg(0x004E, "_DoubleClickOnListView")
    EndFunc

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

    func bearbeiten()
    $nr = ControlListView("","",$listview,"GetSelected")
    $nr = $nr+1
    $Datensatz = StringSplit($aRecords[$nr],"|")
    If $Datensatz[0] > 0 Then GUICtrlSetData($Anrede,$Datensatz[1])
    If $Datensatz[0] > 1 Then GUICtrlSetData($vorname,$Datensatz[2])
    If $Datensatz[0] > 2 Then GUICtrlSetData($name,$Datensatz[3])
    If $Datensatz[0] > 3 Then GUICtrlSetData($Strasse,$Datensatz[4])
    If $Datensatz[0] > 4 Then GUICtrlSetData($Hausnummer,$Datensatz[5])
    If $Datensatz[0] > 5 Then GUICtrlSetData($PLZ,$Datensatz[6])
    If $Datensatz[0] > 6 Then GUICtrlSetData($Ort,$Datensatz[7])
    EndFunc

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

    Func speichern()
    FileOpen($file,2 )
    For $x = 1 to $aRecords[0]
    FileWriteLine($file,$aRecords[$x])
    FileClose($file)
    Next
    EndFunc

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

    func anlegen()
    $Button2 = GUICtrlCreateButton("hinzufügen",210,275,100,20)
    GUICtrlSetState($Button2, $GUI_SHOW)
    EndFunc

    Func hinzufuegen()
    $Anrede_read = GUICtrlRead($Anrede)
    $Vorname_read = GUICtrlRead($vorname)
    $Name_read = GUICtrlRead($name)
    $Strasse_read = GUICtrlRead($Strasse)
    $Hausnummer_read = GUICtrlRead($Hausnummer)
    $PLZ_read = GUICtrlRead($PLZ)
    $Ort_read = GUICtrlRead($Ort)
    $new = $aRecords[0]+1
    _ArrayInsert($aRecords,$new,$Anrede_read & "|" & $Vorname_read & "|" & $Name_read & "|" & $Strasse_read & "|" & $Hausnummer_read & "|" & $PLZ_read & "|" & $Ort_read)
    $aRecords[0] = $new
    GUICtrlSetData ($Anrede, "Anrede")
    GUICtrlSetData ($vorname, "")
    GUICtrlSetData ($name, "")
    GUICtrlSetData ($Strasse, "")
    GUICtrlSetData ($Hausnummer, "")
    GUICtrlSetData ($PLZ, "")
    GUICtrlSetData ($Ort, "")
    speichern()
    refresh()
    EndFunc

    Func uebernehmen()
    $Anrede_read = GUICtrlRead($Anrede)
    $Vorname_read = GUICtrlRead($vorname)
    $Name_read = GUICtrlRead($name)
    $Strasse_read = GUICtrlRead($Strasse)
    $Hausnummer_read = GUICtrlRead($Hausnummer)
    $PLZ_read = GUICtrlRead($PLZ)
    $Ort_read = GUICtrlRead($Ort)
    _ArrayDelete($aRecords,$nr)
    _ArrayInsert($aRecords,$nr,$Anrede_read & "|" & $Vorname_read & "|" & $Name_read & "|" & $Strasse_read & "|" & $Hausnummer_read & "|" & $PLZ_read & "|" & $Ort_read)
    GUICtrlSetData ($Anrede, "Anrede")
    GUICtrlSetData ($vorname, "")
    GUICtrlSetData ($name, "")
    GUICtrlSetData ($Strasse, "")
    GUICtrlSetData ($Hausnummer, "")
    GUICtrlSetData ($PLZ, "")
    GUICtrlSetData ($Ort, "")
    speichern()
    refresh()
    EndFunc

    Func loeschen()
    $nr = ControlListView("","",$listview,"GetSelected")
    $nr = $nr+1
    $new = $aRecords[0]-1
    _ArrayDelete($aRecords,$nr)
    $aRecords[0] = ""
    $aRecords[0] = $new
    speichern()
    refresh()
    EndFunc

    func refresh()
    $new = $aRecords[0]
    $aRecords[0] = ""
    _ArraySort($aRecords)
    $aRecords[0] = $new
    GUICtrlDelete($listview)
    $listview = GUICtrlCreateListView ($ListviewItem,190,10,600,335)
    For $x = 1 to $aRecords[0]
    GUICtrlCreateListViewItem($aRecords[$x],$listview)
    Next
    EndFunc

    Func _DoubleClickOnListView($hWndGUI, $MsgID, $wParam, $lParam);Die Eigentliche Funktion
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3); Checkt wie das EVENT aussieht
    If $wParam = $ListView Then;Wenn der Klick auf das ListView ging..
    If $event = $NM_DBLCLK Then;.. Wenn es ein DoppelKlick war
    ; Hier kommt hin was er machen soll:
    bearbeiten()
    EndIf
    EndIf
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc ;==>_DoubleClickOnListView

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