Stalker0 Posted October 12, 2007 Posted October 12, 2007 First of all, let me say that I've only been using autoit for a few weeks now and have picked it up slowly. However, this community has been wonderful, you guys have helped me out with all of my newb questions and I appreciate it. I'm creating a new GUI that involves a list or listview. I have a series of numbers in one list. I need to be able to select a portion of them, and with a button press move them over into another list. Is this possible with autoit gui controls?
Nahuel Posted October 12, 2007 Posted October 12, 2007 Something like this? expandcollapse popup#include <GUIConstants.au3> #include <GuiList.au3> $Form1 = GUICreate("Choices Dialog", 353, 263, 215, 152) GUISetIcon("D:07.ico") $ListBox1 = GUICtrlCreateList("", 8, 8, 137, 201, $LBS_MULTIPLESEL) GUICtrlSetData(-1, "Item1|Item2|Item3|Item4|Item5") $moveright = GUICtrlCreateButton(">", 156, 15, 30, 25, 0) $moveleft = GUICtrlCreateButton("<", 157, 81, 31, 25, 0) $ListBox2 = GUICtrlCreateList("", 200, 8, 137, 201,$LBS_MULTIPLESEL) GUICtrlCreateButton("&OK", 96, 225, 75, 25, $BS_DEFPUSHBUTTON) GUICtrlCreateButton("&Cancel", 184, 225, 75, 25, 0) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit case $moveright $index1=_GUICtrlListGetSelItems ( $listbox1 ) If IsArray($index1) Then For $i=1 to $index1[0] $Text= _GUICtrlListGetText ( $listbox1, $index1[$i]) _GUICtrlListAddItem ($listbox2,$Text) _GUICtrlListDeleteItem ( $listbox1,$index1[$i] ) Next EndIf case $moveleft $index1=_GUICtrlListGetSelItems ( $listbox2 ) If IsArray($index1) Then For $i=1 to $index1[0] $Text= _GUICtrlListGetText ( $listbox2, $index1[$i]) _GUICtrlListAddItem ($listbox1,$Text) _GUICtrlListDeleteItem ( $listbox2,$index1[$i] ) Next EndIf EndSwitch WEnd It has some trouble when trying to move many items, but I leave that to you
Stalker0 Posted October 13, 2007 Author Posted October 13, 2007 Thanks for the help. Yeah, my main problem is still with the multiple select function on a list. Tell me, I know you can select multiple items with a listview. However, I haven't seen a command in the help menu that can take a selection in listview and convert it into an array that I can port over to another list or listview. Also, I didn't see this style in the help menu, LBS_MULTIPLESEL, is there a larger list of styles somewhere?
Nahuel Posted October 13, 2007 Posted October 13, 2007 Thanks for the help. Yeah, my main problem is still with the multiple select function on a list.No problem.Tell me, I know you can select multiple items with a listview. However, I haven't seen a command in the help menu that can take a selection in listview and convert it into an array that I can port over to another list or listview.Well.. you can do that. Shouldn't be that hard...Also, I didn't see this style in the help menu, LBS_MULTIPLESEL, is there a larger list of styles somewhere?Yeah, look for GUI Control Styles in help file.
GaryFrost Posted October 13, 2007 Posted October 13, 2007 (edited) also in the beta help, Look at the UDFs expandcollapse popup#include <GuiConstants.au3> #include <GUIListBox.au3> Opt('MustDeclareVars', 1) $Debug_LB = False ; Check ClassName being passed to ListBox functions, set to True and use a handle to another control to see it work Example_Internal() Example_External() Func Example_Internal() Local $hGUI, $hListBox ; Create GUI $hGUI = GUICreate("(Internal) List Box Get Sel Count", 400, 296) $hListBox = GUICtrlCreateList("", 2, 2, 396, 296, BitOR($LBS_STANDARD, $LBS_EXTENDEDSEL)) GUISetState() ; Add strings _GUICtrlListBox_BeginUpdate ($hListBox) For $iI = 1 To 9 _GUICtrlListBox_AddString ($hListBox, StringFormat("%03d : Random string", Random(1, 100, 1))) Next _GUICtrlListBox_EndUpdate ($hListBox) ; Select a few items _GUICtrlListBox_SetSel ($hListBox, 3) _GUICtrlListBox_SetSel ($hListBox, 4) _GUICtrlListBox_SetSel ($hListBox, 5) ; Show the item selection state MsgBox(4160, "Information", "Items Selected: " & _GUICtrlListBox_GetSelCount ($hListBox)) ; Loop until user exits Do Until GUIGetMsg() = $GUI_EVENT_CLOSE GUIDelete() EndFunc ;==>Example_Internal Func Example_External() Local $hGUI, $hListBox ; Create GUI $hGUI = GUICreate("(External) List Box Get Sel Count", 400, 296) $hListBox = _GUICtrlListBox_Create ($hGUI, "", 2, 2, 396, 296, BitOR($LBS_STANDARD, $LBS_EXTENDEDSEL)) GUISetState() ; Add strings _GUICtrlListBox_BeginUpdate ($hListBox) For $iI = 1 To 9 _GUICtrlListBox_AddString ($hListBox, StringFormat("%03d : Random string", Random(1, 100, 1))) Next _GUICtrlListBox_EndUpdate ($hListBox) ; Select a few items _GUICtrlListBox_SetSel ($hListBox, 3) _GUICtrlListBox_SetSel ($hListBox, 4) _GUICtrlListBox_SetSel ($hListBox, 5) ; Show the item selection state MsgBox(4160, "Information", "Items Selected: " & _GUICtrlListBox_GetSelCount ($hListBox)) ; Loop until user exits Do Until GUIGetMsg() = $GUI_EVENT_CLOSE GUIDelete() EndFunc ;==>Example_External Edited October 13, 2007 by GaryFrost SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now