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
Hallo Brauche Hilfe
-
- [ offen ]
-
Harun27 -
27. April 2009 um 18:26 -
Geschlossen -
Erledigt
-
-
- Offizieller Beitrag
Wie bitte?
Ich glaube, was Du am dringendsten brauchst, ist eine Nachhilfe in Deutsch. Das kann doch keiner verstehen. -
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
-
Wahnsinn... Das nervt nach ner Zeit ziemlich...
-
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
[autoit]
Dann kommt bei:Case $Button
[/autoit]
$NameCheck1 = GUICtrlRead ($Kreuz1)
If $NameCheck1 = 1 Then
;Löschen....
EndIf
.
.
. -
Wie wärs damit: (Also nur schonmal als Ansatz ^^)
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <GuiListView.au3>Opt("GUiOnEventMode",1)
[/autoit] [autoit][/autoit] [autoit]
GUICreate("ListView", 220, 200, -1, -1)
GuiSetOnEvent($GUI_EVENT_CLOSE, "Terminate")$listview = GUICtrlCreateListView("Namen"&@LF&@LF, 10, 10, 200, 150)
[/autoit] [autoit][/autoit] [autoit]
$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()while 1
[/autoit] [autoit][/autoit] [autoit]
sleep(100)
WEndfunc _Loeschen()
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_DeleteItemsSelected($listview)
EndFuncFunc Terminate()
[/autoit]
Exit
EndFunc -
schaue mir gleich alles an habe ein fehler wills korrigieren dann schau ich was ihr da so gemacht habt danke
-
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üssteSpoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <GuiListView.au3>Global $sel
[/autoit] [autoit][/autoit] [autoit]
Opt("GUiOnEventMode",1)
GUICreate("ListView", 220, 200, -1, -1)
GuiSetOnEvent($GUI_EVENT_CLOSE, "Terminate")$listview = GUICtrlCreateListView("Namen"&@LF&@LF, 10, 10, 200, 150,$LVS_REPORT)
[/autoit] [autoit][/autoit] [autoit]
$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")while 1
[/autoit] [autoit][/autoit] [autoit]
sleep(100)
WEndfunc _Loeschen()
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_DeleteItemsSelected($listview)
EndFuncFunc Terminate()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
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
EndFuncFunc ItemLayout($cursel)
[/autoit]
If $cursel = -1 Then return
If StringInStr($sel, $cursel & "") Then
$sel = StringReplace($sel, $cursel & "", "")
Else
$sel &= $cursel & ""
ENdIf
ConsoleWrite($sel & @CRLF)
return $sel
EndFunc -
@ChaosKeks,
mach es so und es klappt
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <GuiListView.au3>Global $sel
[/autoit] [autoit][/autoit] [autoit]
Opt("GUiOnEventMode",1)
GUICreate("ListView", 220, 200, -1, -1)
GuiSetOnEvent($GUI_EVENT_CLOSE, "Terminate")$listview = GUICtrlCreateListView("Namen"&@LF&@LF, 10, 10, 200, 150,$LVS_REPORT)
[/autoit] [autoit][/autoit] [autoit]
$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")while 1
[/autoit] [autoit][/autoit] [autoit]
sleep(100)
WEndfunc _Loeschen()
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_DeleteItemsSelected($listview)
EndFuncFunc Terminate()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
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
EndFuncFunc ItemLayout($cursel)
[/autoit]
If $cursel = -1 Then return
If StringInStr($sel, $cursel & "") Then
$sel = StringReplace($sel, $cursel & "", "")
Else
$sel &= $cursel & ""
ENdIf
;ConsoleWrite($sel & @CRLF)
return $sel
EndFuncnoch 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
-
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