Moderators Melba23 Posted December 4, 2013 Author Moderators Posted December 4, 2013 mjolnirmarkiv,The UDF only supports input and combo controls - but there is no reason why it should not be adapted to support date controls as well. And _GUIListViewEx_EditProcess is indeed where you will have to do a lot of work, but do not forget that you will also need to change _GUIListViewEx_Init to determine whether a date control is to be displayed. Good luck - and do not hesitate to let me know if you need any help. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Moderators Melba23 Posted December 11, 2013 Author Moderators Posted December 11, 2013 [bUGFIX VERSION] - 11 Dec 13Fixed: If you dragged items between ListViews and dropped them on blank space the transfer could fail. Thanks to OldCodger for finding the problem. New UDF in the first post. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
dickjones007 Posted January 4, 2014 Posted January 4, 2014 (edited) found bug tried downloading latest au3 from zip and same thing still happens when in edit mode (by double click) clicking outside my gui, gui crashes giving me following message in console: C:Program FilesAutoIt3IncludeGUIListViewEx.au3 (2012) : ==> Subscript used with non-Array variable.: If $aCInfo[4] <> $cGLVEx_EditID Then If $aCInfo^ ERROR when i comment out both entries from GUIListViewEx.au3 ;~ If $aCInfo[4] <> $cGLVEx_EditID Then ;~ If $fClick_Move Then ;~ $iKey_Code = 0x02 ; Confirm edit and end process ;~ Else ;~ $iKey_Code = 0x01 ; Abandon editing ;~ EndIf ;~ ExitLoop ;~ EndIf ;~ If $aCInfo[4] <> $cGLVEx_EditID Then ;~ $iKey_Code = 0x01 ;~ ExitLoop ;~ EndIf crash doesnt happen. do i need to attach any files maybe? BTW im using windows xp sp2 but same thing happens on win 7 Edited January 4, 2014 by dickjones007
Moderators Melba23 Posted January 4, 2014 Author Moderators Posted January 4, 2014 dickjones007,I do not get that error when clicking outside of the GUI - please post a reproducer script so I can see exactly what you are doing. downloading latest au3 from zipWhich version are you now running? The latest release is 3.3.10.3 and the latest Beta is 3.3.11.1. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
dickjones007 Posted January 4, 2014 Posted January 4, 2014 from HELP-->ABOUT SciTE Version 3.3.0 Mar 30 2013 17:50:01 attached two custom includes and main script in RAR when script is ran click on button "Dodaj u tablicu" which adds an entry into listview below. then double click to edit any item/subitem in added line then when in edit mode, click outside GUI i hope i was detailed enough twister evidencija.rar
dickjones007 Posted January 4, 2014 Posted January 4, 2014 now downloaded SciTE Version 3.3.7 Dec 12 2013 20:45:19 and i still get the crash
guinness Posted January 4, 2014 Posted January 4, 2014 Not SciTE version, AutoIt version. Don't you know the difference? MsgBox(4096, '', @AutoItVersion) Run that please. UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018
Moderators Melba23 Posted January 4, 2014 Author Moderators Posted January 4, 2014 dickjones007,I see the problem now - looking into it. M23Edit: Fixed - thanks for the report. Look out for a new version later this evening. Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Moderators Melba23 Posted January 4, 2014 Author Moderators Posted January 4, 2014 [bUGFIX VERSION] - 4 Jan 14Fixed: If you were editing an item and clicked outside the GUI the UDF crashed. Thanks to dickjones007 for finding the problem. New UDF in the first post. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
dickjones007 Posted January 4, 2014 Posted January 4, 2014 (edited) confirmed it works outdated and now unnecessary info i run autoit 3.3.8.1 Edited January 4, 2014 by dickjones007
dickjones007 Posted January 4, 2014 Posted January 4, 2014 didnt look in all 8 pages of this thread so pardon me if it has been asked. is it possible in edit mode to keep the entered value without pressing ENTER? for example if i double click to edit an item and then click somewhere else, without confirming entered value with ENTER, then that value is lost
Moderators Melba23 Posted January 4, 2014 Author Moderators Posted January 4, 2014 dickjones007,I sometimes wonder why I bother writing comprehensive function headers: ; #FUNCTION# ========================================================================================================= ; Name...........: _GUIListViewEx_EditOnClick ; Once item edit process started, all other script activity is suspended until following occurs: ; {ENTER} = Current edit confirmed and editing process ended ; {ESCAPE} = Current or all edits cancelled and editing process ended ; If using Edit control: ; If $iEditMode non-zero then {TAB} and arrow keys = Current edit confirmed & continue editing ; Click outside edit = Editing process ends and ; If $iAdded + 4 : Current edit accepted ; Else : Current edit cancelledSo as you can see you need to add 4 to $iAdded and then the edit will be accepted when you click outside the edit itself. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
dickjones007 Posted January 5, 2014 Posted January 5, 2014 srry, but to tell you the truth it was the last thing on my mind to look for help in the UDF itself. but now im thinking differently right now im in the process of writing help file for my finished app and honestly i ask my self the same question. is it worth the trouble?
Moderators Melba23 Posted January 5, 2014 Author Moderators Posted January 5, 2014 dickjones007, honestly i ask my self the same question. is it worth the trouble?In my opinion: most definitely yes. If nothing else it focusses your mind on how the code is to be used. Quite often I have altered the way I was going to implement a feature because I found it too difficult to explain simply in the function header how it was to be invoked. After all if you cannot explain it, how will the user ever understand how to use it? So I would suggest you write as good a help file as you can. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
dickjones007 Posted January 5, 2014 Posted January 5, 2014 words of inspiration noted will continue help file in full details maybe found another bug for your UDF so i tried combination 1 + 2 + 4 + 8 for $iAdded and when editing Ctrl-click on header it only accepts edited value with ENTER even thou i included + 4
Moderators Melba23 Posted January 5, 2014 Author Moderators Posted January 5, 2014 dickjones007,Adding 4 to $iAdded only affects the behaviour of the editable ListView items - not the header. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Clark Posted January 9, 2014 Posted January 9, 2014 Hi Melba Thanks again for this great include. I think I have found a few small issues (but more likely am using it incorrectly), viz: Firstly, when I define a listbox, then set column widths using _GUICtrlListView_SetColumnWidth, if I then load data into the listbox using firstly _GUIListViewEx_Insert and then _GUIListViewEx_ReadToArray to feed it back into the on screen listbox, the column widths that were previously set are not honoured. This can be overcome by resetting the column widths after the _GUIListViewEx_ReadToArray. Secondly, the listbox sorting mechanism does not seem to take listview subitems into account. For example, I am using _GUICtrlListView_AddSubItem to add icons into my listview, but when sorting the listview the icons do not move. This is probably a limitation rather than a bug, but I wonder if it can be fixed (or you can tell me what to do to make it work. Lastly, I am using the following line to create the listbox: $lvMain = GUICtrlCreateListView("# |CRM ID |Name/Description |BU |Defect #|PO Number|Provider Ref |Provider |Rdy|Att|Notes",8, 200, 950, 396, BitOr($LVS_SORTASCENDING,$LVS_SINGLESEL),BitOR($LVS_EX_FULLROWSELECT,$LVS_EX_DOUBLEBUFFER, $LVS_EX_SUBITEMIMAGES)) If I add a $LVS_EX_BORDERSELECT into the last BitOR (i.e. Listview Extended Styles), I get the following error from your include: C:Program Files (x86)AutoIt3IncludeGUIListViewEx.au3 (166) : ==> Array variable subscript badly formatted.: Local $aLVSortState[_GUICtrlListView_GetColumnCount($hLV)] Thanks again.
Moderators Melba23 Posted January 9, 2014 Author Moderators Posted January 9, 2014 Clark,No idea about the column widths changing. I will look into it based on your description but how about providing me with some code that shows the problem so that I can see what is happening.The icon problem does not surprise me - there is no provision in the UDF for reordering icons as there is for checkboxes. I will take a look at how it might be added, but I make no promises about adding such a functionality.I have always found it best to set the extended ListView styles via the _GUICtrlListView_SetExtendedListViewStyle function. Several of the $LVS_EX_### styles share numeric values with $WS_EX_### extended window styles (an MS decision and nothing to do with AutoIt) which can produce unwanted results as the API will apply the $WS_EX_### style in preference to the desired $LVS_EX_### one. Try using the function to set the extended styles and see if that resolves the problem - if not then post some code which shows the error so I can try to determine why it is happening.I know it appears that I do not believe that there are problems by asking you to provide reproducer code, but unless I can see exactly what you are doing with the ListView control it is almost impossible for me to write a script that approaches your actual code. ListViews are complicated beasts and there are far too many ways to do things and create difficulties for the UDF unless I can follow some actual code that misbehaves and do some proper debugging. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Moderators Melba23 Posted January 9, 2014 Author Moderators Posted January 9, 2014 (edited) Clark,Does this demonstrate the "column width" problem? Insert a few rows into the left ListView and then press the swap button:expandcollapse popup#include <GuiConstantsEx.au3> #include <WindowsConstants.au3> #include "GUIListViewEx.au3" Global $iCount_Left = 0, $iCount_Right = 0 ; Create GUI $hGUI = GUICreate("Test", 640, 510) ; Create Left ListView $cListView_Left = GUICtrlCreateListView("Tom|Dick|Harry", 10, 40, 300, 300, $LVS_SHOWSELALWAYS) _GUICtrlListView_SetExtendedListViewStyle($cListView_Left, $LVS_EX_FULLROWSELECT) _GUICtrlListView_SetColumnWidth($cListView_Left, 0, 93) _GUICtrlListView_SetColumnWidth($cListView_Left, 1, 93) _GUICtrlListView_SetColumnWidth($cListView_Left, 2, 93) ; Initiate LVEx $iLV_Left_Index = _GUIListViewEx_Init($cListView_Left) ; Create Right ListView $cListView_Right = GUICtrlCreateListView("Peter|Paul|Mary", 430, 40, 200, 300, $LVS_SHOWSELALWAYS) _GUICtrlListView_SetExtendedListViewStyle($cListView_Right, $LVS_EX_FULLROWSELECT) _GUICtrlListView_SetColumnWidth($cListView_Right, 0, 20) _GUICtrlListView_SetColumnWidth($cListView_Right, 1, 20) _GUICtrlListView_SetColumnWidth($cListView_Right, 2, 20) ; Initiate LVEx $iLV_Right_Index = _GUIListViewEx_Init($cListView_Right) ; Create buttons $cInsert_L_Button = GUICtrlCreateButton("Insert Left", 10, 350, 200, 30) $cInsert_R_Button = GUICtrlCreateButton("Insert Right", 10, 390, 200, 30) $cSwap_Button = GUICtrlCreateButton("Swap", 10, 430, 200, 30) $cExit_Button = GUICtrlCreateButton("Exit", 430, 390, 200, 110) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $cExit_Button Exit Case $cInsert_L_Button _GUIListViewEx_SetActive($iLV_Left_Index) _GUIListViewEx_Insert("Item 0" & $iCount_Left & "|SubItem 1" & $iCount_Left & "|SubItem 2" & $iCount_Left) $iCount_Left += 1 Case $cInsert_R_Button _GUIListViewEx_SetActive($iLV_Right_Index) GUICtrlCreateListViewItem("Bidule 0" & $iCount_Right & "|SubBidule 1" & $iCount_Right & "|SubBidule 2" & $iCount_Right, $cListView_Right) $iCount_Right += 1 Case $cSwap_Button $aArray_Return = _GUIListViewEx_ReturnArray($iLV_Left_Index) _GUIListViewEx_SetActive($iLV_Right_Index) For $i = 0 To UBound($aArray_Return) - 1 _GUIListViewEx_Insert($aArray_Return[$i]) Next EndSwitch WEndThen run the script again and insert some rows into the right ListView - this does not use the UDF at all and shows the same behaviour. So I blame Windows and not my UDF. I will look at how I might get around this problem (and the icon sorting) this afternoon. M23Edit:And the same thing does not happen with UDF-created ListViews:expandcollapse popup#include <GuiConstantsEx.au3> #include <WindowsConstants.au3> #include "GUIListViewEx.au3" Global $iCount_Left = 0, $iCount_Right = 0 ; Create GUI $hGUI = GUICreate("Test", 640, 510) ; Create Left ListView $cListView_Left = GUICtrlCreateListView("Tom|Dick|Harry", 10, 40, 300, 300, $LVS_SHOWSELALWAYS) _GUICtrlListView_SetExtendedListViewStyle($cListView_Left, $LVS_EX_FULLROWSELECT) _GUICtrlListView_SetColumnWidth($cListView_Left, 0, 93) _GUICtrlListView_SetColumnWidth($cListView_Left, 1, 93) _GUICtrlListView_SetColumnWidth($cListView_Left, 2, 93) ; Initiate LVEx $iLV_Left_Index = _GUIListViewEx_Init($cListView_Left) ; Create Right ListView $hListView_Right = _GUICtrlListView_Create($hGUI, "", 430, 40, 200, 300, BitOR($LVS_DEFAULT, $WS_BORDER)) _GUICtrlListView_SetExtendedListViewStyle($hListView_Right, $LVS_EX_FULLROWSELECT) _GUICtrlListView_AddColumn($hListView_Right, "Peter", 20) _GUICtrlListView_AddColumn($hListView_Right, "Paul", 20) _GUICtrlListView_AddColumn($hListView_Right, "Mary", 20) ; Initiate LVEx $iLV_Right_Index = _GUIListViewEx_Init($hListView_Right) ; Create buttons $cInsert_L_Button = GUICtrlCreateButton("Insert Left", 10, 350, 200, 30) $cInsert_R_Button = GUICtrlCreateButton("Insert Right", 10, 390, 200, 30) $cSwap_Button = GUICtrlCreateButton("Swap", 10, 430, 200, 30) $cExit_Button = GUICtrlCreateButton("Exit", 430, 390, 200, 110) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $cExit_Button Exit Case $cInsert_L_Button _GUIListViewEx_SetActive($iLV_Left_Index) _GUIListViewEx_Insert("Item 0" & $iCount_Left & "|SubItem 1" & $iCount_Left & "|SubItem 2" & $iCount_Left) $iCount_Left += 1 Case $cInsert_R_Button _GUIListViewEx_SetActive($iLV_Right_Index) $iIndex = _GUICtrlListView_AddItem($hListView_Right, "Bidule 0" & $iCount_Right) _GUICtrlListView_AddSubItem ( $hListView_Right, $iIndex, "SubBidule 1" & $iCount_Right, 1) _GUICtrlListView_AddSubItem ( $hListView_Right, $iIndex, "SubBidule 2" & $iCount_Right, 2) $iCount_Right += 1 Case $cSwap_Button $aArray_Return = _GUIListViewEx_ReturnArray($iLV_Left_Index) _GUIListViewEx_SetActive($iLV_Right_Index) For $i = 0 To UBound($aArray_Return) - 1 _GUIListViewEx_Insert($aArray_Return[$i]) Next EndSwitch WEndAnother thing to think about. Edited January 9, 2014 by Melba23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Moderators Melba23 Posted January 9, 2014 Author Moderators Posted January 9, 2014 Clark,Here is a modified _GUIListViewEx_Insert_Mod function which optionally retains the column widths in native ListViews after data insertion. Add the function at the end of this script to yours and then use it with the extra parameter when you call it as shown by the <<<<<<< line:expandcollapse popup#include <GuiConstantsEx.au3> #include <WindowsConstants.au3> #include "GUIListViewEx.au3" Global $iCount_Left = 0, $iCount_Right = 0 ; Create GUI $hGUI = GUICreate("Test", 640, 510) ; Create Left ListView $cListView_Left = GUICtrlCreateListView("Tom|Dick|Harry", 10, 40, 300, 300, $LVS_SHOWSELALWAYS) _GUICtrlListView_SetExtendedListViewStyle($cListView_Left, $LVS_EX_FULLROWSELECT) _GUICtrlListView_SetColumnWidth($cListView_Left, 0, 93) _GUICtrlListView_SetColumnWidth($cListView_Left, 1, 93) _GUICtrlListView_SetColumnWidth($cListView_Left, 2, 93) ; Initiate LVEx $iLV_Left_Index = _GUIListViewEx_Init($cListView_Left) ; Create Right ListView $cListView_Right = GUICtrlCreateListView("Peter|Paul|Mary", 430, 40, 200, 300, $LVS_SHOWSELALWAYS) _GUICtrlListView_SetExtendedListViewStyle($cListView_Right, $LVS_EX_FULLROWSELECT) _GUICtrlListView_SetColumnWidth($cListView_Right, 0, 20) _GUICtrlListView_SetColumnWidth($cListView_Right, 1, 20) _GUICtrlListView_SetColumnWidth($cListView_Right, 2, 20) ; Initiate LVEx $iLV_Right_Index = _GUIListViewEx_Init($cListView_Right) ; Create buttons $cInsert_L_Button = GUICtrlCreateButton("Insert Left", 10, 350, 200, 30) $cInsert_R_Button = GUICtrlCreateButton("Insert Right", 10, 390, 200, 30) $cSwap_Button = GUICtrlCreateButton("Swap", 10, 430, 200, 30) $cExit_Button = GUICtrlCreateButton("Exit", 430, 390, 200, 110) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $cExit_Button Exit Case $cInsert_L_Button _GUIListViewEx_SetActive($iLV_Left_Index) _GUIListViewEx_Insert("Item 0" & $iCount_Left & "|SubItem 1" & $iCount_Left & "|SubItem 2" & $iCount_Left) $iCount_Left += 1 Case $cInsert_R_Button _GUIListViewEx_SetActive($iLV_Right_Index) GUICtrlCreateListViewItem("Bidule 0" & $iCount_Right & "|SubBidule 1" & $iCount_Right & "|SubBidule 2" & $iCount_Right, $cListView_Right) $iCount_Right += 1 Case $cSwap_Button $aArray_Return = _GUIListViewEx_ReturnArray($iLV_Left_Index) _GUIListViewEx_SetActive($iLV_Right_Index) For $i = 0 To UBound($aArray_Return) - 1 _GUIListViewEx_Insert_Mod($aArray_Return[$i], 1) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Next EndSwitch WEnd Func _GUIListViewEx_Insert_Mod($vData, $fRetainWidth = 0) Local $vInsert ; Set data for active ListView Local $iArray_Index = $aGLVEx_Data[0][1] ; If no ListView active then return If $iArray_Index = 0 Then Return SetError(1, 0, "") ; Load active ListView details $hGLVEx_SrcHandle = $aGLVEx_Data[$iArray_Index][0] $cGLVEx_SrcID = $aGLVEx_Data[$iArray_Index][1] ; Copy array for manipulation $aGLVEx_SrcArray = $aGLVEx_Data[$iArray_Index][2] ; Create Local array for checkboxes (if no checkboxes makes no difference) Local $aCheck_Array[UBound($aGLVEx_SrcArray)] For $i = 1 To UBound($aCheck_Array) - 1 $aCheck_Array[$i] = _GUICtrlListView_GetItemChecked($hGLVEx_SrcHandle, $i - 1) Next ; Get selected item in ListView Local $iIndex = _GUICtrlListView_GetSelectedIndices($hGLVEx_SrcHandle) Local $iInsert_Index = $iIndex ; If no selection If $iIndex = "" Then $iInsert_Index = -1 ; Check for multiple selections If StringInStr($iIndex, "|") Then Local $aIndex = StringSplit($iIndex, "|") ; Use first selection $iIndex = $aIndex[1] ; Cancel all other selections For $i = 2 To $aIndex[0] _GUICtrlListView_SetItemSelected($hGLVEx_SrcHandle, $aIndex[$i], False) Next EndIf Local $aCol_Width, $iColCount ; If width retain required and native ListView If $fRetainWidth And $cGLVEx_SrcID Then $iColCount = _GUICtrlListView_GetColumnCount($hGLVEx_SrcHandle) ; Store column widths Local $aCol_Width[$iColCount] For $i = 1 To $iColCount - 1 $aCol_Width[$i] = _GUICtrlListView_GetColumnWidth($hGLVEx_SrcHandle, $i) Next EndIf ; If empty array insert at 0 If $aGLVEx_SrcArray[0][0] = 0 Then $iInsert_Index = 0 ; Get data into array format for insert If IsArray($vData) Then $vInsert = $vData Else Local $aData = StringSplit($vData, "|") Switch $aData[0] Case 1 $vInsert = $aData[1] Case Else Local $vInsert[$aData[0]] For $i = 0 To $aData[0] - 1 $vInsert[$i] = $aData[$i + 1] Next EndSwitch EndIf ; Increase count $aGLVEx_SrcArray[0][0] += 1 ; Insert data into arrays If $iIndex = "" Then _GUIListViewEx_Array_Add($aGLVEx_SrcArray, $vInsert) _GUIListViewEx_Array_Add($aCheck_Array, False) Else _GUIListViewEx_Array_Insert($aGLVEx_SrcArray, $iInsert_Index + 2, $vInsert) _GUIListViewEx_Array_Insert($aCheck_Array, $iInsert_Index + 2, False) EndIf ; Rewrite ListView _GUIListViewEx_ReWriteLV($hGLVEx_SrcHandle, $cGLVEx_SrcID, $aGLVEx_SrcArray, $aCheck_Array, $iArray_Index) ; Set highlight If $iIndex = "" Then _GUIListViewEx_Highlight($hGLVEx_SrcHandle, $cGLVEx_SrcID, _GUICtrlListView_GetItemCount($hGLVEx_SrcHandle) - 1) Else _GUIListViewEx_Highlight($hGLVEx_SrcHandle, $cGLVEx_SrcID, $iInsert_Index + 1) EndIf ; Restore column widths if required If $fRetainWidth And $cGLVEx_SrcID Then For $i = 1 To $iColCount - 1 $aCol_Width[$i] = _GUICtrlListView_SetColumnWidth($hGLVEx_SrcHandle, $i, $aCol_Width[$i]) Next EndIf ; Store amended array $aGLVEx_Data[$iArray_Index][2] = $aGLVEx_SrcArray ; Delete copied array $aGLVEx_SrcArray = 0 ; Return amended array Return _GUIListViewEx_ReturnArray($iArray_Index) EndFunc ;==>_GUIListViewEx_Insert_ModYou can see that inserting data without the UDF still expands the subitem columns. I am undecided as to whether this is a bug - it seems to me that either all columns should be expanded on none of them so the current behaviour is less than perfect. I hope this solves your problem and that I have not been chasing a red herring all morning! M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Recommended Posts