Brauche Hilfe bei ListView

  • Hallo zusammen,

    Um sofort zur Sache zu kommen hier der Source:

    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    $b_form = GUICreate("Test", 195, 130, 193, 125)
    GUISetOnEvent($GUI_EVENT_CLOSE,"Close")
    $b_list = GUICtrlCreateListView("Button|Frequenz|Delay", 8, 8, 179, 86)
    GUICtrlSendMsg(-1, 0x101E, 0, 50)
    GUICtrlSendMsg(-1, 0x101E, 1, 75)
    GUICtrlSendMsg(-1, 0x101E, 2, 50)
    $b_list_item = GUICtrlCreateListViewItem("b_1|120|100", $b_list)
    $b_button = GUICtrlCreateButton("Beep", 8, 96, 179, 25, 0)
    GUICtrlSetOnEvent(-1,"_Beep")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func Close()
    Exit
    EndFunc ;==>Close

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

    Func _Beep()
    Beep(??????????????)
    EndFunc ;==>_Beep

    [/autoit]

    so ich möchte jetzt das wenn man afu den ersten button klickt, das es beept, und zwar soll er die sich zugehörige frequenz und die länge des tons aus dem listview lesen...
    ka wie ichs mach mit _GUICtrlListViewGetItem komm ich nich klar xD

    3 Mal editiert, zuletzt von Darknoop (29. Oktober 2008 um 18:36)

  • Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $b_form = GUICreate("Test", 195, 130, 193, 125)
    GUISetOnEvent($GUI_EVENT_CLOSE,"Close")
    $b_list = GUICtrlCreateListView("Button|Frequenz|Delay", 8, 8, 179, 86)
    GUICtrlSendMsg(-1, 0x101E, 0, 50)
    GUICtrlSendMsg(-1, 0x101E, 1, 75)
    GUICtrlSendMsg(-1, 0x101E, 2, 50)
    $b_list_item = GUICtrlCreateListViewItem("b_1|120|100", $b_list)
    $b_button = GUICtrlCreateButton("Beep", 8, 96, 179, 25, 0)
    GUICtrlSetOnEvent(-1,"_Beep")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func Close()
    Exit
    EndFunc ;==>Close

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

    Func _Beep()
    $freq = Guictrlread($b_list_item)
    beep(Stringmid($freq, 5, 3))
    EndFunc ;==>_Beep

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

    die Duration schaffst du selber ..

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

    • Offizieller Beitrag

    Oder so:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #Include <GuiListView.au3>
    Opt("GUIOnEventMode", 1)

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

    $b_form = GUICreate("Test", 195, 130, 193, 125)
    GUISetOnEvent($GUI_EVENT_CLOSE,"Close")
    $b_list = GUICtrlCreateListView("Button|Frequenz|Delay", 8, 8, 179, 86)
    GUICtrlSendMsg(-1, 0x101E, 0, 50)
    GUICtrlSendMsg(-1, 0x101E, 1, 75)
    GUICtrlSendMsg(-1, 0x101E, 2, 50)
    $b_list_0 = GUICtrlCreateListViewItem("b_1|120|100", $b_list)
    GUICtrlCreateListViewItem("b_2|220|100", $b_list)
    $b_1 = GUICtrlCreateButton("Beep", 8, 96, 179, 25, 0)
    GUICtrlSetOnEvent(-1,"_Beep")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func Close()
    Exit
    EndFunc ;==>Close

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

    Func _Beep()
    Local $aIndex = _GUICtrlListView_GetSelectedIndices($b_list, True)
    If $aIndex[0] = 0 Then Return
    Beep(_GUICtrlListView_GetItemText($b_list, $aIndex[1], 1), _GUICtrlListView_GetItemText($b_list, $aIndex[1], 2))
    EndFunc ;==>_1

    [/autoit]
  • Hi,
    aber franzp deine Lösung ist irgendwie falsch.

    Das Programm soll ja das markierte Item abspielen lassen. Bei dir Spielt er einfach immer das erste. Abgesehen davon kann man mit der Stringmid-Funktion auch keine Zahlen eingeben die mehr als 3 Stellen haben.

    Wenn dann so, ... oder so ähnlich :D:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $b_form = GUICreate("Test", 195, 130, 193, 125)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Close")
    $b_list = GUICtrlCreateListView("Button|Frequenz|Delay", 8, 8, 179, 86)
    GUICtrlSendMsg(-1, 0x101E, 0, 50)
    GUICtrlSendMsg(-1, 0x101E, 1, 75)
    GUICtrlSendMsg(-1, 0x101E, 2, 50)
    $b_list_item = GUICtrlCreateListViewItem("b_1|120|100", $b_list)
    $b_button = GUICtrlCreateButton("Beep", 8, 96, 179, 25, 0)
    GUICtrlSetOnEvent(-1, "_Beep")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func Close()
    Exit
    EndFunc ;==>Close

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

    Func _Beep()
    $freq = GUICtrlRead(GUICtrlRead($b_list))
    If IsString($freq) Then
    $string = StringSplit($freq, "|")
    Beep($string[2], $string[3])
    EndIf
    EndFunc ;==>_Beep

    [/autoit]

    Ich wette jetzt kommt Oscar und sagt mir, dass man das auch mit StringRegExp machen kann :rofl: .
    Ich hab das nur immer noch nicht komplett kapiert 8) .

  • @anno

    ja hast recht !! aber von markierten war ja nicht die rede..

    Sorry!

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • nein das ist schon so wie ich das haben will :) in der listview stehen zu jedem button die frequenz und die länge also für jeden button nur eine zugehörige frequenz + delay, die markierung spiel hier keine rolle ^^ sry wenn ich mich nich klar genug ausgedrückt hab

    mfg darknoop