Code: Select all
****************************************************************************
* TEST VIRTUAL GRID
****************************************************************************
#include "hmg.ch"
FUNCTION Main()
PRIVATE aMyData := {}
PRIVATE bColor := { || IIF( This.CellRowIndex / 2 == INT( This.CellRowIndex / 2 ) , { 222,222,222 } , { 255,255,255 } ) }
DEFINE WINDOW Win_Grid ;
AT 0,0 ;
WIDTH 450 ;
HEIGHT 400 ;
TITLE "Test Virtual Grid" ;
MAIN
DEFINE GRID My_Grid
ROW 10
COL 10
WIDTH 400
HEIGHT 330
HEADERS { "Number", "Date", "String" }
WIDTHS { 60, 100, 140 }
DYNAMICBACKCOLOR { bColor , bColor , bColor }
ITEMS aMyData
ITEMCOUNT LEN( aMyData )
*---------------------------------------------------------------------------
* Parameters for Virtual Grid
*---------------------------------------------------------------------------
VIRTUAL .T.
ONQUERYDATA Grid_Query()
END GRID
END WINDOW
*---------------------------------------------------------------------------
* Prepare Mounting Grid
*---------------------------------------------------------------------------
Create_Data()
CENTER WINDOW Win_Grid
ACTIVATE WINDOW Win_Grid
Return
****************************************************************************
STATIC FUNCTION Create_Data()
****************************************************************************
LOCAL x
aMyData := {}
FOR x = 1 TO 100
AADD( aMyData, { x, DATE() - x, "TESTE" } )
NEXT x
*---------------------------------------------------------------------------
* Entering Data on the Grid
*---------------------------------------------------------------------------
DECLARE WINDOW Win_Grid
Win_Grid.My_Grid.DeleteAllItems
IF LEN( aMyData ) > 0
*---------------------------------------------------------------------------
* Sets the current position of the item in the grid
*---------------------------------------------------------------------------
Win_Grid.My_Grid.ItemCount := LEN( aMyData )
Win_Grid.My_Grid.Value := 1
Win_Grid.My_Grid.Refresh
Win_Grid.My_Grid.SetFocus
ENDIF
RETURN NIL
****************************************************************************
FUNCTION Grid_Query()
****************************************************************************
LOCAL nRow_ := This.QueryRowIndex
LOCAL nCol_ := This.QueryColIndex
This.QueryData := Convert2Sstring( aMyData[ nRow_, nCol_ ] )
RETURN NIL
****************************************************************************
FUNCTION Convert2Sstring( xData_ )
* converting to string
****************************************************************************
LOCAL xReturn_ := ""
*---------------------------------------------------------------------------
* Character
*---------------------------------------------------------------------------
IF VALTYPE( xData_ ) = "C"
xReturn_ := xData_
*---------------------------------------------------------------------------
* Numerical
*---------------------------------------------------------------------------
ELSEIF VALTYPE( xData_ ) == "N"
xReturn_ := LTRIM( STR( xData_ ) )
*---------------------------------------------------------------------------
* Date
*---------------------------------------------------------------------------
ELSEIF VALTYPE( xData_ ) == "D"
xReturn_ := DTOC( xData_ )
*---------------------------------------------------------------------------
* The data can not be converted
*---------------------------------------------------------------------------
ELSE
xReturn_ := ""
ENDIF
RETURN xReturn_