Mysql Abfragen in Listview

  • Guten Abend,

    Ich habe mir mal nen Quellcode aus dem Forum hier genommen

    [autoit]

    #include "MySQL.au3"
    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 443, 193, 125)
    $List1 = GUICtrlCreateList("", 8, 8, 345, 409)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()

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

    $UserName = "root"
    $Password = ""
    $Database = "test"
    $MySQLServerName = "127.0.0.1"

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

    $SQLInstance = _MySQLConnect($UserName,$Password,$Database,$MySQLServerName)

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

    $SQLCode = "SELECT * FROM db"
    $TableContents = _Query($SQLInstance,$SQLCode)

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

    With $TableContents
    While Not .EOF
    MsgBox(0, 'Output', .Fields("artikel").value)
    .MoveNext
    WEnd
    EndWith
    _MySQLEnd($SQLInstance)

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

    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]

    Mein Vorhaben ist nun folgend:

    • Auflistung nicht mit MSGBox sondern in listview (List1)
    • Jeder Artikel soll im listview mit doppelklick anwäählbar sein wo sich dann ein HTTP LInk drunter versteckt, der auch aus der sql kommt

    Kann mir wer da schützenhilfe geben? Also keinen Code sondern stichworte für den anfang?

    MFG

  • Hi,

    also das mit dem Doppelklick habe ich gelöst bekommen mit dem Artikel auch aber diese Lösung ist wahrscheinlich nicht sehr gut aber ich habe gerade auch keine Möglichkeit das mit Mysql zu testen
    Evtl. kannst du ja irgendwo den index der Zeile speichern und dann die Page spalte ausgeben? (keine Ahnung)

    Spoiler anzeigen
    [autoit]

    #include<GUIConstants.au3>
    #include<GUIConstantsEx.au3>
    #include<WindowsConstants.au3>
    #include <GUIListView.au3>

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

    Dim $artikel[3][2]
    $artikel [0][0] = "Hemd"
    $artikel [0][1] = "www.ebay.de"

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

    $artikel [1][0] = "Auto"
    $artikel [1][1] = "www.google.de"

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

    $artikel [2][0] = "AutoIt"
    $artikel [2][1] = "www.autoit.de"

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

    GUICreate("Test", 300, 300)
    $hList = GUICtrlCreateList("", 10, 10)
    For $i = 0 To UBound($artikel)-1
    GUICtrlSetData($hList, $artikel[$i][0])
    Next
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
    GUICtrlCreateInput("", 10, 280)
    GUISetState()

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

    While True
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then Exit
    WEnd

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $hWndList
    If Not IsHWnd($hList) Then $hWndList = GUICtrlGetHandle($hList)
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word
    Switch $hWndFrom
    Case $hList, $hWndList ;Liste
    ;Console Write habe ich dazu benutzt um herauszufinden welchen $iCode der Doppelklick hat ==> 2
    ConsoleWrite("$hWnd: "&$hWnd&@CRLF& _
    "$iMsg: "&$iMsg&@CRLF& _
    "$iwParam: "&$iwParam&@CRLF& _
    "$ilParam: "&$ilParam&@CRLF& _
    "$iCode: "&$iCode)
    Switch $iCode
    Case 2 ;Doppelklick
    forwardpage()
    EndSwitch
    EndSwitch
    EndFunc ;==>WM_NOTIFY

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

    Func forwardpage()
    $index = _ArraySearch($artikel, GUICtrlRead($hList))
    MsgBox(0, "Res:", "Artikel: "&$artikel[$index][0]&@CRLF& _
    "Seite: "&$artikel[$index][1])
    EndFunc

    [/autoit]

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Doppeltklick für eine Listbox bzw. andere Controls.

    Spoiler anzeigen
    [autoit]


    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
    ;
    ;
    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
    If Not IsHWnd($hListBox) Then $hWndListBox = GUICtrlGetHandle($hListBox)
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word
    Switch $hWndFrom
    Case $hListBox, $hWndListBox
    Switch $iCode
    Case $LBN_DBLCLK ; Listbox Konstante s. entsprechendes include
    ;deine Funktion
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND (Bugfix)

    [/autoit]


    Für ein Listview gibts noch diese Variante:

    Spoiler anzeigen
    [autoit]


    GUIRegisterMsg($WM_NOTIFY, "_DoubleClickOnListView")
    ;
    ;
    Func _DoubleClickOnListView($hWnd, $Msg, $wParam, $lParam) ;Doppelklick auf ein Listviewitem
    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 = $hListView And $event = $NM_DBLCLK Then ;Wenn der Klick auf das ListView ging und es ein Doppelklick (windowskonstante) war, dann
    ; deine Funktion
    EndIf
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc ;==>_DoubleClickOnListView

    [/autoit]

    Worin genau liegt das Problem bei Frage1? Bei der MySQL-Abfrage oder beim Erstellen der Listviewitems?