CodeWriter Posted August 20 Share Posted August 20 (edited) @Melba23Thank you for the reply. I’m just starting to learn your UDF and spent most of yesterday puzzled why the header coloring didn’t work as expected, even in the Example codes. Tried numerous combinations without success, read and re-read the function definitions, rtf guide, and examples. So reached out to you to see if I had some basic misunderstanding of that function. After I had commented, I found the recent posts where this issue was gradually uncovered by @borsTiHD and yourself. Wary of what other functionality is quietly not working as expected. Running the code compiled in x86 mode is possible for now but writing code, debugging and testing in the interpreter is a hiccup. Edited August 20 by CodeWriter Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted August 20 Author Moderators Share Posted August 20 CodeWriter, Quote Wary of what other functionality is quietly not working as expected Nothing as far as I know! 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 Link to comment Share on other sites More sharing options...
CodeWriter Posted August 20 Share Posted August 20 (edited) Here’s another quirk with some sample code, adapted straight from your examples. The code snipet below creates a listview with 4 columns and populates them from an array[n][4]. Except for a different array name and GUI sizes, the exact same code runs without error using a listview with 2 columns and array[n][2]. ; Create GUI: Local $hMacroGUI, $vData, $hMacro, $iEditMode = 0, $bEdited = False $hMacroGUI = GUICreate("Active Macros", 1520, 945, 25, 990) ; Create ListView using GUICtrlListViewEx.au3 UDF: $hMacro = _GUICtrlListView_Create($hMacroGUI, "", 5, 5, 1510, 890, BitOR($LVS_DEFAULT, $WS_BORDER)) _GUICtrlListView_SetExtendedListViewStyle($hMacro, $LVS_EX_FULLROWSELECT) _GUICtrlListView_AddColumn($hMacro, "Column1", 200) _GUICtrlListView_AddColumn($hMacro, "Column2", 250) _GUICtrlListView_AddColumn($hMacro, "Column3", 400) _GUICtrlListView_AddColumn($hMacro, "Column4", 3000) ; Set font: Local $hFont = _WinAPI_CreateFont(19, 7, 0, 0, $FW_NORMAL, False, False, False, $DEFAULT_CHARSET, _ $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, "Helvetica") _WinAPI_SetFont($hMacro, $hFont, True) ; Populate the ListView: Local $limit = UBound($Gmacro) - 1 For $i = 0 To $limit _GUICtrlListView_AddItem($hMacro, $Gmacro[$i][0]) _GUICtrlListView_AddSubItem($hMacro, $i, $Gmacro[$i][1], 1) _GUICtrlListView_AddSubItem($hMacro, $i, $Gmacro[$i][2], 2) _GUICtrlListView_AddSubItem($hMacro, $i, $Gmacro[$i][3], 3) Next ; Initialize the GUIListViewEx UDF: (16: enable color header, 32: user colored items) Local $iLV = _GUIListViewEx_Init($hMacro, $Gmacro, 0, 0xFF0000, True, 16 + 32) when execution reaches the last line Local $iLV = _GUIListViewEx_Init($hMacro, $Gmacro, 0, 0xFF0000, True, 16 + 32) it results in the following error: "C:\Users\...\GUIListViewEx.au3" (517) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.: $aLVArray[$i + $iStart][$j - 1] = $aRow[$j] ^ ERROR I have also tried reading the array into the UDF before initialization with the following line but it fails with the same error from _GUIListViewEx_ReadToArray(): $aLV_List = _GUIListViewEx_ReadToArray($hMacro, 0) Stranger still, if you simply comment out column 4 and the corresponding line populating the listview in the For loop, it works without error for a 3-column display. I don't know if this is related in some way to the same 64-bit issue but it also fails when I compile the code in x86 mode. A separate issue is that string data in my array[n][4] can be 2000 chars long but only about 265 chars are displayed before being truncated in the listview. Edited August 20 by CodeWriter Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted August 20 Author Moderators Share Posted August 20 CodeWriter, I have added a few lines to your snippet so it runs (please post runnable code in future) and it loads a 4x4 array with no problems: expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPIGdi.au3> #include <FontConstants.au3> #include "GUIListViewEx.au3" Global $Gmacro[4][4] =[[1,2,3,4],[5,6,7,8],["a","b","c","d"],["w","x","y","z"]] ; Create GUI: Local $hMacroGUI, $vData, $hMacro, $iEditMode = 0, $bEdited = False $hMacroGUI = GUICreate("Active Macros", 1520, 945, 25, 25) ; Create ListView using GUICtrlListViewEx.au3 UDF: $hMacro = _GUICtrlListView_Create($hMacroGUI, "", 5, 5, 1510, 890, BitOR($LVS_DEFAULT, $WS_BORDER)) _GUICtrlListView_SetExtendedListViewStyle($hMacro, $LVS_EX_FULLROWSELECT) _GUICtrlListView_AddColumn($hMacro, "Column1", 200) _GUICtrlListView_AddColumn($hMacro, "Column2", 250) _GUICtrlListView_AddColumn($hMacro, "Column3", 400) _GUICtrlListView_AddColumn($hMacro, "Column4", 3000) ; Set font: Local $hFont = _WinAPI_CreateFont(19, 7, 0, 0, $FW_NORMAL, False, False, False, $DEFAULT_CHARSET, _ $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, "Helvetica") _WinAPI_SetFont($hMacro, $hFont, True) ; Populate the ListView: Local $limit = UBound($Gmacro) - 1 For $i = 0 To $limit _GUICtrlListView_AddItem($hMacro, $Gmacro[$i][0]) _GUICtrlListView_AddSubItem($hMacro, $i, $Gmacro[$i][1], 1) _GUICtrlListView_AddSubItem($hMacro, $i, $Gmacro[$i][2], 2) _GUICtrlListView_AddSubItem($hMacro, $i, $Gmacro[$i][3], 3) Next ; Initialize the GUIListViewEx UDF: (16: enable color header, 32: user colored items) Local $iLV = _GUIListViewEx_Init($hMacro, $Gmacro, 0, 0xFF0000, True, 16 + 32) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd 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 Link to comment Share on other sites More sharing options...
CodeWriter Posted August 20 Share Posted August 20 @Melba23Your example helped me to find the core issue which is the data in my array. The 4th column is populated by a 2000-3000 character string that contains UTF-8 characters. When I replace that with ASCII characters in a test, there is no error from _GUIListViewEx_Init() or_GUIListViewEx_ReadToArray(). Without the ability to use UTF-8 and the standard ListView limiting the data cells to about 265 chars, I will work on another approach. Thank you for your help. Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted August 20 Author Moderators Share Posted August 20 CodeWriter, Sorry to hear that - but glad it was not my UDF at fault! 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 Link to comment Share on other sites More sharing options...
CodeWriter Posted August 20 Share Posted August 20 (edited) While the standard ListView and GUIListView.au3 functions can handle UTF-8 characters, something in your UDF functions _GUIListViewEx_Init() and_GUIListViewEx_ReadToArray() is unable to process those characters and throws an error. Edited August 20 by CodeWriter Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted August 20 Author Moderators Share Posted August 20 CodeWriter, Can you let me have a copy of some of the data you are trying to insert so that I can have a play and see if I can come up with a solution - via PM if you do not want to post in open forum. 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 Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted August 22 Author Moderators Share Posted August 22 All, The problem was that the data contained the default Data Separation Character ("|") which the UDF (and AutoIt) was interpreting as a column delimiter. The solution was to change the default separator character using Opt. M23 CodeWriter 1 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 Link to comment Share on other sites More sharing options...
ValentinM Posted October 15 Share Posted October 15 (edited) Hi, I'm using your UDF since yesterday. Thank you very much for sharing this great work. I am using it this way, to build an Excel-like app. $iIDListView = GUICtrlCreateListView("", 0, 100, WinGetClientSize($hGUI)[0], WinGetClientSize($hGUI)[1] - 120, $LVS_SHOWSELALWAYS) $hListViewHandle = GUICtrlGetHandle($iIDListView) $aLV_Content = _GUIListViewEx_ReadToArray($iIDListView) _GUICtrlListView_SetExtendedListViewStyle($hListViewHandle, $LVS_EX_BORDERSELECT + $LVS_EX_FULLROWSELECT + $LVS_EX_DOUBLEBUFFER + $LVS_EX_HEADERDRAGDROP + $LVS_EX_GRIDLINES) $iLV_Index = _GUIListViewEx_Init($iIDListView, $aLV_Content, Default, Default, Default, BitOR(2, 4)) _GUIListViewEx_SetEditStatus($iLV_Index, "*") _GUIListViewEx_MsgRegister() However, when I add a column with the following code, the ListView suddenly becomes sortable (and I don't want it to be) : Local $result = _GUIListViewEx_InsertColSpec($iLV_Index, 0, $sNewHeader) Is it from my side ? Edited October 15 by ValentinM I tried to simplify the code, and realised it was a bad idea. May the force be with you. Open AutoIt Documentation within VS Code Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted October 15 Author Moderators Share Posted October 15 (edited) ValentinM, I can reproduce the problem - looking into it. M23 Edit: Found the problem and know how to fix it. But need to make sure that the same bug does not appear elsewhere. Edited October 15 by Melba23 ValentinM 1 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 Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted October 16 Author Moderators Share Posted October 16 ValentinM, Try this Beta and see if it fixes the problem for you: GUIListViewEx_Mod.au3 M23 ValentinM 1 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 Link to comment Share on other sites More sharing options...
ValentinM Posted October 16 Share Posted October 16 (edited) 1 hour ago, Melba23 said: ValentinM, Try this Beta and see if it fixes the problem for you: GUIListViewEx_Mod.au3 M23 Hi M23, I tested your code this morning, and I can say it solved the issue. I was about to say that it also happens by deleting columns but I can see you also applied your fix to the DeleteColSpec function. Much thanks for this update. I'll keep using it and will report any troubles I find (If I ever do!) Have a great day ! Edited October 16 by ValentinM May the force be with you. Open AutoIt Documentation within VS Code Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted October 16 Author Moderators Share Posted October 16 ValentinM, Great news - thanks for reporting and testing. 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 Link to comment Share on other sites More sharing options...
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