hey..wie kann man bei ner listbox das item markieren lassen auf das man einen rechtsklick macht??
rechtsklick in lixtbox
-
- [ gelöst ]
-
Reaker -
27. September 2009 um 18:47 -
Geschlossen -
Erledigt
-
-
Hi,
schau dir mal in der Hilfe das Beispiel zum _GUICtrlListView_ClickItem() an. Dort ist vor allem der Bereich im WM-NOTIFY interessant, wo es um die Abfrage des $RM-RClick geht....
Das ist die Nachricht, bei der du einhaken kannst... -
also ich komm da garnet weiter...
weiß leider keinen anhaltspunkt, weil ich ja auch nicht listview sondern listbox brauche und bei_GUICtrlListBox_ClickItem ist auch nicht viel drinne -
...eigentlkich ging es ja um die WM_NOTIFY...
hier mal ein Beispiel:Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <StructureConstants.au3>
#include <WindowsConstants.au3>;Global Const $WM_NOTIFY = 0x004E ; removed to conform to Autoit build 3.2.10.0
[/autoit] [autoit][/autoit] [autoit]
Global $DoubleClicked = FalseGUICreate("Double Click/Right Click Demo", 400, 300)
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY");create listboxt
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$ListViewID = GuiCtrlCreateListView("List Column", 10, 20, 380, 250);******************Rightclick Menu*************
[/autoit] [autoit][/autoit] [autoit]
$menu1=GUICtrlCreateContextMenu ($ListViewID)
$delete=GUICtrlCreateMenuitem("Delete" , $menu1)
$play=GUICtrlCreateMenuitem("Play" , $menu1)
$info=GUICtrlCreateMenuitem("Info" ,$menu1);~~~~~~~~~~~~~~~Using Loop Method~~~~~~~~~~~~~~
[/autoit] [autoit][/autoit] [autoit];***************End Rightclick Menu************
[/autoit] [autoit][/autoit] [autoit];this builds the items in your list box
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 To 10
GuiCtrlCreateListViewItem("Item " & $i, $ListViewID)
NextGUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$hGui = GUIGetMsg()
Sleep(10)
Switch $hGui
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
If $DoubleClicked Then
DoubleClickFunc()
$DoubleClicked = False
EndIf
Select
Case $hGui = $delete
delete()
Case $hGui = $play
play()
Case $hGui = $info
info()
EndSelect
WEndFunc DoubleClickFunc()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64, "OK ", "You Double Clicked: " & GUICtrlRead(GUICtrlRead($ListViewID)) & " ?")
EndFuncFunc WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
Local $tagNMHDR, $event, $hwndFrom, $code
$tagNMHDR = DllStructCreate("int;int;int", $lParam)
If @error Then Return 0
$code = DllStructGetData($tagNMHDR, 3)
If $wParam = $ListViewID And $code = -3 Then $DoubleClicked = True
Return $GUI_RUNDEFMSG
EndFuncFunc play()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64, "You Right Clicked ", "Play: " & GUICtrlRead(GUICtrlRead($ListViewID)) & " ?")
EndFuncFunc delete()
[/autoit]
MsgBox(64, "You Right Clicked ", "Delete: " & GUICtrlRead(GUICtrlRead($ListViewID)) & " ?")
EndFunc
Func info()
MsgBox(64, "You Right Clicked ", "Info For: " & GUICtrlRead(GUICtrlRead($ListViewID)) & " ?")
EndFunc -
ähm ich glaube wir reden anander vorbei, also
ich habe eine ListBox, in dieser stehen ein paar werte, jetz habe ich noch ein contextmenu in dieser listbox, mit den items umbennen und löschen
jetz kommt das problem, wenn ich nun zb auf wert 3 einen RECHTS - klick mache kommt zwar das contextmenu, aber der wert wird nicht markiert, genau wenn ich in einen leeren
bereich rechtsklicke kommt trotzdem das menu...vlt meinst du ja das richtige, aber ich kanns leider nicht ableiten
-
Hallo reaker,
schau dir mal dieses kleine Skript an:
[autoit]#include <GUIConstantsEx.au3>
[/autoit][autoit][/autoit][autoit]
#include <WindowsConstants.au3>
#include <GuiListBox.au3>$gui = GUICreate("BSP", 200, 200)
[/autoit][autoit][/autoit][autoit]$hlistbox = GUICtrlCreateList("", 0, 0, 200, 200, BitOR($LBS_STANDARD, $LBS_EXTENDEDSEL)) ;Achtung: wenn Koordinatenänderung => dann in _GUICtrlListBox_ItemFromPoint miteinrechnen
[/autoit][autoit][/autoit][autoit]
GUISetState()
; Fügt Strings hinzu
_GUICtrlListBox_BeginUpdate($hlistbox)
For $iI = 1 To 9
_GUICtrlListBox_AddString($hlistbox, StringFormat("%d : Zufallstring " & $iI, Random(1, 99, 1)))
Next
_GUICtrlListBox_EndUpdate($hlistbox)While 1
[/autoit]
$msg = GUIGetMsg(1)
Switch $msg[0]
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_SECONDARYDOWN
if $msg[3] < 200 and $msg[4] < 200 Then
$iId = _GUICtrlListBox_ItemFromPoint($hlistbox, $msg[3], $msg[4])
_GUICtrlListBox_SetSel($hlistbox, $iId)
EndIf
EndSwitch
WEndviel Spaß damit,
(Auto)Bert
-
jaa schonmal ein sehr weiter fortschritt

geht das auch das nur eins immer markiert wird und nicht mehrere?..weiß ich nerv euch bestimmt, aber ich kanns halt net so
-
Hallo reaker,
meintest du so:
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <GuiListBox.au3>$gui = GUICreate("BSP", 200, 200)
[/autoit] [autoit][/autoit] [autoit]$hlistbox = GUICtrlCreateList("", 0, 0, 200, 200, BitOR($LBS_STANDARD, $LBS_EXTENDEDSEL)) ;Achtung: wenn Koordinatenänderung => dann in _GUICtrlListBox_ItemFromPoint miteinrechnen
[/autoit] [autoit][/autoit] [autoit]
GUISetState()
; Fügt Strings hinzu
_GUICtrlListBox_BeginUpdate($hlistbox)
For $iI = 1 To 9
_GUICtrlListBox_AddString($hlistbox, StringFormat("%d : Zufallstring " & $iI, Random(1, 99, 1)))
Next
_GUICtrlListBox_EndUpdate($hlistbox)While 1
[/autoit]
$msg = GUIGetMsg(1)
Switch $msg[0]
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_SECONDARYDOWN
If $msg[3] < 200 And $msg[4] < 200 Then
$aItems = _GUICtrlListBox_GetSelItems($hlistbox) ;array alle selektierten
For $iI = 1 To $aItems[0]
_GUICtrlListBox_SetSel($hlistbox, $aItems[$iI]) ;macht Selektion rückgängig
Next
$iId = _GUICtrlListBox_ItemFromPoint($hlistbox, $msg[3], $msg[4])
_GUICtrlListBox_SetSel($hlistbox, $iId)
EndIf
EndSwitch
WEndmfg (Auto)Bert
-
jaaa genau..das isses..danke jetz ist nur eine frage noch ungelöst..
[ offen ] Icon Problem
-
Hallo reaker,
Zitatjaaa genau..das isses..danke jetz ist nur eine frage noch ungelöst..
[ offen ] Icon Problem
Dann setze doch die Themen die gelöst sind bitte auch den Präfix auf gelöst (1. Beitrag bearbeiten nähe Überschrift)Bei deinem Icon-Problem kann ich dir leider nicht helfen, kenne kein Programm, mit dem man Icons schrumpfen kann,
mfg (Auto)Bert