# GetTableCellRangeVals

int GetTableCellRangeVals (int panelHandle, int controlID, Rect cellRange, void *valueArray, int direction);

## Purpose

Obtains the current values of a table control cell range.

To use this function, you must specify a cell range in which all cells are of the same cell type. If the cell type is VAL_CELL_NUMERIC, all cells in the range also must have the same data type.

## Parameters

Input
Name | Type | Description
panelHandle | integer | Specifier for a particular panel that is currently in memory. You obtain this handle from LoadPanel, NewPanel, or DuplicatePanel.
controlID | integer | The defined constant, located in the .uir header file, that you assigned to the control in the User Interface Editor, or the ID returned by NewCtrl or DuplicateCtrl.
cellRange | Rect | A Rect structure specifying the cell range from which you want to obtain the values. To use this function, you must specify a cell range consisting of a homogeneous cell type. If the cell type is VAL_CELL_NUMERIC, all cells in the range must also share an identical data type. The Rect structure is defined as follows: typedef struct { int top; int left; int height; int width; } Rect; Pass the one-based row and column indices of the first cell in the range as the top and left fields of the structure, respectively. Pass the number of columns in the range as the width field of the structure, and the number of rows in the range as the height field of the structure. You can create a Rect without having to declare a variable by using the following function: Rect MakeRect (int top, int left, int height, int width); Example GetTableCellRangeVals (panelHandle, controlID, MakeRect (2, 3, 5, 5), valueArray, direction);
direction | integer | The order in which each cell value is stored in valueArray. If you pass VAL_ROW_MAJOR, the function writes the values of all the cells in a given row from left to right, then it writes the values of the row immediately below, continuing until there are no rows left in the cell range. If you pass VAL_COLUMN_MAJOR, the function writes the values of all the cells in a given column from top to bottom, then it writes the values of the column to its immediate right, continuing until there are no columns left in the cell range.
Output
Name | Type | Description
valueArray | any array | An array for the function to write the cell values. The array must be large enough to contain the values for the entire cell range. The number of bytes required for each cell depends on the cell type and data type (for numeric cells). The values that this function returns from each cell depend on the cell type. If the cell type is VAL_CELL_PICTURE, the function returns the bitmap stored in the cell, or zero if there is no bitmap. When you no longer need the bitmaps, free them using DiscardBitmap. When allocating the array, assume that each element requires four bytes of storage. If the cell type is VAL_CELL_STRING, VAL_CELL_RING, VAL_CELL_COMBO_BOX, or VAL_CELL_BUTTON, the function returns a pointer to the NUL-terminated string corresponding to the cell. Each individual string is allocated inside the function. When you no longer need the strings, free them by passing this array to FreeTableValStrings. When allocating the array, assume that each element requires four bytes of storage. If the cell type is VAL_CELL_NUMERIC, the function returns the numeric value of the cell. When allocating the array, you must be mindful of the data type of the cell range, and assume that each element requires the number of bytes corresponding to that data type.

## Return Value

Name | Type | Description
status | integer | Return value indicating whether the function was successful. A negative number indicates that an error occurred.
Code | Error Message String
xx | Success