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
#Include <Date.au3>
#include <file.au3>
#include <Array.au3>
#include <GUIConstants.au3>
#Include <GuiMonthCal.au3>
#include <GuiListview.au3>
#include <GUICombo.au3>
Opt("TrayIconDebug", 1)
Opt("GUIOnEventMode", 1)
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 = ""
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
$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()
While 1
Sleep(1000)
WEnd
Func CLOSE()
Exit
EndFunc
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
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
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
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
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
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
Func speichern()
FileOpen($file,2 )
For $x = 1 to $aRecords[0]
FileWriteLine($file,$aRecords[$x])
FileClose($file)
Next
EndFunc
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