Modify

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 Bowmore, 16 years ago

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)

comment:2 by J-Paul Mesnage, 16 years ago

Milestone: 3.3.3.0
Owner: changed from Gary to J-Paul Mesnage
Resolution: Fixed
Status: newclosed

Fixed by revision [5465] in version: 3.3.3.0

Modify Ticket

Action
as closed The owner will remain J-Paul Mesnage.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.