Opened 16 years ago
Closed 16 years ago
#1338 closed Bug (Fixed)
_arrayDisplay() GUI position error
| Reported by: | Bowmore | Owned by: | J-Paul Mesnage |
|---|---|---|---|
| Milestone: | 3.3.3.0 | Component: | Standard UDFs |
| Version: | 3.3.1.6 | Severity: | None |
| Keywords: | arrayDisplay | Cc: |
Description
The _arrayDisplay() function calculates a very poor GUI location when displaying large arrays.
Bug Report Environment
AutoIt:3.3.1.6 (Os:WIN_XP/X86/Service Pack 3 Language:0409 Keyboard:00000809 Cpu:X64)
When diplaying arrays with long rows and many columns of data, using _arrayDisplay(), the GUI X position is calculated as a large negative value that positions the GUI off the visible screen. To see the displayed array you have to right clisk on the taskbar button and select maximize which fits the GUI to the monitor display
#include <array.au3>
#include <string.au3>
Global $g_aTestArray[5][240]
AdlibRegister("_DisplayWindowSize", 1000)
_PopulateArray($g_aTestArray)
_ArrayDisplay($g_aTestArray, "Display Array With Longish Rows")
Exit
Func _PopulateArray(ByRef $aTestArray)
Local $fPopulate = True
;Generate some data for the array
For $i = 0 To 4
For $j = 0 To 239
$fPopulate = Random(0, 1, 1)
If $fPopulate Then
$aTestArray[$i][$j] = _StringRepeat(Chr(Random(48, 90, 1)), Random(10, 40, 1))
EndIf
Next
Next
EndFunc ;==>_PopulateArray
Func _DisplayWindowSize()
Local $aPos = 0
$aPos = WinGetPos("Display Array With Longish Rows")
If Not @error Then
AdlibUnRegister("_DisplayWindowSize")
MsgBox(0, "_ArrayDisplay Window Size", "X = " & $aPos[0] & @CRLF & "Y = " & $aPos[1] & @CRLF & "W = " & $aPos[2] & @CRLF & "H = " & $aPos[3] & @CRLF)
EndIf
EndFunc ;==>_DisplayWindowSize
Attachments (0)
Change History (2)
comment:1 by , 16 years ago
comment:2 by , 16 years ago
| Milestone: | → 3.3.3.0 |
|---|---|
| Owner: | changed from to |
| Resolution: | → Fixed |
| Status: | new → closed |
Fixed by revision [5465] in version: 3.3.3.0

I've had a closer look at the code for the _arrayDisplay() function and offer the line indicated below as a possible fix.
; adjust window width $iWidth = 0 For $i = 0 To $iSubMax + 1 $iWidth += GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH, $i, 0) Next If $iWidth < 250 Then $iWidth = 230 $iWidth += 20 If $iWidth > @DesktopWidth Then $iWidth = @DesktopWidth ;<====== Add this line to fix WinMove($hGUI, "", (@DesktopWidth - $iWidth)/2, Default, $iWidth)