Listview klicken

  • Hi
    Ich versuche im Moment verzweifelt einen klick auf nen Listviewitem festzustellen.
    Habe es bereits mit WM_Notify versucht (eventuell falsch angewandt, weil noch nie benutzt)
    Und ich bin ziemlich GUI unerfahren.. wenns nach mir ginge würd ich was für die Konsole basteln... aber der Abteilungsleiter braucht immer was zum rumklickern :D
    Betroffen ist das Listview $cServerliste. Hoffe ihr könnt mir da fix auf die Sprünge helfen...^^

    Spoiler anzeigen
    [autoit]

    #RequireAdmin
    #AutoIt3Wrapper_UseX64=n
    ;#####################################################################################################
    ;Includes;############################################################################################
    ;#####################################################################################################

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

    ;~ #include <mysql.au3>
    ;~ #include "WinWMI_UserAccount.au3"
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>

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

    AutoItSetOption('TrayAutoPause', 0)
    AutoItSetOption('TrayMenuMode', 1)

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

    ;#####################################################################################################
    ;Konstanten;##########################################################################################
    ;#####################################################################################################

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

    ;~ Global Const $sDbserver = 'localhost'
    ;~ Global Const $sDbuser = 'root'
    ;~ Global Const $sDbpassword = ''
    ;~ Global Const $sDbname = 'technik'

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

    ;#####################################################################################################
    ;Herstellen der Verbindung;###########################################################################
    ;#####################################################################################################

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

    ;~ _MySQL_InitLibrary()
    ;~ If @error Then
    ;~ TrayTip('Error', 'libmysql.dll konnte nicht gefunden werden', 10, 3)
    ;~ Sleep(10000)
    ;~ Exit (1)
    ;~ EndIf
    ;~ $MysqlConn = _MySQL_Init()
    ;~ $Connected = _MySQL_Real_Connect($MysqlConn, $sDbserver, $sDbuser, $sDbpassword, $sDbname)
    ;~ $hSQLping = _MySQL_Ping($MysqlConn)
    ;~ If $hSQLping = 1 Or $hSQLping = 3 Then
    ;~ TrayTip('Error', 'Verbindung zur Datenbank konnte nicht hergestellt werden', 10, 3)
    ;~ Sleep(10000)
    ;~ Exit (1)
    ;~ EndIf

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

    ;#####################################################################################################
    ;Grafische Oberflächen werden erstellt;###############################################################
    ;#####################################################################################################

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

    $cTechnikTool = GUICreate("Techniktool", 1025, 741, 193, 123)
    ; Menüleiste
    $MenuItem1 = GUICtrlCreateMenu("&MenuItem1")
    $MenuItem2 = GUICtrlCreateMenuItem("MenuItem2", $MenuItem1)
    ; ==> Menüleiste
    ; $cServerliste
    $cServerliste = GUICtrlCreateListView("", 8, 8, 234, 702,$GUI_DROPACCEPTED+$LVS_SINGLESEL+$LVS_NOSORTHEADER+$LVS_SHOWSELALWAYS)
    $hServerliste = GUICtrlGetHandle($cServerliste)
    _GUICtrlListView_AddColumn($hServerliste, "Server", 110)
    _GUICtrlListView_AddColumn($hServerliste, "IP-Adresse", 110)
    ;~ $aReturn = _mysql_serverread($MysqlConn)
    Local $aReturn[2][2] = [["Server1","192.168.0.1"],["Server2","192.168.0.2"]]
    _GUICtrlListView_AddArray($hServerliste, $aReturn)

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

    ; ==> $cServerliste
    $Tab1 = GUICtrlCreateTab(256, 8, 761, 705)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Systeminformationen")
    $cGroupNetwork = GUICtrlCreateGroup("Netzwerkkonfiguration", 528, 40, 233, 129)
    $cIpadressename = GUICtrlCreateLabel("IP-Adresse", 536, 64, 55, 17)
    $cIpadresse = GUICtrlCreateLabel(@IPAddress1, 632, 64, 85, 17)
    $Label4 = GUICtrlCreateLabel("Subnetzmaske", 536, 88, 74, 17)
    $Label3 = GUICtrlCreateLabel("Gateway", 536, 112, 46, 17)
    $Label5 = GUICtrlCreateLabel("DNS-Server", 536, 136, 61, 17)
    $Label6 = GUICtrlCreateLabel("test", 632, 88, 85, 17)
    $Label7 = GUICtrlCreateLabel("192.168.100.200", 632, 112, 85, 17)
    $Label8 = GUICtrlCreateLabel("192.168.100.200", 632, 136, 85, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group1 = GUICtrlCreateGroup("Allgemein", 264, 40, 257, 129)
    $Label1 = GUICtrlCreateLabel("Computername", 272, 64, 75, 17)
    $Label2 = GUICtrlCreateLabel("192.168.100.100", 368, 64, 85, 17)
    $Label10 = GUICtrlCreateLabel("Domäne", 272, 88, 44, 17)
    $Label9 = GUICtrlCreateLabel("Betriebssystem", 272, 112, 74, 17)
    $Label11 = GUICtrlCreateLabel("Servicepack", 272, 136, 64, 17)
    $Label12 = GUICtrlCreateLabel("255.255.255.255", 368, 88, 85, 17)
    $Label13 = GUICtrlCreateLabel("192.168.100.200", 368, 112, 85, 17)
    $Label14 = GUICtrlCreateLabel("192.168.100.200", 368, 136, 85, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group2 = GUICtrlCreateGroup("Servermodell", 768, 40, 233, 129)
    $Label15 = GUICtrlCreateLabel("Mainboard", 776, 64, 54, 17)
    $Label16 = GUICtrlCreateLabel("192.168.100.100", 872, 64, 85, 17)
    $Label17 = GUICtrlCreateLabel("BIOS-Version", 776, 112, 67, 17)
    $Label20 = GUICtrlCreateLabel("255.255.255.255", 872, 88, 85, 17)
    $Label21 = GUICtrlCreateLabel("192.168.100.200", 872, 112, 85, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group3 = GUICtrlCreateGroup("Leistung", 264, 176, 257, 145)
    $Label18 = GUICtrlCreateLabel("Prozessor", 272, 200, 50, 17)
    $Label19 = GUICtrlCreateLabel("192.168.100.100", 368, 200, 85, 17)
    $Label23 = GUICtrlCreateLabel("Arbeitsspeicher", 272, 248, 76, 17)
    $Label22 = GUICtrlCreateLabel("Speicherplatz", 272, 272, 68, 17)
    $Label25 = GUICtrlCreateLabel("255.255.255.255", 368, 224, 85, 17)
    $Label26 = GUICtrlCreateLabel("192.168.100.200", 368, 248, 85, 17)
    $Label27 = GUICtrlCreateLabel("192.168.100.200", 368, 272, 85, 17)
    $Label24 = GUICtrlCreateLabel("Hyperthreading", 272, 224, 76, 17)
    $Label28 = GUICtrlCreateLabel("Label28", 368, 296, 42, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Programme = GUICtrlCreateTabItem("Programme")
    $ListView2 = GUICtrlCreateListView("", 264, 40, 746, 662,$GUI_DROPACCEPTED+$LVS_SINGLESEL+$LVS_NOSORTHEADER)
    _GUICtrlListView_AddColumn(GUICtrlGetHandle($ListView2), "Programm", 250)
    _GUICtrlListView_AddColumn(GUICtrlGetHandle($ListView2), "Version", 140)
    _GUICtrlListView_AddColumn(GUICtrlGetHandle($ListView2), "Publisher", 160)
    _GUICtrlListView_AddColumn(GUICtrlGetHandle($ListView2), "Pfad", 170)
    ;~ $aReturn = _mysql_programsread($MysqlConn)
    ;~ _GUICtrlListView_AddArray(GUICtrlGetHandle($ListView2), $aReturn)
    $Benutzer = GUICtrlCreateTabItem("Benutzer")
    $ListView3 = GUICtrlCreateListView("", 264, 40, 746, 662,$GUI_DROPACCEPTED+$LVS_SINGLESEL+$LVS_NOSORTHEADER)
    _GUICtrlListView_AddColumn(GUICtrlGetHandle($ListView3), "Benutername", 300)
    _GUICtrlListView_AddColumn(GUICtrlGetHandle($ListView3), "Voller Name", 150)
    _GUICtrlListView_AddColumn(GUICtrlGetHandle($ListView3), "Deaktiviert", 160)
    _GUICtrlListView_AddColumn(GUICtrlGetHandle($ListView3), "Lokaler Benutzer", 120)
    ;~ $aBenutzer = _WinWMI_UserAccount_GetInformation("Name,Fullname,Disabled,LocalAccount")
    ;~ _GUICtrlListView_AddArray(GUICtrlGetHandle($ListView3), $aBenutzer)
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    ;~ _Exit()
    Exit
    Case $cServerliste
    $sSelected = _GUICtrlListView_GetSelectedIndices($hServerliste)
    If $sSelected <> "" Then
    MsgBox(0,"",_GUICtrlListView_GetItemText($hServerliste,$sSelected,1) )
    EndIf
    EndSwitch
    WEnd

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

    ;~ Func _mysql_serverread(Const $MysqlVerbindung)
    ;~ _MySQL_Real_Query($MysqlVerbindung, "SELECT `server`.`server_name`, `server`.`server_ip` FROM `technik`.`server` Order by `server`.`server_name` asc;")
    ;~ If @error Then
    ;~ Return SetError(-1, @error, 0)
    ;~ Else
    ;~ $sResult = _MySQL_Store_Result($MysqlVerbindung)
    ;~ $aResult = _MySQL_Fetch_Result_StringArray($sResult)
    ;~ _MySQL_Free_Result($sResult)
    ;~ _ArrayDelete($aResult,0)
    ;~ Return $aResult
    ;~ EndIf
    ;~ EndFunc ;==>_mysql_serverread

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

    ;~ Func _mysql_programsread(Const $MysqlVerbindung)
    ;~ _MySQL_Real_Query($MysqlVerbindung, "SELECT `programme`.`programme_name`, `programme`.`programme_version`, `programme`.`programme_publisher`, `programme`.`programme_path` FROM `technik`.`programme` WHERE `programme`.`server_id` = (SELECT `server`.`server_id` FROM `technik`.`server` WHERE `server`.`server_ip` = '192.168.1.1') ORDER BY `programme`.`programme_name` ASC;")
    ;~ If @error Then
    ;~ Return SetError(-1, @error, 0)
    ;~ Else
    ;~ $sResult = _MySQL_Store_Result($MysqlVerbindung)
    ;~ $aResult = _MySQL_Fetch_Result_StringArray($sResult)
    ;~ _MySQL_Free_Result($sResult)
    ;~ _ArrayDelete($aResult,0)
    ;~ Return $aResult
    ;~ EndIf
    ;~ EndFunc ;==>_mysql_programsread

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

    ;~ Func _Exit()
    ;~ $iReturn = MsgBox(4 + 48, "Achtung", "Soll das Programm wirklich beendet werden?")
    ;~ If $iReturn = 6 Then
    ;~ ; Verbindung beenden
    ;~ _MySQL_Close($MysqlConn)
    ;~ Sleep(300)
    ;~ ; MYSQL beenden
    ;~ _MySQL_EndLibrary()
    ;~ Exit
    ;~ EndIf
    ;~ EndFunc ;==>_Exit

    [/autoit]

    21 is only half the truth.

    Einmal editiert, zuletzt von Mahagon (5. Juni 2010 um 23:17)

  • Nein ich möchte das Item auslesen, wenn es angeklickt wurde.
    Das Auslesen ist nicht das Problem, aber das Klicken bringt mich zur Verweifelung.

    21 is only half the truth.

    • Offizieller Beitrag

    Hier ein Bsp., beachte den Style, wenn du SubItem-Klicks auswerten möchtest.

    Spoiler anzeigen
    [autoit]

    #include <ListViewConstants.au3>
    #include <StructureConstants.au3>
    #include<GUIConstantsEx.au3>
    #include<WindowsConstants.au3>
    #include <GUIListView.au3>

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

    $gui = GUICreate('test')
    ; === $LVS_EX_FULLROWSELECT zwingend für Itemnotifikation bei SubItemklick!
    $hListView = GUICtrlCreateListView('Spalte1|Spalte2', 10, 10, 300, 200, -1, BitOR($LVS_EX_TRACKSELECT,$LVS_EX_FULLROWSELECT))
    _GUICtrlListView_SetColumnWidth($hListView, 0, 146)
    _GUICtrlListView_SetColumnWidth($hListView, 1, $LVSCW_AUTOSIZE_USEHEADER)
    For $i = 1 To 10
    GUICtrlCreateListViewItem('Zeile ' & $i & ' Spalte 1|Zeile ' & $i & ' Spalte 2', $hListView)
    Next
    GUISetState()
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    Do
    $msg = GUIGetMsg()
    Until $msg = $GUI_EVENT_CLOSE

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

    Func _LeftClick($Info)
    MsgBox(0, 'Text in Spalte', _GUICtrlListView_GetItemText($hListView, $Info[0], $Info[1]) )
    EndFunc

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)

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

    $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_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[2] = [DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem")]
    _LeftClick($aInfo)
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]