Frage wegen ListView

  • Ich habe euch mal ein Beispiel gemacht was ich genauer meine und zwar wenn man doppelklick macht auf ListView1 dann werden unten die Daten angezeigt dies geht aber leider nicht bei ListView2
    habe schon mit noch einer Func _LeftDblClick($Info) & Func WM_NOTIFY getestet aber ich bekomme es nicht hin bitte um Hilfe danke.
    Habe euch mal die Daten auch mit drangehangen zum downloaden.


    Spoiler anzeigen
    [autoit]


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

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

    AutoIt Version: 3.3.0.0
    Author: myName

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

    Script Function:
    Template AutoIt script.

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

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

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

    ; Script Start - Add your code below here

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

    #include <GUIConstants.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>

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

    Global Const $LVM_GETITEM = $LVM_FIRST + 5
    Dim $nCurCol= -1
    Dim $nSortDir = 1
    Dim $bSet = 0
    Dim $nCol = -1
    Dim $nr, $Kundendaten

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

    Local $INI = @ScriptDir & "\data\ListView1.ini"
    Local $INI_1 = @ScriptDir & "\data\ListView2.ini"

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

    Global $aGlobal = IniReadSection($INI, "ListView1")
    Global $Listview1,$Form,$lb_Global
    Local $lastNum = IniRead($INI, "Numbers", "last", 0000)

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

    Global $aGlobal_1 = IniReadSection($INI_1, "ListView2")
    Global $Listview2,$Form,$lb_Global_1
    Local $lastNum_1 = IniRead($INI_1, "Numbers", "last", 0000)

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

    #cs#########################################################
    Beispiele ListView1
    #ce#########################################################

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

    If Not FileExists($INI) Then
    IniWrite($INI, "ListView1", 10000, "Mustermann|Löwenzahn|030/80050060")
    IniWrite($INI, "edit", 10000, "")
    IniWrite($INI, "ListView1", 10001, "Mustermann1|Holzbau|0177508090xxx")
    IniWrite($INI, "edit", 10001, "")
    IniWrite($INI, "ListView1", 10002, "Mustermann2|OBI|030/90010506082")
    IniWrite($INI, "edit", 10002, "")
    IniWrite($INI, "Numbers", "last", 10002)
    EndIf

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

    #cs#########################################################
    Beispiele ListView2
    #ce#########################################################
    If Not FileExists($INI_1) Then
    IniWrite($INI_1, "ListView2", 10000, "Mustermann|Hotel Adlon|+4930/80050060")
    IniWrite($INI_1, "edit", 10000, "")
    IniWrite($INI_1, "ListView2", 10001, "Mustermann1|Frinzkalten|+49177508090xxx")
    IniWrite($INI_1, "edit", 10001, "")
    IniWrite($INI_1, "ListView2", 10002, "Mustermann2|Hotel am Wörtersee|+49358/90010506082")
    IniWrite($INI_1, "edit", 10002, "")
    IniWrite($INI_1, "Numbers", "last", 10002)
    EndIf

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

    #Region ### START Koda GUI section ### Form=
    $Form = GUICreate("Test", 625, 372, 341, 376)
    $Tab1 = GUICtrlCreateTab(-1, 13, 625, 193)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("ListView1")
    $ListView1 = GUICtrlCreateListView("Kundennummer |Kundenname|Firma|Telefon", 8, 48, 602, 142)
    $TabSheet2 = GUICtrlCreateTabItem("ListView2")
    $ListView2 = GUICtrlCreateListView("Kundennummer |Kundenname|Firma|Telefon", 8, 48, 602, 142)
    $TabSheet3 = GUICtrlCreateTabItem("TabSheet3")
    GUICtrlSetState(-1,$GUI_SHOW)
    $ListView3 = GUICtrlCreateListView("", 8, 48, 602, 142)
    GUICtrlCreateTabItem("")
    $Group1 = GUICtrlCreateGroup("Info", 0, 216, 624, 137)
    $Input1 = GUICtrlCreateInput("", 8, 264, 121, 21)
    $Input2 = GUICtrlCreateInput("", 168, 264, 121, 21)
    $Input3 = GUICtrlCreateInput("", 320, 264, 121, 21)
    $Input4 = GUICtrlCreateInput("", 480, 264, 121, 21)
    $Label1 = GUICtrlCreateLabel("Nummer", 8, 240, 43, 17)
    $Label2 = GUICtrlCreateLabel("Kundenname", 168, 240, 67, 17)
    $Label3 = GUICtrlCreateLabel("Firma", 320, 240, 29, 17)
    $Button1 = GUICtrlCreateButton("Speichern ", 8, 312, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("Drucken", 96, 312, 75, 25, 0)
    $Button3 = GUICtrlCreateButton("Löschen", 184, 312, 75, 25, 0)
    $Label4 = GUICtrlCreateLabel("Telefon", 480, 240, 40, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    _FillListView()
    GUISetState(@SW_SHOW,$Form)
    GUIRegisterMsg($WM_NOTIFY,"WM_NOTIFY")

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func _FillListView()
    _GUICtrlListView_DeleteAllItems($Listview1)
    If $lastNum = 0 Then Return
    For $i = 1 To UBound($aGlobal) -1
    GUICtrlCreateListViewItem($aGlobal[$i][0] & '|' & $aGlobal[$i][1], $Listview1)
    Next
    _GUICtrlListView_DeleteAllItems($Listview2)
    If $lastNum_1 = 0 Then Return
    For $i = 1 To UBound($aGlobal_1) -1
    GUICtrlCreateListViewItem($aGlobal_1[$i][0] & '|' & $aGlobal_1[$i][1], $Listview2)
    Next
    EndFunc

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

    Func _LeftDblClick($Info)
    GUICtrlSetData($Input1 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 0))
    GUICtrlSetData($Input2 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 1))
    GUICtrlSetData($Input3, _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 2))
    GUICtrlSetData($Input4 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 3))
    GUISetState(@SW_SHOW, $Form)
    EndFunc

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

    #cs
    Func _LeftDblClick($Info)
    GUICtrlSetData($Input1 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview2), $Info[3], 0))
    ;GUICtrlSetData($Combo2 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 1))
    ;GUICtrlSetData($Combo3, _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 2))
    ;GUICtrlSetData($Input4 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 3))
    ;GUICtrlSetData($Combo1 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 4))
    ;GUICtrlSetData($Combo4 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 5))
    ;GUICtrlSetData($Stream , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 7))
    ;GUISetState(@SW_SHOW, $Form)
    EndFunc
    #ce

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
    $hWndListView = $ListView1
    If Not IsHWnd($ListView1) Then $hWndListView = GUICtrlGetHandle($ListView1)
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    _LeftDblClick($aInfo)
    Case $NM_RCLICK ; Sent by a list-view control when the user clicks an item with the right mouse button
    Return $GUI_RUNDEFMSG ; allow the default processing
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]

    Einmal editiert, zuletzt von Sirocool (17. Mai 2009 um 17:33)

    • Offizieller Beitrag

    Ich hab's mal angepasst:

    Spoiler anzeigen
    [autoit]


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

    AutoIt Version: 3.3.0.0
    Author: myName

    Script Function:
    Template AutoIt script.

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

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

    ; Script Start - Add your code below here

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

    #include <GUIConstants.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>

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

    Global Const $LVM_GETITEM = $LVM_FIRST + 5
    Dim $nCurCol = -1
    Dim $nSortDir = 1
    Dim $bSet = 0
    Dim $nCol = -1
    Dim $nr, $Kundendaten

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

    Local $INI = @ScriptDir & "\data\ListView1.ini"
    Local $INI_1 = @ScriptDir & "\data\ListView2.ini"

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

    Global $aGlobal = IniReadSection($INI, "ListView1")
    Global $Listview1, $Form, $lb_Global
    Local $lastNum = IniRead($INI, "Numbers", "last", 0000)

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

    Global $aGlobal_1 = IniReadSection($INI_1, "ListView2")
    Global $Listview2, $Form, $lb_Global_1
    Local $lastNum_1 = IniRead($INI_1, "Numbers", "last", 0000)

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

    #cs#########################################################
    Beispiele ListView1
    #ce#########################################################

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

    If Not FileExists($INI) Then
    IniWrite($INI, "ListView1", 10000, "Mustermann|Löwenzahn|030/80050060")
    IniWrite($INI, "edit", 10000, "")
    IniWrite($INI, "ListView1", 10001, "Mustermann1|Holzbau|0177508090xxx")
    IniWrite($INI, "edit", 10001, "")
    IniWrite($INI, "ListView1", 10002, "Mustermann2|OBI|030/90010506082")
    IniWrite($INI, "edit", 10002, "")
    IniWrite($INI, "Numbers", "last", 10002)
    EndIf

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

    #cs#########################################################
    Beispiele ListView2
    #ce#########################################################
    If Not FileExists($INI_1) Then
    IniWrite($INI_1, "ListView2", 10000, "Mustermann|Hotel Adlon|+4930/80050060")
    IniWrite($INI_1, "edit", 10000, "")
    IniWrite($INI_1, "ListView2", 10001, "Mustermann1|Frinzkalten|+49177508090xxx")
    IniWrite($INI_1, "edit", 10001, "")
    IniWrite($INI_1, "ListView2", 10002, "Mustermann2|Hotel am Wörtersee|+49358/90010506082")
    IniWrite($INI_1, "edit", 10002, "")
    IniWrite($INI_1, "Numbers", "last", 10002)
    EndIf

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

    #Region ### START Koda GUI section ### Form=
    $Form = GUICreate("Test", 625, 372, 341, 376)
    $Tab1 = GUICtrlCreateTab(-1, 13, 625, 193)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("ListView1")
    $Listview1 = GUICtrlCreateListView("Kundennummer |Kundenname|Firma|Telefon", 8, 48, 602, 142)
    $TabSheet2 = GUICtrlCreateTabItem("ListView2")
    $Listview2 = GUICtrlCreateListView("Kundennummer |Kundenname|Firma|Telefon", 8, 48, 602, 142)
    $TabSheet3 = GUICtrlCreateTabItem("TabSheet3")
    GUICtrlSetState(-1, $GUI_SHOW)
    $ListView3 = GUICtrlCreateListView("", 8, 48, 602, 142)
    GUICtrlCreateTabItem("")
    $Group1 = GUICtrlCreateGroup("Info", 0, 216, 624, 137)
    $Input1 = GUICtrlCreateInput("", 8, 264, 121, 21)
    $Input2 = GUICtrlCreateInput("", 168, 264, 121, 21)
    $Input3 = GUICtrlCreateInput("", 320, 264, 121, 21)
    $Input4 = GUICtrlCreateInput("", 480, 264, 121, 21)
    $Label1 = GUICtrlCreateLabel("Nummer", 8, 240, 43, 17)
    $Label2 = GUICtrlCreateLabel("Kundenname", 168, 240, 67, 17)
    $Label3 = GUICtrlCreateLabel("Firma", 320, 240, 29, 17)
    $Button1 = GUICtrlCreateButton("Speichern ", 8, 312, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("Drucken", 96, 312, 75, 25, 0)
    $Button3 = GUICtrlCreateButton("Löschen", 184, 312, 75, 25, 0)
    $Label4 = GUICtrlCreateLabel("Telefon", 480, 240, 40, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    _FillListView()
    GUISetState(@SW_SHOW, $Form)
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func _FillListView()
    _GUICtrlListView_DeleteAllItems($Listview1)
    If $lastNum = 0 Then Return
    For $i = 1 To UBound($aGlobal) - 1
    GUICtrlCreateListViewItem($aGlobal[$i][0] & '|' & $aGlobal[$i][1], $Listview1)
    Next
    _GUICtrlListView_DeleteAllItems($Listview2)
    If $lastNum_1 = 0 Then Return
    For $i = 1 To UBound($aGlobal_1) - 1
    GUICtrlCreateListViewItem($aGlobal_1[$i][0] & '|' & $aGlobal_1[$i][1], $Listview2)
    Next
    EndFunc ;==>_FillListView

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

    Func _LeftDblClick($Info)
    GUICtrlSetData($Input1, _GUICtrlListView_GetItemText($Info[0], $Info[3], 0))
    GUICtrlSetData($Input2, _GUICtrlListView_GetItemText($Info[0], $Info[3], 1))
    GUICtrlSetData($Input3, _GUICtrlListView_GetItemText($Info[0], $Info[3], 2))
    GUICtrlSetData($Input4, _GUICtrlListView_GetItemText($Info[0], $Info[3], 3))
    GUISetState(@SW_SHOW, $Form)
    EndFunc ;==>_LeftDblClick

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
    Local $hWndListView1 = GUICtrlGetHandle($Listview1)
    Local $hWndListView2 = GUICtrlGetHandle($Listview2)
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView1, $hWndListView2
    Switch $iCode
    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    _LeftDblClick($aInfo)
    Case $NM_RCLICK ; Sent by a list-view control when the user clicks an item with the right mouse button
    Return $GUI_RUNDEFMSG ; allow the default processing
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]