Hallo Brauche Hilfe

  • hallo leute
    also schaut mein frage lautet ich will in autoit zb ein button namens löschen erstellen und durch denn button klick öffnet sich ein neues fenster indemm ca 10 namen stehen und ich will nicht alle namen löschen sondern nur die ausgewählten ich will die namen mit ein hacken ankreuzen und dann will ich das nur die angekreutzen namen gelöscht werden??? verstanden

    Einmal editiert, zuletzt von Harun27 (27. April 2009 um 19:07)

  • also schau mein frage lautet ich will in autoit zb ein button namens löschen erstellen und durch denn button klick öffnet sich ein neues fenster indemm ca 10 namen stehen und ich will nicht alle namen löschen sondern nur die ausgewählten ich will die namen mit ein hacken ankreuzen und dann will ich das nur die angekreutzen namen gelöscht werden??? verstanden

  • nee ich weis nur nicht wie ich schreiben soll würde ich wissen wie das funktioniert würde ich es so gut schreiben das ein neuling das sogar versteht ich weis nicht wie ich das was ich im kopf habe es euch eklären kann

  • Also nehmen wir an wir haben dein gui
    Dann kommt bei:

    [autoit]

    Case $Button
    $NameCheck1 = GUICtrlRead ($Kreuz1)
    If $NameCheck1 = 1 Then
    ;Löschen....
    EndIf
    .
    .
    .

    [/autoit]
  • Wie wärs damit: (Also nur schonmal als Ansatz ^^)

    Spoiler anzeigen
    [autoit]

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

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

    Opt("GUiOnEventMode",1)
    GUICreate("ListView", 220, 200, -1, -1)
    GuiSetOnEvent($GUI_EVENT_CLOSE, "Terminate")

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

    $listview = GUICtrlCreateListView("Namen"&@LF&@LF, 10, 10, 200, 150)
    $item1 = GUICtrlCreateListViewItem("BugFix", $listview)
    $item2 = GUICtrlCreateListViewItem("ChaosKeks", $listview)
    $item3 = GUICtrlCreateListViewItem("Harun", $listview)
    $item4 = GUICtrlCreateListViewItem("limette", $listview)
    $item5 = GUICtrlCreateListViewItem("Oscar", $listview)
    $item5 = GUICtrlCreateListViewItem("Commander", $listview)
    GuiCtrlCreateButton("Löschen", 65, 165, 80,30)
    GuiCtrlSetOnEvent(-1 , "_Loeschen")
    GUISetState()

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

    while 1
    sleep(100)
    WEnd

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

    func _Loeschen()
    _GUICtrlListView_DeleteItemsSelected($listview)
    EndFunc

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

    Func Terminate()
    Exit
    EndFunc

    [/autoit]
  • schaue mir gleich alles an habe ein fehler wills korrigieren dann schau ich was ihr da so gemacht habt danke

    Einmal editiert, zuletzt von Harun27 (27. April 2009 um 19:06)

  • Hallo harun,

    und wenn du bei der Erstellung der ListView (siehe Beispiel @ChaosKeks) so vorgehst kannst du auch mehrere gleichzeitig auswählen:

    [autoit]

    $listview = GUICtrlCreateListView("Namen"&@LF&@LF, 10, 10, 200, 150,$LVS_REPORT)

    [/autoit]


    mfg (Auto)Bert

  • Hey stehe im moment aufm schlauch... hab einfach mal zum spaß versucht, dass man bei $LVS_REPORT kein strg drücken muss um mehrere items auszuwählen...
    Aber irgendwie gehts mein script nicht obwohl es bei Listviews mit unter 10 items gehen müsste 8|

    Spoiler anzeigen
    [autoit]

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

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

    Global $sel
    Opt("GUiOnEventMode",1)
    GUICreate("ListView", 220, 200, -1, -1)
    GuiSetOnEvent($GUI_EVENT_CLOSE, "Terminate")

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

    $listview = GUICtrlCreateListView("Namen"&@LF&@LF, 10, 10, 200, 150,$LVS_REPORT)
    $item1 = GUICtrlCreateListViewItem("BugFix", $listview)
    $item2 = GUICtrlCreateListViewItem("ChaosKeks", $listview)
    $item3 = GUICtrlCreateListViewItem("Harun", $listview)
    $item4 = GUICtrlCreateListViewItem("limette", $listview)
    $item5 = GUICtrlCreateListViewItem("Oscar", $listview)
    $item5 = GUICtrlCreateListViewItem("Commander", $listview)
    GuiCtrlCreateButton("Löschen", 65, 165, 80,30)
    GuiCtrlSetOnEvent(-1 , "_Loeschen")
    GUISetState()
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    while 1
    sleep(100)
    WEnd

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

    func _Loeschen()
    _GUICtrlListView_DeleteItemsSelected($listview)
    EndFunc

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

    Func Terminate()
    Exit
    EndFunc

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

    Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    Local $hWndFrom, $iCode, $hWndListView=-1
    If Not IsHWnd($listview) Then $hWndListView = GUICtrlGetHandle($listview)
    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $hWndFrom = DllStructGetData($tNMHDR, "hWndFrom")
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $listview, $hWndListView
    Switch $iCode
    Case $NM_CLICK
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
    $cursel = DllStructGetData($tInfo, "Index")
    $iLayout = ItemLayout($cursel)
    $itemsSel = StringSplit($iLayout, "")
    _GUICtrlListView_BeginUpdate($ListView)
    For $i = 1 To Ubound($itemsSel)-1
    _GUICtrlListView_SetItemSelected($ListView, $itemsSel[$i])
    Next
    _GUICtrlListView_EndUpdate($ListView)
    EndSwitch
    EndSwitch
    EndFunc

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

    Func ItemLayout($cursel)
    If $cursel = -1 Then return
    If StringInStr($sel, $cursel & "") Then
    $sel = StringReplace($sel, $cursel & "", "")
    Else
    $sel &= $cursel & ""
    ENdIf
    ConsoleWrite($sel & @CRLF)
    return $sel
    EndFunc

    [/autoit]
  • @ChaosKeks,

    mach es so und es klappt

    Spoiler anzeigen
    [autoit]

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

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

    Global $sel
    Opt("GUiOnEventMode",1)
    GUICreate("ListView", 220, 200, -1, -1)
    GuiSetOnEvent($GUI_EVENT_CLOSE, "Terminate")

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

    $listview = GUICtrlCreateListView("Namen"&@LF&@LF, 10, 10, 200, 150,$LVS_REPORT)
    $item1 = GUICtrlCreateListViewItem("BugFix", $listview)
    $item2 = GUICtrlCreateListViewItem("ChaosKeks", $listview)
    $item3 = GUICtrlCreateListViewItem("Harun", $listview)
    $item4 = GUICtrlCreateListViewItem("limette", $listview)
    $item5 = GUICtrlCreateListViewItem("Oscar", $listview)
    $item5 = GUICtrlCreateListViewItem("Commander", $listview)
    GuiCtrlCreateButton("Löschen", 65, 165, 80,30)
    GuiCtrlSetOnEvent(-1 , "_Loeschen")
    GUISetState()
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    while 1
    sleep(100)
    WEnd

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

    func _Loeschen()
    _GUICtrlListView_DeleteItemsSelected($listview)
    EndFunc

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

    Func Terminate()
    Exit
    EndFunc

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

    Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    Local $hWndFrom, $iCode, $hWndListView=-1
    If Not IsHWnd($listview) Then $hWndListView = GUICtrlGetHandle($listview)
    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $hWndFrom = DllStructGetData($tNMHDR, "hWndFrom")
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $listview, $hWndListView
    Switch $iCode
    ;Case $NM_DOUBlECLICK
    ; $cursel = -1
    ; $itemsSel = ""
    Case $NM_CLICK
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
    $cursel = DllStructGetData($tInfo, "Index")
    $iLayout = ItemLayout($cursel)
    $itemsSel = StringSplit($iLayout, "")
    _GUICtrlListView_BeginUpdate($ListView)
    For $i = 0 To _GUICtrlListView_GetItemCount($listview) - 1
    if StringInStr($iLayout,$i) then _GUICtrlListView_SetItemState($ListView, $i, $LVIS_SELECTED, $LVIS_SELECTED)
    Next
    _GUICtrlListView_EndUpdate($ListView)
    EndSwitch
    EndSwitch
    EndFunc

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

    Func ItemLayout($cursel)
    If $cursel = -1 Then return
    If StringInStr($sel, $cursel & "") Then
    $sel = StringReplace($sel, $cursel & "", "")
    Else
    $sel &= $cursel & ""
    ENdIf
    ;ConsoleWrite($sel & @CRLF)
    return $sel
    EndFunc

    [/autoit]

    noch etwas besser, ist aber auch noch nicht perfekt (Einschränkung Index 0-9 immer noch, und kein Togglen der Auswahl), aber ich glaube damit kommst du auch noch klar, ich für meinen Fall ziehe die klassische Bedienung vor,

    Edit1 @Harun27, hab gerade gesehen, dass du deinen 1. Beitrag verändert hast, find ich nicht nett gegenüber Oscar , da jetzt sein Beitrag sinnlos erscheint,

    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (27. April 2009 um 23:31)

  • Hmm das is schonmal ein sehr guter Tipp mit dem ItemSetState ;) Weiß auch wie ich das 100% zum laufen bringe..sollte mit ListView_ClickItem machbar sein... naja jetzt geh ich aber erstmal schlafen :sleeping: