Jump to content

Recommended Posts

Posted (edited)

Hi,

A few weeks ago I was involved in a project where I needed to display some statistical data in a program. I used ListView controls, but was unhappy with the way they looked...header buttons, scroll bars etc. So I hacked away at the ListView using different style constants etc but was unable to find a nice simple way of displaying the data.

So I put together this UDF. A 'table' in the sense of this UDF is simply a grid of label controls that can be manipulated by the user to achieve whatever aesthetics fits the requirement, different colors, borders, fonts, sizes, etc.

This is not supposed to be any sort of replacement or equal to ListView controls. This is intended to be a very simple way of creating a very simple table of data.

FUNCTIONS:

_GUICtrlTable_Create - create the table

_GUICtrlTable_Delete - delete the table

_GUICtrlTable_Move - move to new position

_GUICtrlTable_CellGetID - get the label control ID for a cell

_GUICtrlTable_CellGetPos - get the cell position

_GUICtrlTable_Set_ColumnWidth - set the width of a column

_GUICtrlTable_Set_RowHeight - set the height of a row

_GUICtrlTable_Set_Text_Row - change the text in a row

_GUICtrlTable_Set_Text_Column - "" "" column

_GUICtrlTable_Set_Text_Cell - "" "" Cell

_GUICtrlTable_Set_Text_FromArray - fill table with data from a 2D array ([rows][columns])

_GUICtrlTable_Get_Text_Row - retrieve text from a row

_GUICtrlTable_Get_Text_Column - "" "" column

_GUICtrlTable_Get_Text_Cell - "" "" Cell

_GUICtrlTable_Get_Text_All - get all table data in an array

_GUICtrlTable_Set_TextColor_Row - set color of text in a row

_GUICtrlTable_Set_TextColor_Column - "" "" column

_GUICtrlTable_Set_TextColor_Cell - "" "" cell

_GUICtrlTable_Set_TextColor_All - "" "" all cells

_GUICtrlTable_Set_TextFont_Row - Set text font for a row

_GUICtrlTable_Set_TextFont_Column - "" "" column

_GUICtrlTable_Set_TextFont_Cell - "" "" cell

_GUICtrlTable_Set_TextFont_All - "" "" all cells

_GUICtrlTable_Set_CellColor_Row - set cell background color for row

_GUICtrlTable_Set_CellColor_Column - "" "" column

_GUICtrlTable_Set_CellColor_Cell - "" "" cell

_GUICtrlTable_Set_CellColor_All - "" "" all cells

_GUICtrlTable_Set_Justify_Row - justify text in cells for row

_GUICtrlTable_Set_Justify_Column - "" "" column

_GUICtrlTable_Set_Justify_Cell - "" "" cell

_GUICtrlTable_Set_Justify_All - "" "" all cells

_GUICtrlTable_Set_Border_Row - draw a border (combination of left,top,right,bottom) for all cells in row

_GUICtrlTable_Set_Border_Column - "" "" column

_GUICtrlTable_Set_Border_Cell - "" "" cell

_GUICtrlTable_Set_Border_All - "" "" all cells

_GUICtrlTable_Set_Border_Table - draw a border around the whole table

NOTES:

- If you are going to rapidly update data in the table, make sure you double buffer the GUI (as in the example)

UPDATES:

- 2009/11/22

- Added function "_GUICtrlTable_Set_Text_FromArray"

- Added option to ingore blank elements when overwrtiting cells. E.g.

_GUICtrlTable_Set_Text_Row($Table,1,"1||3","|",0)... will NOT over-write the data in column 2 (because 1|<blank>|3)

TO DO:

- add proper error checking returns

?? Any suggestions ??

EXAMPLE USE

#include "Table.au3"

;----- GUI (Double Buffered) -----
$GUI = GUICreate("", 450, 450, -1, -1, -1, 0x2000000)

;----- Make sure GUI exists BEFORE creating Tables -----
GUISetState()

;----- Lock GUI until tables drawn -----
GUISetState(@SW_LOCK)

;----- Table Example 1 -----
GUICtrlCreateLabel(" Example 1 ", 25, 7, 100, 13)
$Table1 = _GUICtrlTable_Create(25, 27, 55, 13, 4, 4, 1)
_GUICtrlTable_Set_ColumnWidth($Table1, 2, 20)
_GUICtrlTable_Set_Justify_All($Table1, 1, 1)
_GUICtrlTable_Set_TextFont_Row($Table1, 1, 8.5, 800)
_GUICtrlTable_Set_CellColor_Row($Table1, 1, 0xEEEEEE)
_GUICtrlTable_Set_Text_Row($Table1, 1, "Control|ID|Window|Staus")
_GUICtrlTable_Set_Text_Row($Table1, 2, "CheckBox|2|Main|disabled")
_GUICtrlTable_Set_Text_Row($Table1, 3, "ListView|3|Child|active")
_GUICtrlTable_Set_Text_Row($Table1, 4, "UpDown|4|Child|disabled")

;----- Table Example 2 -----
GUICtrlCreateLabel(" Example 2 ", 260, 7, 100, 13)
$Table2 = _GUICtrlTable_Create(260, 27, 80, 18, 7, 2, 0)
_GUICtrlTable_Set_Justify_All($Table2, 1, 1)
_GUICtrlTable_Set_TextFont_All($Table2, 8.5, 400, 2, "Century Gothic")
_GUICtrlTable_Set_TextFont_Column($Table2, 1, 8.5, 800, 0, "Century Gothic")
_GUICtrlTable_Set_CellColor_Column($Table2, 1, 0xffd700)
_GUICtrlTable_Set_Text_Row($Table2, 1, "Surname|Biochem")
_GUICtrlTable_Set_Text_Row($Table2, 2, "Forename|Andy")
_GUICtrlTable_Set_Text_Row($Table2, 3, "Age|30")
_GUICtrlTable_Set_Text_Row($Table2, 4, "Height|5'8''")
_GUICtrlTable_Set_Text_Row($Table2, 5, "Weight|75kg")
_GUICtrlTable_Set_Text_Row($Table2, 6, "Eyes|Brown")
_GUICtrlTable_Set_Text_Row($Table2, 7, "M/F|M")
_GUICtrlTable_Set_Border_Table($Table2)

;----- Table Example 3 -----
GUICtrlCreateLabel(" Example 3 ", 25, 100, 100, 13)
$Table3 = _GUICtrlTable_Create(25, 120, 62, 18, 6, 3, 0)
_GUICtrlTable_Set_ColumnWidth($Table3, 1, 70)
_GUICtrlTable_Set_Justify_Column($Table3, 1, 1, 1)
_GUICtrlTable_Set_Justify_Column($Table3, 2, 2, 1)
_GUICtrlTable_Set_Justify_Column($Table3, 3, 1, 1)
_GUICtrlTable_Set_Justify_Row($Table3, 1, 1, 1)
_GUICtrlTable_Set_Border_Row($Table3, 1, 8)
_GUICtrlTable_Set_Border_Row($Table3, 5, 8)
_GUICtrlTable_Set_Text_Row($Table3, 1, "Transaction|In|Out")
_GUICtrlTable_Set_Text_Row($Table3, 6, "Total|£51.01   |-£157.30   ")
_GUICtrlTable_Set_Text_Row($Table3, 2, "Petrol||-£35.00 ")
_GUICtrlTable_Set_Text_Row($Table3, 3, "Groceries||-£42.30 ")
_GUICtrlTable_Set_Text_Row($Table3, 4, "Interest|£51.01   ")
_GUICtrlTable_Set_Text_Row($Table3, 5, "Section 5||-£80.00 ")
For $row = 2 To 6
    For $col = 2 To 3
        _GUICtrlTable_Set_TextFont_Cell($Table3, $row, $col, 9, 400, 2)
    Next
Next
_GUICtrlTable_Set_TextFont_All($Table3, 8.5, 400, 2, "Tahoma")
_GUICtrlTable_Set_TextFont_Row($Table3, 1, 8.5, 600, 0, "Tahoma")

;----- Table Example 4 -----
GUICtrlCreateLabel(" Example 4 ", 25, 250, 100, 13)
$Table4 = _GUICtrlTable_Create(35, 268, 62, 18, 8, 6, 0)
_GUICtrlTable_Set_RowHeight($Table4, 1, 35)
_GUICtrlTable_Set_Justify_All($Table4, 1, 1)
_GUICtrlTable_Set_TextFont_All($Table4, 8.5, 800, 0, "Tahoma")
_GUICtrlTable_Set_CellColor_Row($Table4, 1, 0x555555)
_GUICtrlTable_Set_TextColor_All($Table4, 0x555555)
_GUICtrlTable_Set_TextColor_Row($Table4, 1, 0xFFFFFF)
For $row = 3 To 10 Step 2
    _GUICtrlTable_Set_CellColor_Row($Table4, $row, 0xDDDDDD)
Next
_GUICtrlTable_Set_Text_Row($Table4, 1, "Fixing|Size|Weight|Net|Gross|Order")
_GUICtrlTable_Set_Text_Row($Table4, 2, "Block|20.0|0.01|300|340|No")
_GUICtrlTable_Set_Text_Row($Table4, 3, "Screw|8.5|0.3|50|100|No")
_GUICtrlTable_Set_Text_Row($Table4, 4, "Rivet|0.1|0.4|10|11|Yes")
_GUICtrlTable_Set_Text_Row($Table4, 5, "Rope|300.0|100.0|2|10|No")
_GUICtrlTable_Set_Text_Row($Table4, 6, "Tack|10.6|0.3|1000|1011|Yes")
_GUICtrlTable_Set_Text_Row($Table4, 7, "Nail|30.3|0.4|400|600|No")
_GUICtrlTable_Set_Text_Row($Table4, 8, "Staple|0.3|0.05|10000|12000|No")
_GUICtrlTable_Set_Border_Table($Table4, 0x555555)

;----- Table Example 5 -----
GUICtrlCreateLabel(" Example 5 ", 260, 165, 100, 13)
$Table5 = _GUICtrlTable_Create(260, 182, 30, 20, 3, 3, 0)
_GUICtrlTable_Set_ColumnWidth($Table5, 1, 200)
_GUICtrlTable_Set_Text_Row($Table5, 1, "Attribute|x|y")
_GUICtrlTable_Set_CellColor_Row($Table5, 1, 0xEEEEEE)
_GUICtrlTable_Set_Justify_All($Table5, 1, 1)
_GUICtrlTable_Set_TextFont_All($Table5, 8.5, 200)
_GUICtrlTable_Set_TextFont_Row($Table5, 1, 9, 800)
_GUICtrlTable_Set_Border_Column($Table5, 2, 1, 0xEEEEEE)
_GUICtrlTable_Set_Border_Column($Table5, 3, 1, 0xEEEEEE)
_GUICtrlTable_Set_Border_Row($Table5, 1, 11)
_GUICtrlTable_Set_Border_Table($Table5)
_GUICtrlTable_Set_ColumnWidth($Table5, 1, 100)

;----- Unlock GUI to show tables -----
GUISetState(@SW_UNLOCK)

;----- Loop -----
Do
    Sleep(10)
    $m = MouseGetPos()
    _GUICtrlTable_Set_Text_Row($Table5, 2, "Mouse Position|" & $m[0] & "|" & $m[1])

    $w = WinGetPos("")
    _GUICtrlTable_Set_Text_Row($Table5, 3, "Window Position|" & $w[0] & "|" & $w[1])
Until GUIGetMsg() = -3

post-29091-12588868847536_thumb.jpg

UDF:

Table.au3

;#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6

; #INDEX# ===================================================================================
; Title .........: Table
; AutoIt Version: 3.3.0.0+
; Language:       English
; Description ...: A simple Table control using an array of labels.
;                  This is an attempt at a cleaner, simpler, way of displaying data without using ListViews.
; Notes .........: GUI must exist BEFORE table is constructed/manipulated,
;                  i.e. GUISetState() must be called before _GUICtrlTable_Create
; ===========================================================================================



; #VARIABLES# ===============================================================================
Global $_aGUICtrlTableBordersINTERNALSTORE[1][2]
; ===========================================================================================



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Create
; Description ...: Creates a 'table' of label controls, and preps the 'border array'
; Syntax.........: _GUICtrlTable_Create($iLeft, $iTop, $iWidth, $iHeight, $iRows, $iColumns[, $iGapWidth = 1])
; Parameters ....: $iLeft - Horisontal position of first cell
;                  $iTop - Vertical position of first cell
;                  $iWidth - Initial width of each cell
;                  $iHeight - Initial height of each cell
;                  $iRows - Number of rows in table
;                  $iColumns - Number of columns in table
;                  $iGapWidth - Size (pixels) of gap between each cell (can be zero = no gaps)
; Return values .: Success - Returns array of label IDs for other functions ($ReturnedArray[ROW][COLUMN])
;                  Failure - (under construction)
; Notes .........: Rows/Columns are NOT zero-indexed. The first row IS row 1, the first column IS col 1 etc
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Create($iLeft, $iTop, $iWidth, $iHeight, $iRows, $iColumns, $iGapWidth = 1)

    Local $i, $j, $iCurrBoxLeft = 0, $iCurrBoxTop = 0, $aTemp
    Local $array[$iRows + 1][$iColumns + 1]

    If $iGapWidth < 0 Then $iGapWidth = 0
    $iGapWidth = Round($iGapWidth)

    For $i = 1 To $iRows
        For $j = 1 To $iColumns
            $array[$i][$j] = GUICtrlCreateLabel("", $iLeft + $iCurrBoxLeft, $iTop + $iCurrBoxTop, $iWidth, $iHeight)
            GUICtrlSetBkColor(-1, 0xFFFFFF)
            $iCurrBoxLeft += $iWidth + $iGapWidth
        Next
        $iCurrBoxLeft = 0
        $iCurrBoxTop += $iHeight + $iGapWidth
    Next

    ReDim $_aGUICtrlTableBordersINTERNALSTORE[UBound($_aGUICtrlTableBordersINTERNALSTORE, 1) + 1][2]
    Dim $aTemp[$iRows + 1][$iColumns + 1][5]
    $_aGUICtrlTableBordersINTERNALSTORE[UBound($_aGUICtrlTableBordersINTERNALSTORE) - 1][0] = $array[1][1]
    $_aGUICtrlTableBordersINTERNALSTORE[UBound($_aGUICtrlTableBordersINTERNALSTORE) - 1][1] = $aTemp

    Return $array

EndFunc   ;==>_GUICtrlTable_Create



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Delete
; Description ...: Deletes the labels associated with this table, including borders, also nulls array entries
; Syntax.........: _GUICtrlTable_Delete(ByRef $array)
; Parameters ....: $array - array returned from _GUICtrlTable_Create
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Delete(ByRef $array)

    Local $i, $j, $aRetrievedTableBorders, $test

    If IsArray($array) = 0 Then Return

    ;- Get border array from store -
    $test = ""
    For $i = 1 To UBound($_aGUICtrlTableBordersINTERNALSTORE, 1) - 1
        $test = $_aGUICtrlTableBordersINTERNALSTORE[$i][0]
        If $array[1][1] = $test Then
            $aRetrievedTableBorders = $_aGUICtrlTableBordersINTERNALSTORE[$i][1]
            $test = $i
            ExitLoop
        EndIf
    Next

    For $i = 1 To UBound($array, 1) - 1
        For $j = 1 To UBound($array, 2) - 1
            GUICtrlDelete($array[$i][$j])
        Next
    Next

    _GUICtrlTable_Set_Border_All($array, 0)

    $array = 0
    $aRetrievedTableBorders = 0

    ;- Put retrieved borders back
    $_aGUICtrlTableBordersINTERNALSTORE[$test][0] = ""
    $_aGUICtrlTableBordersINTERNALSTORE[$test][1] = $aRetrievedTableBorders

EndFunc   ;==>_GUICtrlTable_Delete



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Move
; Description ...: Moves the x/y position of the table (including borders)
; Syntax.........: _GUICtrlTable_Move(ByRef $array, $iLeft, $iTop)
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iLeft - new Horisontal position of first cell
;                  $iTop - new Vertical position of first cell
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Move(ByRef $array, $iLeft, $iTop)

    Local $i, $j, $k, $aTemp, $aTemp2, $iMoveLeft, $iMoveTop, $test, $aRetrievedTableBorders

    If IsArray($array) = 0 Then Return

    ;- Get border array from store -
    $test = ""
    For $i = 1 To UBound($_aGUICtrlTableBordersINTERNALSTORE, 1) - 1
        $test = $_aGUICtrlTableBordersINTERNALSTORE[$i][0]
        If $array[1][1] = $test Then
            $aRetrievedTableBorders = $_aGUICtrlTableBordersINTERNALSTORE[$i][1]
            $test = $i
            ExitLoop
        EndIf
    Next

    $aTemp = ControlGetPos("", "", $array[1][1])
    $iMoveLeft = $aTemp[0] - $iLeft
    $iMoveTop = $aTemp[1] - $iTop
    For $i = 1 To UBound($array, 1) - 1
        For $j = 1 To UBound($array, 2) - 1
            $aTemp = ControlGetPos("", "", $array[$i][$j])
            GUICtrlSetPos($array[$i][$j], $aTemp[0] - $iMoveLeft, $aTemp[1] - $iMoveTop)
            For $k = 1 To 4
                $aTemp2 = ControlGetPos("", "", $aRetrievedTableBorders[$i][$j][$k])
                If IsArray($aTemp2) = 0 Then ContinueLoop
                GUICtrlSetPos($aRetrievedTableBorders[$i][$j][$k], $aTemp2[0] - $iMoveLeft, $aTemp2[1] - $iMoveTop)
            Next
        Next
    Next

EndFunc   ;==>_GUICtrlTable_Move



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_CellGetID
; Description ...: Retrieves the label control ID for the specified cell, enables user modification
; Syntax.........: _GUICtrlTable_CellGetID(ByRef $array, $iRow, $iCol)
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iRow - Cell row value
;                  $iCol - Cell column value
; Return values .: Success - Returns label control ID for specified 'cell'
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_CellGetID(ByRef $array, $iRow, $iCol)

    If IsArray($array) = 0 Then Return
    Return $array[$iRow][$iCol]

EndFunc   ;==>_GUICtrlTable_CellGetID



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_CellGetPos
; Description ...: Retrieves the label position for the specified cell, enables user modification
; Syntax.........: _GUICtrlTable_CellGetPos(ByRef $array, $iRow, $iCol)
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iRow - Cell row value
;                  $iCol - Cell column value
; Return values .: Success - Returns array as per ControlGetPos ($arra[0] = left, [1] = top etc)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_CellGetPos(ByRef $array, $iRow, $iCol)

    If IsArray($array) = 0 Then Return
    Return ControlGetPos("", "", $array[$iRow][$iCol])

EndFunc   ;==>_GUICtrlTable_CellGetPos



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_ColumnWidth
; Description ...: Changes the width of a specified column of cells/labels
; Syntax.........: _GUICtrlTable_Set_ColumnWidth(ByRef $array, $iCol, $iWidth)
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iCol - table column value
;                  $iWidth - new width of column
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_ColumnWidth(ByRef $array, $iCol, $iWidth)

    Local $i, $j, $k, $iCurrBoxLeft, $bFirst, $aTemp, $aTemp2, $iGapWidth, $test, $aRetrievedTableBorders

    If IsArray($array) = 0 Then Return
    If $iCol = 0 Then Return
    If Number($iCol) > UBound($array, 2) - 1 Then Return

    ;- Get border array from store -
    $test = ""
    For $i = 1 To UBound($_aGUICtrlTableBordersINTERNALSTORE, 1) - 1
        $test = $_aGUICtrlTableBordersINTERNALSTORE[$i][0]
        If $array[1][1] = $test Then
            $aRetrievedTableBorders = $_aGUICtrlTableBordersINTERNALSTORE[$i][1]
            $test = $i
            ExitLoop
        EndIf
    Next

    $aTemp = ControlGetPos("", "", $array[1][1])
    $aTemp2 = ControlGetPos("", "", $array[1][2])
    $iGapWidth = $aTemp2[0] - ($aTemp[0] + $aTemp[2])
    If $iGapWidth < 0 Then $iGapWidth = 0

    For $i = 1 To UBound($array, 1) - 1
        $bFirst = True
        For $j = $iCol To UBound($array, 2) - 1
            $aTemp = ControlGetPos("", "", $array[$i][$j])
            If $bFirst = True Then $iCurrBoxLeft = $aTemp[0]
            $bFirst = False
            Switch $j
                Case $iCol
                    GUICtrlSetPos($array[$i][$j], $iCurrBoxLeft, $aTemp[1], $iWidth)
                    For $k = 1 To 4
                        Switch $k
                            Case 1
                                GUICtrlSetPos($aRetrievedTableBorders[$i][$j][$k], $iCurrBoxLeft, $aTemp[1])
                            Case 2
                                GUICtrlSetPos($aRetrievedTableBorders[$i][$j][$k], $iCurrBoxLeft, $aTemp[1], $iWidth)
                            Case 3
                                GUICtrlSetPos($aRetrievedTableBorders[$i][$j][$k], $iCurrBoxLeft + $iWidth - 1, $aTemp[1])
                            Case 4
                                GUICtrlSetPos($aRetrievedTableBorders[$i][$j][$k], $iCurrBoxLeft, $aTemp[1] + $aTemp[3] - 1, $iWidth)
                        EndSwitch
                    Next
                    $iCurrBoxLeft += $iWidth + $iGapWidth
                Case Else
                    GUICtrlSetPos($array[$i][$j], $iCurrBoxLeft, $aTemp[1])
                    For $k = 1 To 4
                        Switch $k
                            Case 1, 2
                                GUICtrlSetPos($aRetrievedTableBorders[$i][$j][$k], $iCurrBoxLeft, $aTemp[1])
                            Case 3
                                GUICtrlSetPos($aRetrievedTableBorders[$i][$j][$k], $iCurrBoxLeft + $aTemp[2] - 1, $aTemp[1])
                            Case 4
                                GUICtrlSetPos($aRetrievedTableBorders[$i][$j][$k], $iCurrBoxLeft, $aTemp[1] + $aTemp[3] - 1)
                        EndSwitch
                    Next
                    $iCurrBoxLeft += $aTemp[2] + $iGapWidth
            EndSwitch
        Next
    Next

EndFunc   ;==>_GUICtrlTable_Set_ColumnWidth



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_RowHeight
; Description ...: Changes the height of a specified row of cells/labels
; Syntax.........: _GUICtrlTable_Set_RowHeight(ByRef $array, $iRow, $iHeight)
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iRow - table row value
;                  $iHeight - new height for row
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_RowHeight(ByRef $array, $iRow, $iHeight)

    Local $i, $j, $k, $iCurrBoxTop, $bFirst, $aTemp, $aTemp2, $iGapWidth, $test, $aRetrievedTableBorders

    If IsArray($array) = 0 Then Return
    If $iRow = 0 Then Return
    If Number($iRow) > UBound($array, 1) - 1 Then Return

    ;- Get border array from store -
    $test = ""
    For $i = 1 To UBound($_aGUICtrlTableBordersINTERNALSTORE, 1) - 1
        $test = $_aGUICtrlTableBordersINTERNALSTORE[$i][0]
        If $array[1][1] = $test Then
            $aRetrievedTableBorders = $_aGUICtrlTableBordersINTERNALSTORE[$i][1]
            $test = $i
            ExitLoop
        EndIf
    Next

    $aTemp = ControlGetPos("", "", $array[1][1])
    $aTemp2 = ControlGetPos("", "", $array[1][2])
    $iGapWidth = $aTemp2[0] - ($aTemp[0] + $aTemp[2])
    If $iGapWidth < 0 Then $iGapWidth = 0

    $bFirst = True
    For $i = $iRow To UBound($array, 1) - 1
        For $j = 1 To UBound($array, 2) - 1
            $aTemp = ControlGetPos("", "", $array[$i][$j])
            If $bFirst = True Then $iCurrBoxTop = $aTemp[1]
            $bFirst = False
            Switch $i
                Case $iRow
                    GUICtrlSetPos($array[$i][$j], $aTemp[0], $iCurrBoxTop, $aTemp[2], $iHeight)
                    For $k = 1 To 4
                        Switch $k
                            Case 1
                                GUICtrlSetPos($aRetrievedTableBorders[$i][$j][$k], $aTemp[0], $iCurrBoxTop, 1, $iHeight)
                            Case 2
                                GUICtrlSetPos($aRetrievedTableBorders[$i][$j][$k], $aTemp[0], $iCurrBoxTop)
                            Case 3
                                GUICtrlSetPos($aRetrievedTableBorders[$i][$j][$k], $aTemp[0] + $aTemp[2] - 1, $iCurrBoxTop, 1, $iHeight)
                            Case 4
                                GUICtrlSetPos($aRetrievedTableBorders[$i][$j][$k], $aTemp[0], $iCurrBoxTop + $iHeight - 1)
                        EndSwitch
                    Next
                Case Else
                    GUICtrlSetPos($array[$i][$j], $aTemp[0], $iCurrBoxTop)
                    For $k = 1 To 4
                        Switch $k
                            Case 1, 2
                                GUICtrlSetPos($aRetrievedTableBorders[$i][$j][$k], $aTemp[0], $iCurrBoxTop)
                            Case 3
                                GUICtrlSetPos($aRetrievedTableBorders[$i][$j][$k], $aTemp[0] + $aTemp[2] - 1, $iCurrBoxTop)
                            Case 4
                                GUICtrlSetPos($aRetrievedTableBorders[$i][$j][$k], $aTemp[0], $iCurrBoxTop + $aTemp[3] - 1)
                        EndSwitch
                    Next
            EndSwitch
        Next
        Switch $i
            Case $iRow
                $iCurrBoxTop += $iHeight + $iGapWidth
            Case Else
                $iCurrBoxTop += $aTemp[3] + $iGapWidth
        EndSwitch
    Next

EndFunc   ;==>_GUICtrlTable_Set_RowHeight



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_Text_Row
; Description ...: Changes the text of the cells in a row
; Syntax.........: _GUICtrlTable_Set_Text_Row(ByRef $array, $iRow, $sText[, $sDelimiter = "|"])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iRow - table row value
;                  $sText - delimted text to add to cells
;                  $sDelimiter - character to act as text string delimiter
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Notes .........: If more delimiters exist in text than there are cells, the extra data is ignored
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_Text_Row(ByRef $array, $iRow, $sText, $sDelimiter = "|")

    Local $i

    If IsArray($array) = 0 Then Return
    If $iRow = 0 Then Return
    If Number($iRow) > UBound($array, 1) - 1 Then Return

    Local $aString = StringSplit($sText, $sDelimiter)

    Local $iUpperlimit = UBound($array, 2) - 1
    If $aString[0] < $iUpperlimit Then $iUpperlimit = $aString[0]

    For $i = 1 To $iUpperlimit
        GUICtrlSetData($array[$iRow][$i], $aString[$i])
    Next

EndFunc   ;==>_GUICtrlTable_Set_Text_Row



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_Text_Column
; Description ...: Changes the text of the cells in a column
; Syntax.........: _GUICtrlTable_Set_Text_Column(ByRef $array, $iCol, $sText[, $sDelimiter = "|"])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iCol - table column value
;                  $sText - delimted text to add to cells
;                  $sDelimiter - character to act as text string delimiter
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Notes .........: If more delimiters exist in text than there are cells, the extra data is ignored
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_Text_Column(ByRef $array, $iCol, $sText, $sDelimiter = "|")

    Local $i

    If IsArray($array) = 0 Then Return
    If $iCol = 0 Then Return
    If Number($iCol) > UBound($array, 2) - 1 Then Return

    Local $aString = StringSplit($sText, $sDelimiter)

    Local $iUpperlimit = UBound($array, 1) - 1
    If $aString[0] < $iUpperlimit Then $iUpperlimit = $aString[0]

    For $i = 1 To $iUpperlimit
        GUICtrlSetData($array[$i][$iCol], $aString[$i])
    Next

EndFunc   ;==>_GUICtrlTable_Set_Text_Column



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_Text_Cell
; Description ...: Changes the text of the cells in a single cell
; Syntax.........: _GUICtrlTable_Set_Text_Cell(ByRef $array, $iRow, $iCol, $sText)
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iRow - cell row value
;                  $iCol - cell column value
;                  $sText - text to add to cell
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_Text_Cell(ByRef $array, $iRow, $iCol, $sText)

    If IsArray($array) = 0 Then Return
    If $iRow = 0 Then Return
    If $iCol = 0 Then Return
    If Number($iRow) > UBound($array, 1) - 1 Then Return
    If Number($iCol) > UBound($array, 2) - 1 Then Return

    GUICtrlSetData($array[$iRow][$iCol], $sText)

EndFunc   ;==>_GUICtrlTable_Set_Text_Cell



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Get_Text_Row
; Description ...: Returns the data from a row of cells
; Syntax.........: _GUICtrlTable_Get_Text_Row(ByRef $array, $iRow[, $sDelimiter = "|"])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iRow - table row value
;                  $sDelimiter - character to put between cell returns
; Return values .: Success - returns delimited string of cell data from specified row
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Get_Text_Row(ByRef $array, $iRow, $sDelimiter = "|")

    Local $i, $sString

    If IsArray($array) = 0 Then Return
    If $iRow = 0 Then Return
    If Number($iRow) > UBound($array, 1) - 1 Then Return ;set error too

    $sString = ""
    For $i = 1 To UBound($array, 2) - 1
        $sString &= GUICtrlRead($array[$iRow][$i]) & $sDelimiter
    Next

    Return StringTrimRight($sString, 1)

EndFunc   ;==>_GUICtrlTable_Get_Text_Row



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Get_Text_Column
; Description ...: Returns the data from a column of cells
; Syntax.........: _GUICtrlTable_Get_Text_Column(ByRef $array, $iCol[, $sDelimiter = "|"])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iCol - table column value
;                  $sDelimiter - character to put between cell returns
; Return values .: Success - returns delimited string of cell data from specified column
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Get_Text_Column(ByRef $array, $iCol, $sDelimiter = "|")

    Local $i, $sString

    If IsArray($array) = 0 Then Return
    If $iCol = 0 Then Return
    If Number($iCol) > UBound($array, 2) - 1 Then Return ;set error too

    $sString = ""
    For $i = 1 To UBound($array, 1) - 1
        $sString &= GUICtrlRead($array[$i][$iCol]) & $sDelimiter
    Next

    Return StringTrimRight($sString, 1)

EndFunc   ;==>_GUICtrlTable_Get_Text_Column



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Get_Text_Cell
; Description ...: Returns the data from a specified cell
; Syntax.........: _GUICtrlTable_Get_Text_Cell(ByRef $array, $iRow, $iCol)
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iRow - cell row value
;                  $iCol - cell Column value
; Return values .: Success - returns cell data from specified cell
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Get_Text_Cell(ByRef $array, $iRow, $iCol)

    If IsArray($array) = 0 Then Return

    If $iRow = 0 Then Return
    If $iCol = 0 Then Return
    If Number($iRow) > UBound($array, 1) - 1 Then Return
    If Number($iCol) > UBound($array, 2) - 1 Then Return

    Return GUICtrlRead($array[$iRow][$iCol])

EndFunc   ;==>_GUICtrlTable_Get_Text_Cell



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Get_Text_All
; Description ...: Returns all the data from a table
; Syntax.........: _GUICtrlTable_Get_Text_All(ByRef $array)
; Parameters ....: $array - array returned from _GUICtrlTable_Create
; Return values .: Success - returns a 2d array of cell data e.g. $array[row][column]
;                  Failure - (under construction)
; Notes .........: zero elements of returned array are empty
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Get_Text_All(ByRef $array)

    Local $i, $j, $aTemp

    If IsArray($array) = 0 Then Return
    $aTemp = $array

    For $i = 1 To UBound($array, 1) - 1
        For $j = 1 To UBound($array, 2) - 1
            $aTemp[$i][$j] = GUICtrlRead($array[$i][$j])
        Next
    Next

    Return $aTemp

EndFunc   ;==>_GUICtrlTable_Get_Text_All



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_TextColor_Row
; Description ...: Sets the text color of a row of cells
; Syntax.........: _GUICtrlTable_Set_TextColor_Row(ByRef $array, $iRow[, $iColor = 0x000000])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iRow - table row value
;                  $iColor - color to set text
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_TextColor_Row(ByRef $array, $iRow, $iColor = 0x000000)

    Local $i

    If IsArray($array) = 0 Then Return
    If $iRow = 0 Then Return
    If Number($iRow) > UBound($array, 1) - 1 Then Return

    For $i = 1 To UBound($array, 2) - 1
        GUICtrlSetColor($array[$iRow][$i], $iColor)
    Next

EndFunc   ;==>_GUICtrlTable_Set_TextColor_Row



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_TextColor_Column
; Description ...: Sets the text color of a column of cells
; Syntax.........: _GUICtrlTable_Set_TextColor_Column(ByRef $array, $iCol[, $iColor = 0x000000])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iCol - table column value
;                  $iColor - color to set text
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_TextColor_Column(ByRef $array, $iCol, $iColor = 0x000000)

    Local $i

    If IsArray($array) = 0 Then Return
    If $iCol = 0 Then Return
    If Number($iCol) > UBound($array, 2) - 1 Then Return

    For $i = 1 To UBound($array, 1) - 1
        GUICtrlSetColor($array[$i][$iCol], $iColor)
    Next

EndFunc   ;==>_GUICtrlTable_Set_TextColor_Column



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_TextColor_Cell
; Description ...: Sets the text color of a specified cell
; Syntax.........: _GUICtrlTable_Set_TextColor_Cell(ByRef $array, $iRow, $iCol[, $iColor = 0x000000])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iRow - cell row value
;                  $iCol - cell column value
;                  $iColor - color to set text
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_TextColor_Cell(ByRef $array, $iRow, $iCol, $iColor = 0x000000)

    If IsArray($array) = 0 Then Return

    If $iRow = 0 Then Return
    If $iCol = 0 Then Return
    If Number($iRow) > UBound($array, 1) - 1 Then Return
    If Number($iCol) > UBound($array, 2) - 1 Then Return

    GUICtrlSetColor($array[$iRow][$iCol], $iColor)

EndFunc   ;==>_GUICtrlTable_Set_TextColor_Cell



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_TextColor_All
; Description ...: Sets the text color of all cells in table
; Syntax.........: _GUICtrlTable_Set_TextColor_All(ByRef $array[, $iColor = 0x000000])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iColor - color to set text
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_TextColor_All(ByRef $array, $iColor = 0x000000)

    Local $i, $j

    If IsArray($array) = 0 Then Return

    For $i = 1 To UBound($array, 1) - 1
        For $j = 1 To UBound($array, 2) - 1
            GUICtrlSetColor($array[$i][$j], $iColor)
        Next
    Next

EndFunc   ;==>_GUICtrlTable_Set_TextColor_All



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_TextFont_Row
; Description ...: Sets the text size, weight, attribute and font of a row of cells
; Syntax.........: _GUICtrlTable_Set_TextFont_Row(ByRef $array, $iRow, $iSize[, $iWeight = 400[, $iAttribute = 0[, $sFontname = "MS Sans Serif"]]])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iRow - table row value
;                  $iSize - font size
;                  $iWeight - weight of font (bold etc)
;                  $iAttribute - italic=2 underlined=4 strike=8 (add together)
;                  $sFontname - name of font to use
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_TextFont_Row(ByRef $array, $iRow, $iSize, $iWeight = 400, $iAttribute = 0, $sFontname = "MS Sans Serif")

    Local $i

    If IsArray($array) = 0 Then Return
    If $iRow = 0 Then Return
    If Number($iRow) > UBound($array, 1) - 1 Then Return

    For $i = 1 To UBound($array, 2) - 1
        GUICtrlSetFont($array[$iRow][$i], $iSize, $iWeight, $iAttribute, $sFontname)
    Next

EndFunc   ;==>_GUICtrlTable_Set_TextFont_Row



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_TextFont_Column
; Description ...: Sets the text size, weight, attribute and font of a column of cells
; Syntax.........: _GUICtrlTable_Set_TextFont_Column(ByRef $array, $iCol, $iSize[, $iWeight = 400[, $iAttribute = 0[, $sFontname = "MS Sans Serif"]]])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iCol - table column value
;                  $iSize - font size
;                  $iWeight - weight of font (bold etc)
;                  $iAttribute - italic=2 underlined=4 strike=8 (add together)
;                  $sFontname - name of font to use
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_TextFont_Column(ByRef $array, $iCol, $iSize, $iWeight = 400, $iAttribute = 0, $sFontname = "MS Sans Serif")

    Local $i

    If IsArray($array) = 0 Then Return
    If $iCol = 0 Then Return
    If Number($iCol) > UBound($array, 2) - 1 Then Return

    For $i = 1 To UBound($array, 1) - 1
        GUICtrlSetFont($array[$i][$iCol], $iSize, $iWeight, $iAttribute, $sFontname)
    Next

EndFunc   ;==>_GUICtrlTable_Set_TextFont_Column



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_TextFont_Cell
; Description ...: Sets the text size, weight, attribute and font of a specified cell
; Syntax.........: _GUICtrlTable_Set_TextFont_Cell(ByRef $array, $iRow, $iCol, $iSize[, $iWeight = 400[, $iAttribute = 0[, $sFontname = "MS Sans Serif"]]])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iRow - cell row value
;                  $iCol - cell column value
;                  $iSize - font size
;                  $iWeight - weight of font (bold etc)
;                  $iAttribute - italic=2 underlined=4 strike=8 (add together)
;                  $sFontname - name of font to use
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_TextFont_Cell(ByRef $array, $iRow, $iCol, $iSize, $iWeight = 400, $iAttribute = 0, $sFontname = "MS Sans Serif")

    If IsArray($array) = 0 Then Return
    If $iRow = 0 Then Return
    If $iCol = 0 Then Return
    If Number($iRow) > UBound($array, 1) - 1 Then Return
    If Number($iCol) > UBound($array, 2) - 1 Then Return

    GUICtrlSetFont($array[$iRow][$iCol], $iSize, $iWeight, $iAttribute, $sFontname)

EndFunc   ;==>_GUICtrlTable_Set_TextFont_Cell



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_TextFont_All
; Description ...: Sets the text size, weight, attribute and font of all cells in table
; Syntax.........: _GUICtrlTable_Set_TextFont_All(ByRef $array[, $iSize = 8.5[, $iWeight = 400[, $iAttribute = 0[, $sFontname = "MS Sans Serif"]]])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iSize - font size
;                  $iWeight - weight of font (bold etc)
;                  $iAttribute - italic=2 underlined=4 strike=8 (add together)
;                  $sFontname - name of font to use
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_TextFont_All(ByRef $array, $iSize = 8.5, $iWeight = 400, $iAttribute = 0, $sFontname = "MS Sans Serif")

    Local $i, $j

    If IsArray($array) = 0 Then Return

    For $i = 1 To UBound($array, 1) - 1
        For $j = 1 To UBound($array, 2) - 1
            GUICtrlSetFont($array[$i][$j], $iSize, $iWeight, $iAttribute, $sFontname)
        Next
    Next

EndFunc   ;==>_GUICtrlTable_Set_TextFont_All



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_CellColor_Row
; Description ...: Sets the cell background color of a row of cells
; Syntax.........: _GUICtrlTable_Set_CellColor_Row(ByRef $array, $iRow[, $iColor = 0xFFFFFF])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iRow - table row value
;                  $iColor - background color for cell ( -2 = transparent)
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_CellColor_Row(ByRef $array, $iRow, $iColor = 0xFFFFFF)

    Local $i

    If IsArray($array) = 0 Then Return
    If $iRow = 0 Then Return
    If Number($iRow) > UBound($array, 1) - 1 Then Return

    For $i = 1 To UBound($array, 2) - 1
        GUICtrlSetBkColor($array[$iRow][$i], $iColor)
    Next

EndFunc   ;==>_GUICtrlTable_Set_CellColor_Row



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_CellColor_Column
; Description ...: Sets the cell background color of a column of cells
; Syntax.........: _GUICtrlTable_Set_CellColor_Col(ByRef $array, $iCol[, $iColor = 0xFFFFFF])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iCol - table column value
;                  $iColor - background color for cell ( -2 = transparent)
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_CellColor_Column(ByRef $array, $iCol, $iColor = 0xFFFFFF)

    Local $i

    If IsArray($array) = 0 Then Return
    If $iCol = 0 Then Return
    If Number($iCol) > UBound($array, 2) - 1 Then Return

    For $i = 1 To UBound($array, 1) - 1
        GUICtrlSetBkColor($array[$i][$iCol], $iColor)
    Next

EndFunc   ;==>_GUICtrlTable_Set_CellColor_Column



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_CellColor_Cell
; Description ...: Sets the cell background color of a specified of cell
; Syntax.........: _GUICtrlTable_Set_CellColor_Cell(ByRef $array, $iRow, $iCol[, $iColor = 0xFFFFFF])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iRow - cell row value
;                  $iCol - cell column value
;                  $iColor - background color for cell ( -2 = transparent)
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_CellColor_Cell(ByRef $array, $iRow, $iCol, $iColor = 0xFFFFFF)

    If IsArray($array) = 0 Then Return

    If $iRow = 0 Then Return
    If $iCol = 0 Then Return
    If Number($iRow) > UBound($array, 1) - 1 Then Return
    If Number($iCol) > UBound($array, 2) - 1 Then Return

    GUICtrlSetBkColor($array[$iRow][$iCol], $iColor)

EndFunc   ;==>_GUICtrlTable_Set_CellColor_Cell



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_CellColor_All
; Description ...: Sets the cell background color of all cells in a table
; Syntax.........: _GUICtrlTable_Set_CellColor_All(ByRef $array[, $iColor = 0xFFFFFF])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iColor - background color for cells ( -2 = transparent)
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_CellColor_All(ByRef $array, $iColor = 0xFFFFFF)

    Local $i, $j

    If IsArray($array) = 0 Then Return

    For $i = 1 To UBound($array, 1) - 1
        For $j = 1 To UBound($array, 2) - 1
            GUICtrlSetBkColor($array[$i][$j], $iColor)
        Next
    Next

EndFunc   ;==>_GUICtrlTable_Set_CellColor_All



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_Justify_Row
; Description ...: Sets the justification (text position in cell) of a row of cells
; Syntax.........: _GUICtrlTable_Set_Justify_Row(ByRef $array, $iRow, $iJustify[, $iVCenter = 0])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iRow - table row value
;                  $iJustify - left = 0, center = 1, right = 2
;                  $iVCenter - vertical position, top = 0, center = 1
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_Justify_Row(ByRef $array, $iRow, $iJustify, $iVCenter = 0)

    Local $i

    If $iJustify < 0 Or $iJustify > 2 Then Return
    If IsArray($array) = 0 Then Return
    If $iRow = 0 Then Return
    If Number($iRow) > UBound($array, 1) - 1 Then Return

    If $iVCenter <> 0 Then $iJustify += 0x0200

    For $i = 1 To UBound($array, 2) - 1
        GUICtrlSetStyle($array[$iRow][$i], $iJustify)
    Next

EndFunc   ;==>_GUICtrlTable_Set_Justify_Row



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_Justify_Column
; Description ...: Sets the justification (text position in cell) of a column of cells
; Syntax.........: _GUICtrlTable_Set_Justify_Column(ByRef $array, $iCol, $iJustify[, $iVCenter = 0])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iCol - table column value
;                  $iJustify - left = 0, center = 1, right = 2
;                  $iVCenter - vertical position, top = 0, center = 1
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_Justify_Column(ByRef $array, $iCol, $iJustify, $iVCenter = 0)

    Local $i

    If $iJustify < 0 Or $iJustify > 2 Then Return
    If IsArray($array) = 0 Then Return
    If $iCol = 0 Then Return
    If Number($iCol) > UBound($array, 2) - 1 Then Return

    If $iVCenter <> 0 Then $iJustify += 0x0200

    For $i = 1 To UBound($array, 1) - 1
        GUICtrlSetStyle($array[$i][$iCol], $iJustify)
    Next

EndFunc   ;==>_GUICtrlTable_Set_Justify_Column



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_Justify_Cell
; Description ...: Sets the justification (text position in cell) of a specified cell
; Syntax.........: _GUICtrlTable_Set_Justify_Cell(ByRef $array, $iRow, $iCol, $iJustify[, $iVCenter = 0])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iRow - cell row value
;                  $iCol - cell column value
;                  $iJustify - left = 0, center = 1, right = 2
;                  $iVCenter - vertical position, top = 0, center = 1
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_Justify_Cell(ByRef $array, $iRow, $iCol, $iJustify, $iVCenter = 0)

    If $iJustify < 0 Or $iJustify > 2 Then Return
    If IsArray($array) = 0 Then Return
    If $iRow = 0 Then Return
    If $iCol = 0 Then Return
    If Number($iRow) > UBound($array, 1) - 1 Then Return
    If Number($iCol) > UBound($array, 2) - 1 Then Return

    If $iVCenter <> 0 Then $iJustify += 0x0200

    GUICtrlSetStyle($array[$iRow][$iCol], $iJustify)

EndFunc   ;==>_GUICtrlTable_Set_Justify_Cell



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_Justify_All
; Description ...: Sets the justification (text position in cell) of all cells in table
; Syntax.........: _GUICtrlTable_Set_Justify_All(ByRef $array, $iJustify[, $iVCenter = 0])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iJustify - left = 0, center = 1, right = 2
;                  $iVCenter - vertical position, top = 0, center = 1
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_Justify_All(ByRef $array, $iJustify, $iVCenter = 0)

    Local $i, $j
    If $iJustify < 0 Or $iJustify > 2 Then Return
    If IsArray($array) = 0 Then Return

    If $iVCenter <> 0 Then $iJustify += 0x0200

    For $i = 1 To UBound($array, 1) - 1
        For $j = 1 To UBound($array, 2) - 1
            GUICtrlSetStyle($array[$i][$j], $iJustify)
        Next
    Next

EndFunc   ;==>_GUICtrlTable_Set_Justify_All



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_Border_Row
; Description ...: Draws a border on specified row of cells
; Syntax.........: _GUICtrlTable_Set_Border_Row(ByRef $array, $iRow, $iType[, $iColor = 0x000000])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iRow - table row value
;                  $iType - left = 1, top = 2, right = 4, bottom = 8 (add values, e.g. full border = 15) NoBorder = 0
;                  $iColor - color of border to add
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; Credits .......: Authenticity (demonstrated API/dll z-order calls)
; ===========================================================================================
Func _GUICtrlTable_Set_Border_Row(ByRef $array, $iRow, $iType, $iColor = 0x000000)

    Local $hLabel, $i, $aTemp, $test, $aRetrievedTableBorders

    If IsArray($array) = 0 Then Return
    If $iRow = 0 Then Return
    If Number($iRow) > UBound($array, 1) - 1 Then Return

    ;- Get border array from store -
    $test = ""
    For $i = 1 To UBound($_aGUICtrlTableBordersINTERNALSTORE, 1) - 1
        $test = $_aGUICtrlTableBordersINTERNALSTORE[$i][0]
        If $array[1][1] = $test Then
            $aRetrievedTableBorders = $_aGUICtrlTableBordersINTERNALSTORE[$i][1]
            $test = $i
            ExitLoop
        EndIf
    Next

    For $i = 1 To UBound($array, 2) - 1
        $aTemp = ControlGetPos("", "", $array[$iRow][$i])
        ;none = 0
        Switch $iType
            Case 0
                GUICtrlDelete($aRetrievedTableBorders[$iRow][$i][1])
                GUICtrlDelete($aRetrievedTableBorders[$iRow][$i][2])
                GUICtrlDelete($aRetrievedTableBorders[$iRow][$i][3])
                GUICtrlDelete($aRetrievedTableBorders[$iRow][$i][4])
        EndSwitch
        ;left border = 1
        Switch $iType
            Case 1, 3, 5, 7, 9, 11, 13, 15
                GUICtrlDelete($aRetrievedTableBorders[$iRow][$i][1])
                $aRetrievedTableBorders[$iRow][$i][1] = GUICtrlCreateLabel("", $aTemp[0], $aTemp[1], 1, $aTemp[3])
                GUICtrlSetBkColor(-1, $iColor)
                $hLabel = GUICtrlGetHandle(-1)
                ;set label to top
                DllCall("User32.dll", "int", "SetWindowPos", "hwnd", $hLabel, "hwnd", 0, "int", 0, "int", 0, "int", 0, "int", 0, "int", 3)
        EndSwitch
        ;top border = 2
        Switch $iType
            Case 2, 3, 6, 7, 10, 11, 14, 15
                GUICtrlDelete($aRetrievedTableBorders[$iRow][$i][2])
                $aRetrievedTableBorders[$iRow][$i][2] = GUICtrlCreateLabel("", $aTemp[0], $aTemp[1], $aTemp[2], 1)
                GUICtrlSetBkColor(-1, $iColor)
                $hLabel = GUICtrlGetHandle(-1)
                DllCall("User32.dll", "int", "SetWindowPos", "hwnd", $hLabel, "hwnd", 0, "int", 0, "int", 0, "int", 0, "int", 0, "int", 3)
        EndSwitch
        ;right border = 4
        Switch $iType
            Case 4, 5, 6, 7, 12, 13, 14, 15
                GUICtrlDelete($aRetrievedTableBorders[$iRow][$i][3])
                $aRetrievedTableBorders[$iRow][$i][3] = GUICtrlCreateLabel("", $aTemp[0] + $aTemp[2] - 1, $aTemp[1], 1, $aTemp[3])
                GUICtrlSetBkColor(-1, $iColor)
                $hLabel = GUICtrlGetHandle(-1)
                DllCall("User32.dll", "int", "SetWindowPos", "hwnd", $hLabel, "hwnd", 0, "int", 0, "int", 0, "int", 0, "int", 0, "int", 3)
        EndSwitch
        ;bottom border = 8
        Switch $iType
            Case 8, 9, 10, 11, 12, 13, 14, 15
                GUICtrlDelete($aRetrievedTableBorders[$iRow][$i][4])
                $aRetrievedTableBorders[$iRow][$i][4] = GUICtrlCreateLabel("", $aTemp[0], $aTemp[1] + $aTemp[3] - 1, $aTemp[2], 1)
                GUICtrlSetBkColor(-1, $iColor)
                $hLabel = GUICtrlGetHandle(-1)
                DllCall("User32.dll", "int", "SetWindowPos", "hwnd", $hLabel, "hwnd", 0, "int", 0, "int", 0, "int", 0, "int", 0, "int", 3)
        EndSwitch
    Next

    ;- Put retrieved borders back
    $_aGUICtrlTableBordersINTERNALSTORE[$test][1] = $aRetrievedTableBorders

    ;refresh window (not needed?)
    ;DllCall("User32.dll", "int", "InvalidateRect", "hwnd", "", "ptr", 0, "int", True)

EndFunc   ;==>_GUICtrlTable_Set_Border_Row



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_Border_Column
; Description ...: Draws a border on specified column of cells
; Syntax.........: _GUICtrlTable_Set_Border_Column(ByRef $array, $iCol, $iType[, $iColor = 0x000000])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iCol - table col value
;                  $iType - left = 1, top = 2, right = 4, bottom = 8 (add values, e.g. full border = 15) NoBorder = 0
;                  $iColor - color of border to add
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; Credits .......: Authenticity (demonstrated API/dll z-order calls)
; ===========================================================================================
Func _GUICtrlTable_Set_Border_Column(ByRef $array, $iCol, $iType, $iColor = 0x000000)

    Local $hLabel, $i, $aTemp, $test, $aRetrievedTableBorders

    If IsArray($array) = 0 Then Return
    If $iCol = 0 Then Return
    If Number($iCol) > UBound($array, 2) - 1 Then Return

    ;- Get border array from store -
    $test = ""
    For $i = 1 To UBound($_aGUICtrlTableBordersINTERNALSTORE, 1) - 1
        $test = $_aGUICtrlTableBordersINTERNALSTORE[$i][0]
        If $array[1][1] = $test Then
            $aRetrievedTableBorders = $_aGUICtrlTableBordersINTERNALSTORE[$i][1]
            $test = $i
            ExitLoop
        EndIf
    Next

    For $i = 1 To UBound($array, 1) - 1
        $aTemp = ControlGetPos("", "", $array[$i][$iCol])
        ;none = 0
        Switch $iType
            Case 0
                GUICtrlDelete($aRetrievedTableBorders[$i][$iCol][1])
                GUICtrlDelete($aRetrievedTableBorders[$i][$iCol][2])
                GUICtrlDelete($aRetrievedTableBorders[$i][$iCol][3])
                GUICtrlDelete($aRetrievedTableBorders[$i][$iCol][4])
        EndSwitch
        ;left border = 1
        Switch $iType
            Case 1, 3, 5, 7, 9, 11, 13, 15
                GUICtrlDelete($aRetrievedTableBorders[$i][$iCol][1])
                $aRetrievedTableBorders[$i][$iCol][1] = GUICtrlCreateLabel("", $aTemp[0], $aTemp[1], 1, $aTemp[3])
                GUICtrlSetBkColor(-1, $iColor)
                $hLabel = GUICtrlGetHandle(-1)
                ;set label to top
                DllCall("User32.dll", "int", "SetWindowPos", "hwnd", $hLabel, "hwnd", 0, "int", 0, "int", 0, "int", 0, "int", 0, "int", 3)
        EndSwitch
        ;top border = 2
        Switch $iType
            Case 2, 3, 6, 7, 10, 11, 14, 15
                GUICtrlDelete($aRetrievedTableBorders[$i][$iCol][2])
                $aRetrievedTableBorders[$i][$iCol][2] = GUICtrlCreateLabel("", $aTemp[0], $aTemp[1], $aTemp[2], 1)
                GUICtrlSetBkColor(-1, $iColor)
                $hLabel = GUICtrlGetHandle(-1)
                DllCall("User32.dll", "int", "SetWindowPos", "hwnd", $hLabel, "hwnd", 0, "int", 0, "int", 0, "int", 0, "int", 0, "int", 3)
        EndSwitch
        ;right border = 4
        Switch $iType
            Case 4, 5, 6, 7, 12, 13, 14, 15
                GUICtrlDelete($aRetrievedTableBorders[$i][$iCol][3])
                $aRetrievedTableBorders[$i][$iCol][3] = GUICtrlCreateLabel("", $aTemp[0] + $aTemp[2] - 1, $aTemp[1], 1, $aTemp[3])
                GUICtrlSetBkColor(-1, $iColor)
                $hLabel = GUICtrlGetHandle(-1)
                DllCall("User32.dll", "int", "SetWindowPos", "hwnd", $hLabel, "hwnd", 0, "int", 0, "int", 0, "int", 0, "int", 0, "int", 3)
        EndSwitch
        ;bottom border = 8
        Switch $iType
            Case 8, 9, 10, 11, 12, 13, 14, 15
                GUICtrlDelete($aRetrievedTableBorders[$i][$iCol][4])
                $aRetrievedTableBorders[$i][$iCol][4] = GUICtrlCreateLabel("", $aTemp[0], $aTemp[1] + $aTemp[3] - 1, $aTemp[2], 1)
                GUICtrlSetBkColor(-1, $iColor)
                $hLabel = GUICtrlGetHandle(-1)
                DllCall("User32.dll", "int", "SetWindowPos", "hwnd", $hLabel, "hwnd", 0, "int", 0, "int", 0, "int", 0, "int", 0, "int", 3)
        EndSwitch

    Next

    ;- Put retrieved borders back
    $_aGUICtrlTableBordersINTERNALSTORE[$test][1] = $aRetrievedTableBorders

    ;refresh window
    ;DllCall("User32.dll", "int", "InvalidateRect", "hwnd", "", "ptr", 0, "int", True)

EndFunc   ;==>_GUICtrlTable_Set_Border_Column



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_Border_Cell
; Description ...: Draws a border on specified cell
; Syntax.........: _GUICtrlTable_Set_Border_Cell(ByRef $array, $iRow, $iCol, $iType[, $iColor = 0x000000])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iRow - cell row value
;                  $iCol - cell col value
;                  $iType - left = 1, top = 2, right = 4, bottom = 8 (add values, e.g. full border = 15) NoBorder = 0
;                  $iColor - color of border to add
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; Credits .......: Authenticity (demonstrated API/dll z-order calls)
; ===========================================================================================
Func _GUICtrlTable_Set_Border_Cell(ByRef $array, $iRow, $iCol, $iType, $iColor = 0x000000)

    Local $hLabel, $aTemp, $test, $aRetrievedTableBorders, $i

    If IsArray($array) = 0 Then Return
    If $iRow = 0 Then Return
    If $iCol = 0 Then Return
    If Number($iRow) > UBound($array, 1) - 1 Then Return
    If Number($iCol) > UBound($array, 2) - 1 Then Return

    ;- Get border array from store -
    $test = ""
    For $i = 1 To UBound($_aGUICtrlTableBordersINTERNALSTORE, 1) - 1
        $test = $_aGUICtrlTableBordersINTERNALSTORE[$i][0]
        If $array[1][1] = $test Then
            $aRetrievedTableBorders = $_aGUICtrlTableBordersINTERNALSTORE[$i][1]
            $test = $i
            ExitLoop
        EndIf
    Next

    $aTemp = ControlGetPos("", "", $array[$iRow][$iCol])

    ;none = 0
    Switch $iType
        Case 0
            GUICtrlDelete($aRetrievedTableBorders[$iRow][$iCol][1])
            GUICtrlDelete($aRetrievedTableBorders[$iRow][$iCol][2])
            GUICtrlDelete($aRetrievedTableBorders[$iRow][$iCol][3])
            GUICtrlDelete($aRetrievedTableBorders[$iRow][$iCol][4])
    EndSwitch
    ;left border = 1
    Switch $iType
        Case 1, 3, 5, 7, 9, 11, 13, 15
            GUICtrlDelete($aRetrievedTableBorders[$iRow][$iCol][1])
            $aRetrievedTableBorders[$iRow][$iCol][1] = GUICtrlCreateLabel("", $aTemp[0], $aTemp[1], 1, $aTemp[3])
            GUICtrlSetBkColor(-1, $iColor)
            $hLabel = GUICtrlGetHandle(-1)
            ;set label to top
            DllCall("User32.dll", "int", "SetWindowPos", "hwnd", $hLabel, "hwnd", 0, "int", 0, "int", 0, "int", 0, "int", 0, "int", 3)
    EndSwitch
    ;top border = 2
    Switch $iType
        Case 2, 3, 6, 7, 10, 11, 14, 15
            GUICtrlDelete($aRetrievedTableBorders[$iRow][$iCol][2])
            $aRetrievedTableBorders[$iRow][$iCol][2] = GUICtrlCreateLabel("", $aTemp[0], $aTemp[1], $aTemp[2], 1)
            GUICtrlSetBkColor(-1, $iColor)
            $hLabel = GUICtrlGetHandle(-1)
            DllCall("User32.dll", "int", "SetWindowPos", "hwnd", $hLabel, "hwnd", 0, "int", 0, "int", 0, "int", 0, "int", 0, "int", 3)
    EndSwitch
    ;right border = 4
    Switch $iType
        Case 4, 5, 6, 7, 12, 13, 14, 15
            GUICtrlDelete($aRetrievedTableBorders[$iRow][$iCol][3])
            $aRetrievedTableBorders[$iRow][$iCol][3] = GUICtrlCreateLabel("", $aTemp[0] + $aTemp[2] - 1, $aTemp[1], 1, $aTemp[3])
            GUICtrlSetBkColor(-1, $iColor)
            $hLabel = GUICtrlGetHandle(-1)
            DllCall("User32.dll", "int", "SetWindowPos", "hwnd", $hLabel, "hwnd", 0, "int", 0, "int", 0, "int", 0, "int", 0, "int", 3)
    EndSwitch
    ;bottom border = 8
    Switch $iType
        Case 8, 9, 10, 11, 12, 13, 14, 15
            GUICtrlDelete($aRetrievedTableBorders[$iRow][$iCol][4])
            $aRetrievedTableBorders[$iRow][$iCol][4] = GUICtrlCreateLabel("", $aTemp[0], $aTemp[1] + $aTemp[3] - 1, $aTemp[2], 1)
            GUICtrlSetBkColor(-1, $iColor)
            $hLabel = GUICtrlGetHandle(-1)
            DllCall("User32.dll", "int", "SetWindowPos", "hwnd", $hLabel, "hwnd", 0, "int", 0, "int", 0, "int", 0, "int", 0, "int", 3)
    EndSwitch

    ;- Put retrieved borders back
    $_aGUICtrlTableBordersINTERNALSTORE[$test][1] = $aRetrievedTableBorders

    ;refresh window
    ;DllCall("User32.dll", "int", "InvalidateRect", "hwnd", "", "ptr", 0, "int", True)

EndFunc   ;==>_GUICtrlTable_Set_Border_Cell



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_Border_All
; Description ...: Draws a border on all cells in table
; Syntax.........: _GUICtrlTable_Set_Border_Cell(ByRef $array, iType[, $iColor = 0x000000])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iType - left = 1, top = 2, right = 4, bottom = 8 (add values, e.g. full border = 15) NoBorder = 0
;                  $iColor - color of border to add
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; Credits .......: Authenticity (demonstrated API/dll z-order calls)
; ===========================================================================================
Func _GUICtrlTable_Set_Border_All(ByRef $array, $iType, $iColor = 0x000000)

    Local $hLabel, $i, $aTemp, $test, $aRetrievedTableBorders

    If IsArray($array) = 0 Then Return

    ;- Get border array from store -
    $test = ""
    For $i = 1 To UBound($_aGUICtrlTableBordersINTERNALSTORE, 1) - 1
        $test = $_aGUICtrlTableBordersINTERNALSTORE[$i][0]
        If $array[1][1] = $test Then
            $aRetrievedTableBorders = $_aGUICtrlTableBordersINTERNALSTORE[$i][1]
            $test = $i
            ExitLoop
        EndIf
    Next

    For $i = 1 To UBound($array, 1) - 1
        For $j = 1 To UBound($array, 2) - 1
            $aTemp = ControlGetPos("", "", $array[$i][$j])
            ;none = 0
            Switch $iType
                Case 0
                    GUICtrlDelete($aRetrievedTableBorders[$i][$j][1])
                    GUICtrlDelete($aRetrievedTableBorders[$i][$j][2])
                    GUICtrlDelete($aRetrievedTableBorders[$i][$j][3])
                    GUICtrlDelete($aRetrievedTableBorders[$i][$j][4])
            EndSwitch
            ;left border = 1
            Switch $iType
                Case 1, 3, 5, 7, 9, 11, 13, 15
                    GUICtrlDelete($aRetrievedTableBorders[$i][$j][1])
                    $aRetrievedTableBorders[$i][$j][1] = GUICtrlCreateLabel("", $aTemp[0], $aTemp[1], 1, $aTemp[3])
                    GUICtrlSetBkColor(-1, $iColor)
                    $hLabel = GUICtrlGetHandle(-1)
                    ;set label to top
                    DllCall("User32.dll", "int", "SetWindowPos", "hwnd", $hLabel, "hwnd", 0, "int", 0, "int", 0, "int", 0, "int", 0, "int", 3)
            EndSwitch
            ;top border = 2
            Switch $iType
                Case 2, 3, 6, 7, 10, 11, 14, 15
                    GUICtrlDelete($aRetrievedTableBorders[$i][$j][2])
                    $aRetrievedTableBorders[$i][$j][2] = GUICtrlCreateLabel("", $aTemp[0], $aTemp[1], $aTemp[2], 1)
                    GUICtrlSetBkColor(-1, $iColor)
                    $hLabel = GUICtrlGetHandle(-1)
                    DllCall("User32.dll", "int", "SetWindowPos", "hwnd", $hLabel, "hwnd", 0, "int", 0, "int", 0, "int", 0, "int", 0, "int", 3)
            EndSwitch
            ;right border = 4
            Switch $iType
                Case 4, 5, 6, 7, 12, 13, 14, 15
                    GUICtrlDelete($aRetrievedTableBorders[$i][$j][3])
                    $aRetrievedTableBorders[$i][$j][3] = GUICtrlCreateLabel("", $aTemp[0] + $aTemp[2] - 1, $aTemp[1], 1, $aTemp[3])
                    GUICtrlSetBkColor(-1, $iColor)
                    $hLabel = GUICtrlGetHandle(-1)
                    DllCall("User32.dll", "int", "SetWindowPos", "hwnd", $hLabel, "hwnd", 0, "int", 0, "int", 0, "int", 0, "int", 0, "int", 3)
            EndSwitch
            ;bottom border = 8
            Switch $iType
                Case 8, 9, 10, 11, 12, 13, 14, 15
                    GUICtrlDelete($aRetrievedTableBorders[$i][$j][4])
                    $aRetrievedTableBorders[$i][$j][4] = GUICtrlCreateLabel("", $aTemp[0], $aTemp[1] + $aTemp[3] - 1, $aTemp[2], 1)
                    GUICtrlSetBkColor(-1, $iColor)
                    $hLabel = GUICtrlGetHandle(-1)
                    DllCall("User32.dll", "int", "SetWindowPos", "hwnd", $hLabel, "hwnd", 0, "int", 0, "int", 0, "int", 0, "int", 0, "int", 3)
            EndSwitch
        Next
    Next

    ;- Put retrieved borders back
    $_aGUICtrlTableBordersINTERNALSTORE[$test][1] = $aRetrievedTableBorders

    ;refresh window
    ;DllCall("User32.dll", "int", "InvalidateRect", "hwnd", "", "ptr", 0, "int", True)

EndFunc   ;==>_GUICtrlTable_Set_Border_All



; #FUNCTION# ;===============================================================================
; Name...........: _GUICtrlTable_Set_Border_Table
; Description ...: Draws a border around the whole table
; Syntax.........: _GUICtrlTable_Set_Border_Table(ByRef $array[, $iColor = 0x000000])
; Parameters ....: $array - array returned from _GUICtrlTable_Create
;                  $iColor - color of border to add
; Return values .: Success - (under construction)
;                  Failure - (under construction)
; Author ........: AndyBiochem
; ===========================================================================================
Func _GUICtrlTable_Set_Border_Table(ByRef $array, $iColor = 0x000000)

    If IsArray($array) = 0 Then Return

    _GUICtrlTable_Set_Border_Row($array,1,2,$iColor)
    _GUICtrlTable_Set_Border_Row($array,UBound($array,1) - 1,8,$iColor)
    _GUICtrlTable_Set_Border_Column($array,1,1,$iColor)
    _GUICtrlTable_Set_Border_Column($array,UBound($array,2) - 1,4,$iColor)

EndFunc

THANKS TO:

- Authenticity (demonstrated API/dll z-order calls)

Edited by andybiochem
- Table UDF - create simple data tables - Line Graph UDF GDI+ - quickly create simple line graphs with x and y axes (uses GDI+ with double buffer) - Line Graph UDF - quickly create simple line graphs with x and y axes (uses AI native graphic control) - Barcode Generator Code 128 B C - Create the 1/0 code for barcodes. - WebCam as BarCode Reader - use your webcam to read barcodes - Stereograms!!! - make your own stereograms in AutoIT - Ziggurat Gaussian Distribution RNG - generate random numbers based on normal/gaussian distribution - Box-Muller Gaussian Distribution RNG - generate random numbers based on normal/gaussian distribution - Elastic Radio Buttons - faux-gravity effects in AutoIT (from javascript)- Morse Code Generator - Generate morse code by tapping your spacebar!
Posted

Very nice! And easy to use :)

+5 from me as well ;)

 

Spoiler

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize Program

AutoIt_Icon_small.pngUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF
 
AutoIt_Icon_small.pngExamples: 
ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo

Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Posted (edited)

The only drawback so far is too long to build the tables, especially if building the large tables. You can increase speed if draw the table directly in the Bitmap. But it will be a completely different "song".

Edited by Yashied
Posted

Thanks for all the comments!

The only drawback so far is too long to build the tables, especially if building the large tables. You can increase speed if draw the table directly in the Bitmap. But it will be a completely different "song".

Yeah, large tables may require the use of a 'proper control' (listview).

The main slow-down seems to be with mass use of borders. E.g.

#include "Table.au3"

;----- GUI (Double Buffered) -----
$GUI = GUICreate("", 450, 450, -1, -1, -1, 0x2000000)

;----- Make sure GUI exists BEFORE creating Tables -----
GUISetState()

;----- Lock GUI until tables drawn -----
GUISetState(@SW_LOCK)

;----- Table Example 1 -----
$timer = TimerInit()
$Table1 = _GUICtrlTable_Create(5, 5, 10, 10, 40, 40, 1)
;_GUICtrlTable_Set_Border_All($Table1,15)
ConsoleWrite(TimerDiff($timer)/1000 & @CRLF)

;----- Unlock GUI to show tables -----
GUISetState(@SW_UNLOCK)

;----- Loop -----
Do
    Sleep(10)
Until GUIGetMsg() = -3

With the border commented out, it takes this computer 0.5 seconds to draw 1600 cells.

With the border function in use, it takes 17 seconds.

I think perhaps this has more to do with my use of DllCall in drawing the borders, I may re-think this bit.

Thanks!

- Table UDF - create simple data tables - Line Graph UDF GDI+ - quickly create simple line graphs with x and y axes (uses GDI+ with double buffer) - Line Graph UDF - quickly create simple line graphs with x and y axes (uses AI native graphic control) - Barcode Generator Code 128 B C - Create the 1/0 code for barcodes. - WebCam as BarCode Reader - use your webcam to read barcodes - Stereograms!!! - make your own stereograms in AutoIT - Ziggurat Gaussian Distribution RNG - generate random numbers based on normal/gaussian distribution - Box-Muller Gaussian Distribution RNG - generate random numbers based on normal/gaussian distribution - Elastic Radio Buttons - faux-gravity effects in AutoIT (from javascript)- Morse Code Generator - Generate morse code by tapping your spacebar!
Posted

Can you show an example for (vertically) scrollable table with many rows please?

Thanks.

Scroll bars are not supported natively (intentionally).

I think it would be possible to implement using the UDF as it is, using two tables and an array of the data content: The first table would be the header, and the second would contain the data directly below. A slider (or other control) could be used to re-write the table data by altering which element is displyed first, with subsequent data being filled afterwards in the remaining rows.

I might have a go at coding this later, but I think for mass data with scroll bars, the listview is a much more robust tool.

- Table UDF - create simple data tables - Line Graph UDF GDI+ - quickly create simple line graphs with x and y axes (uses GDI+ with double buffer) - Line Graph UDF - quickly create simple line graphs with x and y axes (uses AI native graphic control) - Barcode Generator Code 128 B C - Create the 1/0 code for barcodes. - WebCam as BarCode Reader - use your webcam to read barcodes - Stereograms!!! - make your own stereograms in AutoIT - Ziggurat Gaussian Distribution RNG - generate random numbers based on normal/gaussian distribution - Box-Muller Gaussian Distribution RNG - generate random numbers based on normal/gaussian distribution - Elastic Radio Buttons - faux-gravity effects in AutoIT (from javascript)- Morse Code Generator - Generate morse code by tapping your spacebar!
Posted (edited)

I might have a go at coding this later, but I think for mass data with scroll bars, the listview is a much more robust tool.

I know. I had in my mind reverse problem: I have got a listview vith many rows which I want to have two lines on each row (also in header)

so I expected your Table UDF would be a good simple solution. Unfortunatelly I noticed your UDF doesn't support scrollbars.

I can make ListView with multiple lines in a row by implementing NM_CUSTOMDRAW or fully OWNERDRAW but it's a bit complicated.

Edited by Zedna
Posted

Can you show an example for (vertically) scrollable table with many rows please?

Thanks.

ok, this is a quick example of how you might incorporate a scrollbar:

#include "Table.au3"

Opt("GUIOnEventMode", 1)
;----- GUI (Double Buffered) -----
$GUI = GUICreate("", 450, 450, -1, -1, -1, 0x2000000)

;----- Make sure GUI exists BEFORE creating Tables -----
GUISetState()

;----- Lock GUI until tables drawn -----
GUISetState(@SW_LOCK)

;----- array of data -----
Global $aData[21][4] = [["","","",""], _
["a",1,"abc","def1"], _
["b",2,"abcc","de2f"], _
["c",3,"abccc","de3f"], _
["d",4,"abcc","de4f"], _
["e",5,"abbc","de5f"], _
["f",6,"abbbc","d6ef"], _
["g",7,"abbbbc","7def"], _
["h",8,"abcd","de8f"], _
["i",9,"abcdd","d9ef"], _
["j",10,"abce","d0ef"], _
["k",11,"abcf","de-f"], _
["l",12,"abcg","de4f"], _
["m",13,"abch","de5f"], _
["n",14,"abcj","de3f"], _
["o",15,"abck","de2f"], _
["p",16,"abcl","de3f"], _
["q",17,"abctr","d4ef"], _
["r",18,"abct","de5f"], _
["s",19,"abcr","de6f"], _
["t",20,"abce","de87f"]]

GUICtrlCreateButton(""-20,-20,10,10)

Global $TableHeader = _GUICtrlTable_Create(25, 27-14, 55, 13, 1, 4, 1)
_GUICtrlTable_Set_ColumnWidth($TableHeader, 2, 20)
_GUICtrlTable_Set_Justify_All($TableHeader, 1, 1)
_GUICtrlTable_Set_TextFont_Row($TableHeader, 1, 8.5, 800)
_GUICtrlTable_Set_CellColor_Row($TableHeader, 1, 0xEEEEEE)
_GUICtrlTable_Set_Text_Row($TableHeader, 1, "Control|ID|Window|Staus")

Global $Table1 = _GUICtrlTable_Create(25, 27, 55, 13, 4, 4, 1)
_GUICtrlTable_Set_ColumnWidth($Table1, 2, 20)
_GUICtrlTable_Set_Justify_All($Table1, 1, 1)

Global $hSlider = GUICtrlCreateSlider(214,22,15,65,0x0010 + 0x0002)
GUICtrlSetLimit (-1,17,1)



GUISetState(@SW_UNLOCK)

;----- Loop -----
While 1
    Sleep(50)
    _Scroll()
WEnd



Func _Scroll()

    $iPos = GUICtrlRead($hSlider)

    Dim $aTemp[5][5]

    For $i = 1 to 4
        For $j = 1 to 4
            $aTemp[$i][$j] = $aData[$i + $iPos - 1][$j - 1]
        Next
    Next

    _GUICtrlTable_Set_Text_FromArray($Table1, $aTemp)

EndFunc

I might look at incorporating it after all. Might. :)

- Table UDF - create simple data tables - Line Graph UDF GDI+ - quickly create simple line graphs with x and y axes (uses GDI+ with double buffer) - Line Graph UDF - quickly create simple line graphs with x and y axes (uses AI native graphic control) - Barcode Generator Code 128 B C - Create the 1/0 code for barcodes. - WebCam as BarCode Reader - use your webcam to read barcodes - Stereograms!!! - make your own stereograms in AutoIT - Ziggurat Gaussian Distribution RNG - generate random numbers based on normal/gaussian distribution - Box-Muller Gaussian Distribution RNG - generate random numbers based on normal/gaussian distribution - Elastic Radio Buttons - faux-gravity effects in AutoIT (from javascript)- Morse Code Generator - Generate morse code by tapping your spacebar!
  • 3 weeks later...
Posted (edited)

Hey,

I worked a bit with your udf ,while making a project for school. Then I got the idea to show that someone has clicked a cell.... like in Excel or Open Office. So I made a little additional funtion for the udf. I hope it works fine, although there are still some bugs and it is maybe not the best way of solving the problem, but I think it's rather fast ( needs 10-20 milliseconds on my pc )

Here's the Function

Global $guictrltablemarkfoundindex1 = 0
;;===============================================================================
;
; Function Name:   _GUICtrlTable_Set_Selected
; Description:     Sets the cell color of the selected Cell(+ Row/Column)
; Parameter(s):    $GUI - handle returned by GUICreate
;                  $array - array returned by _GUICtrlCreate_Table
;                  $oldcolor - old cellcolor of the table (Default: 0xFFFFFF = white)
;                  $color - color the marked cells should be (Default: 0xAABBCC)
;                  $mrow - Default 0
;                          If set to 1, the row of the clicked cell will be marked also
;                  $mcolumn - Default 0
;                          If set to 1, the column of the clicked cell will be marked also
; Requirement(s):  Misc.au3
;                  _GuiCtrlTable.au3 by Andybiochem (http://www.autoitscript.com/forum/index.php?showtopic=105814&st=0&p=748420&hl=table)
; Return Value(s): None yet
; Author(s):       Benedikt Boesen (BennyBB) , see 'Requirement' authors
; To Do's/Known Bugs: - If Cell/Row/Column/Table has Border, it gets deleted by the Func for the clicked cell, by clicking another cell
;             - Return values
;                     - When scrolling the table, the selected cell does change
;
;===============================================================================
Func _GUICtrlTable_Set_Selected($GUI, $array, $oldcolor = 0xFFFFFF, $color = 0xAABBCC, $mrow = 0, $mcolumn = 0)
    If $oldcolor = -1 Then $oldcolor= 0xFFFFFF
    If $color = -1 Then $color = 0xAABBCC

        ; check whether mouse was clicked
    If _IsPressed(01) Then
        ;$timer = TimerInit()
        $mousepos = MouseGetPos()
        $guipos = WinGetPos($GUI)
        $hctrl1 = ControlGetHandle($GUI, "", $array[1][1])
        $pos1 = WinGetPos($hctrl1)
        $hctrl2 = ControlGetHandle($GUI, "", $array[UBound($array, 1) - 1][UBound($array, 2) - 1])
        $pos2 = WinGetPos($hctrl2)

        $tableleft = $pos1[0]
        $tabletop = $pos1[1]
        $tablebottom = $pos2[1] + $pos2[3]
        $tableright = $pos2[0] + $pos2[2]

        ;check whether mouseclick was NOT in the table area
        If $mousepos[0] < $tableleft Or $mousepos[0] > $tableright _
        Or $mousepos[1] < $tabletop Or $mousepos[1] > $tablebottom Then
            ;Nothing



            ;check whether mouseclick was in the table area
        Else
            ;set old cell color
            For $i = 1 To UBound($array, 1) - 1 Step 1
                For $l = 1 To UBound($array, 2) - 1 Step 1
                    GUICtrlSetBkColor($array[$i][$l], $oldcolor)
                Next
            Next
            ;delete existing border, if border made
            If $guictrltablemarkfoundindex1 <> 0 Then
                _GuiCtrlTable_Set_Border_Cell($array, $guictrltablemarkfoundindex1, $guictrltablemarkfoundindex2, 0)
            EndIf

            ;Variables dec
            Local $foundindex[3] , $found = 0 , $labelarray[1][1][4]

            ;Create Array with position etc of the labels
            For $i = 1 To UBound($array, 1) - 1 Step 1
                For $l = 1 To UBound($array, 2) - 1 Step 1
                    ReDim $labelarray[$i + 1][$l + 1][4]
                    $hctrl = ControlGetHandle($GUI, "", $array[$i][$l])
                    $pos = WinGetPos($hctrl)
                    $labelarray[$i][$l][0] = $pos[0] ;left
                    $labelarray[$i][$l][1] = $pos[1] ;top
                    $labelarray[$i][$l][2] = $pos[0] + $pos[2] ; right
                    $labelarray[$i][$l][3] = $pos[1] + $pos[3] ; bottom

                    ;If x and y pos of the mouse fits to the labels position
                    If $mousepos[0] > $labelarray[$i][$l][0] And $mousepos[0] < $labelarray[$i][$l][2] _
                    And $mousepos[1] > $labelarray[$i][$l][1] And $mousepos[1] < $labelarray[$i][$l][3] Then
                        $found = $array[$i][$l]
                        $foundindex[1] = $i
                        Global $guictrltablemarkfoundindex1 = $i
                        Global $guictrltablemarkfoundindex2 = $l
                        $foundindex[2] = $l
                    EndIf
                Next
            Next


            ;Set cell color of the row/column
            If $mrow = 1 Or $mcolumn = 1 Then
                $rcmin = $array[1][1] - 1
                If $mcolumn = 1 Then
                    For $i = 1 To UBound($array, 1) - 1 Step 1
                        GUICtrlSetBkColor($array[$i][$foundindex[2]], $color)
                    Next
                EndIf
                If $mrow = 1 Then
                    For $i = 1 To UBound($array, 2) - 1 Step 1
                        GUICtrlSetBkColor($array[$foundindex[1]][$i], $color)
                    Next
                EndIf
            EndIf

            ;set border
            If $found <> 0 Then
                GUICtrlSetBkColor($found, $color)
                _GuiCtrlTable_Set_Border_Cell($array, $foundindex[1], $foundindex[2], 15)
            ElseIf $found = 0 Then
                ;@error = 1
            EndIf
            ;$time = TimerDiff($timer)
            ;ConsoleWrite($time & @CRLF)
        EndIf
    EndIf
EndFunc   ;==>_GUICtrlTable_Set_Selected

Here's a moified example :

#include <_GUICtrlTable.au3>

Opt("GUIOnEventMode", 1)
;----- GUI (Double Buffered) -----
$GUI = GUICreate("", 450, 450, -1, -1, -1, 0x2000000)

;----- Make sure GUI exists BEFORE creating Tables -----
GUISetState()

;----- Lock GUI until tables drawn -----
GUISetState(@SW_LOCK)

;----- array of data -----
Global $aData[21][4] = [["","","",""], _
["a",1,"abc","def1"], _
["b",2,"abcc","de2f"], _
["c",3,"abccc","de3f"], _
["d",4,"abcc","de4f"], _
["e",5,"abbc","de5f"], _
["f",6,"abbbc","d6ef"], _
["g",7,"abbbbc","7def"], _
["h",8,"abcd","de8f"], _
["i",9,"abcdd","d9ef"], _
["j",10,"abce","d0ef"], _
["k",11,"abcf","de-f"], _
["l",12,"abcg","de4f"], _
["m",13,"abch","de5f"], _
["n",14,"abcj","de3f"], _
["o",15,"abck","de2f"], _
["p",16,"abcl","de3f"], _
["q",17,"abctr","d4ef"], _
["r",18,"abct","de5f"], _
["s",19,"abcr","de6f"], _
["t",20,"abce","de87f"]]

GUICtrlCreateButton(""-20,-20,10,10)

Global $TableHeader = _GUICtrlTable_Create(25, 27-14, 55, 13, 1, 4, 1)
_GUICtrlTable_Set_ColumnWidth($TableHeader, 2, 20)
_GUICtrlTable_Set_Justify_All($TableHeader, 1, 1)
_GUICtrlTable_Set_TextFont_Row($TableHeader, 1, 8.5, 800)
_GUICtrlTable_Set_CellColor_Row($TableHeader, 1, 0xEEEEEE)
_GUICtrlTable_Set_Text_Row($TableHeader, 1, "Control|ID|Window|Staus")

Global $Table1 = _GUICtrlTable_Create(25, 27, 55, 13, 4, 4, 1)
_GUICtrlTable_Set_ColumnWidth($Table1, 2, 20)
_GUICtrlTable_Set_Justify_All($Table1, 1, 1)

Global $hSlider = GUICtrlCreateSlider(214,22,15,65,0x0010 + 0x0002)
GUICtrlSetLimit (-1,17,1)



GUISetState(@SW_UNLOCK)

;----- Loop -----
While 1
    Sleep(50)
    _Scroll()
    If _IsPressed(01) Then
        _GUICtrlTable_Set_Selected($GUI, $Table1, 0xFFFFFF, 0xAABBCC, 1, 0)
    EndIf
WEnd



Func _Scroll()

    $iPos = GUICtrlRead($hSlider)

    Dim $aTemp[5][5]

    For $i = 1 to 4
        For $j = 1 to 4
            $aTemp[$i][$j] = $aData[$i + $iPos - 1][$j - 1]
        Next
    Next

    _GUICtrlTable_Set_Text_FromArray($Table1, $aTemp)

EndFunc

BennyBB

Edit : _Array2DSearch isn't required -.-

Edited by BennyBB
  • 4 months later...
Posted

Great!

Thanks for sharing! :(

Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.

Spoiler

What is the Secret Key? Life is like a Donut

If I put effort into communication, I expect you to read properly & fully, or just not comment.
Ignoring those who try to divert conversation with irrelevancies.
If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it.
I'm only big and bad, to those who have an over-active imagination.

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage)

userbar.png

Posted

I've not even looked at the script, just the function list and the screenshot. Very useful, got some ideas like scrollbars, i'll let you know after playing with it. Any limitations on the number of rows/columns?

Regards,

IVAN

I think the first limitation you'll run into is AutoIT's limit of 65532 GUI controls. E.g. you couldn't create a table of 256x256 cells.

There's an example of a sort-of scroll bar above, but you're welcome to make any improvements. Post it here if you're successful, I had a bash but it was too messy in the end.

- Table UDF - create simple data tables - Line Graph UDF GDI+ - quickly create simple line graphs with x and y axes (uses GDI+ with double buffer) - Line Graph UDF - quickly create simple line graphs with x and y axes (uses AI native graphic control) - Barcode Generator Code 128 B C - Create the 1/0 code for barcodes. - WebCam as BarCode Reader - use your webcam to read barcodes - Stereograms!!! - make your own stereograms in AutoIT - Ziggurat Gaussian Distribution RNG - generate random numbers based on normal/gaussian distribution - Box-Muller Gaussian Distribution RNG - generate random numbers based on normal/gaussian distribution - Elastic Radio Buttons - faux-gravity effects in AutoIT (from javascript)- Morse Code Generator - Generate morse code by tapping your spacebar!
  • 6 months later...
Posted

Hi,

Your table looks great. Implemented it, then tried to use draw border functionality and got error "Subscript used with non-Array variable." I noticed that it is due to ControlGetPos() not getting the position of a cell control and rather erroring instead. Is anyone else having this issue? ControlGetPos() doesn't pass any extra variables except Control ID. Is this usually a problem? I confirmed with Au3Info.exe that the control ID was correct, but even manually trying to identify the control without calling the draw border function doesn't appear to work.

Quick example:

$tableArray = _GUICtrlTable_Create(5, 25, 100, 20, $_vCells, $_hCells+1)

msgbox(0,"",_GUICtrlTable_CellGetID($tableArray,2,2))

get ID returns value: 30

local $temp

$temp = ControlGetPos("[CLASS:Static]","",30)

msgbox(0,"",$temp[0] & @CRLF & $temp[1])

ControlGetPos spits out @error = 1, and subsequently referencing temp[0] and temp[1] result in above array error.

Anyone?

Thanks!

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...