Listview Eintrag über Mausklick erstellen

  • Hallo ich bin neu hier und kenn mich mit AutoIT nicht besonders gut aus und benötige eure Hilfe.


    Und zwar geht es um folgendes: Ich habe eine Listview mit Einträgen die aus einer ini ausgelesen werden. Ich will das wenn man auf einen dieser Einträge klickt dieser oben in eine Inputbox eingefüllt wird. Das hab ich jetzt auch nach viel hin und her hingebracht, aber der Eintrag kann nicht mehr editiert werden, da alles in einer Endlosschleife hängt und sobald man eine Zahl verändern will greift die Schleife und setzt es eben auf den Wert aus der Listview.


    Hoffe ihr könnt mir helfen


    Mein Script sieht so aus:


    Und meine NetSend.ini so:

    Code
    [Netze] 
    Netz1=10.0.40.1 - 145 
    Netz2=172.2.54.54 - 245 
    Netz3=192.5.63.02 - 2
  • So kannst du verhindern, dass die Schleife das blockt:

    Spoiler anzeigen
    [autoit]

    $temp = 0
    While 1
    $nMsg = GUIGetMsg()
    $list = GUICtrlRead($listView)
    If $list <> 0 And $list <> $temp Then
    $x = _GUICtrlListView_GetItemTextString($listView, _GUICtrlListView_GetSelectionMark($listView))
    $y = StringSplit($x, ".",1)
    $iprange2 = StringSplit ($y[4], " - ",1)
    GUICtrlSetData($A1, $y[1])
    GuiCtrlSetData($A2, $y[2])
    GuiCtrlSetData($A3, $y[3])
    GuiCtrlSetData($A4, $iprange2[1])
    GuiCtrlSetData($A5, $iprange2[2])
    $temp = $list
    EndIf

    [/autoit]
    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Hallo asdfghjk,

    herzlich wilkommen im Forum und viel Spass mit AutoIt.
    teste einmal dieses Skript:

    Spoiler anzeigen
    [autoit]

    #include <Process.au3>
    #include <GUIConstantsEx.au3>
    #include <AVIConstants.au3>
    #include <TreeViewConstants.au3>
    #include <GuiListView.au3>
    #include <File.au3>
    #include <array.au3>

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

    Dim $abc[4]
    ; GUI
    $Form = GUICreate("Net Send", 225, 225)
    GUISetIcon(@SystemDir & "\cmd.exe", 0)
    $listView = GUICtrlCreateListView("Netze", 10, 52, 207, 153, BitOR($LVS_SINGLESEL, $LVS_SHOWSELALWAYS), $LVS_EX_FULLROWSELECT)
    _GUICtrlListView_SetColumnWidth($listView, 0, 203)
    If FileExists(@ScriptDir & "\NetSend.ini") Then
    $ip = IniReadSection(@ScriptDir & "\NetSend.ini", "Netze")
    If @error Then
    MsgBox(4096, "Fehler", "Ini-Datei fehlt")
    Else
    For $i = 1 To $ip[0][0]
    $netz = StringSplit($ip[$i][1], ".", 1)
    $iprange = StringSplit($netz[4], " - ", 1)
    $abc[$i] = GUICtrlCreateListViewItem($netz[1] & "." & $netz[2] & "." & $netz[3] & "." & $iprange[1] & " - " & $iprange[2], $listView)
    Next
    EndIf
    Else
    MsgBox(64, "Fehler", "Ini-Datei fehlt", 30)
    EndIf

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

    GUICtrlCreateLabel("IP Adressbereich: ", 10, 4)
    $A1 = GUICtrlCreateInput("", 10, 25, 35, 20)
    $A2 = GUICtrlCreateInput("", 50, 25, 35, 20)
    $A3 = GUICtrlCreateInput("", 90, 25, 35, 20)
    $A4 = GUICtrlCreateInput("", 130, 25, 35, 20)
    $A5 = GUICtrlCreateInput("", 182, 25, 35, 20)
    GUICtrlCreateLabel(Chr(151), 170, 28)
    GUISetState(@SW_SHOW)

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

    ;$asdf = _GUICtrlListView_SetItemSelected($listView, _GUICtrlListView_ClickItem($listView, _GUICtrlListView_GetSelectionMark($listView), "left"), True, False)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $abc[1] To $abc[3]
    $x = _GUICtrlListView_GetItemTextString($listView, _GUICtrlListView_GetSelectionMark($listView))
    ;ConsoleWrite($x & @CRLF)
    If $x <> "" Then
    $y = StringSplit($x, ".", 1)
    ;_ArrayDisplay($y)
    $iprange2 = StringSplit($y[4], " - ", 1)
    GUICtrlSetData($A1, $y[1])
    GUICtrlSetData($A2, $y[2])
    GUICtrlSetData($A3, $y[3])
    GUICtrlSetData($A4, $iprange2[1])
    GUICtrlSetData($A5, $iprange2[2])
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    ,

    Edit: soll die geänderte Netz-Maske uch wieder in die ListView aufgenommen werden?
    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (25. Januar 2010 um 18:12)