/* $DOC$ $NAME$ ft_ArEdit() $CATEGORY$ Array $ONELINER$ 2 dimensional array editing function using TBrowse $SYNTAX$ ft_ArEdit( , , , , , ; , , [, ] ) -> xElement $ARGUMENTS$ , , , are coordinates for TBrowse is name of 2 dimensional to array edit is pointer for element in array is array of column headings is array of blocks describing each array element [ ] is get editing function for handling individual elements $RETURNS$ Value of element positioned on when exit ft_ArEdit() The type of this value depends on what is displayed. $DESCRIPTION$ This function allows you to position yourself in an array, add and delete rows with the and keys, and pass a UDF with information to edit the individual gets. $EXAMPLES$ ft_ArEdit( 3, 5, 18, 75, ar, @nElem, aHeadings, aBlocks ) // This example will allow you to browse a 2 dimensional array // But you can't edit it since there is no GetBlock UDF // It allows the user to hit ENTER to select an element or ESC to // return 0 // This second example shows how to edit a 2 dimensional array // as might be done to edit an invoice LOCAL i, ar[ 3, 26 ], aBlocks[ 3 ], aHeadings[ 3 ] LOCAL nElem := 1, bGetFunc // Set up two dimensional array "ar" FOR i := 1 TO 26 ar[ 1, i ] := i // 1 -> 26 Numeric ar[ 2, i ] := Chr( Asc( "A" ) + i - 1 ) // "A" -> "Z" Character ar[ 3, i ] := Chr( Asc( "Z" ) - i + 1 ) // "Z" -> "A" Character NEXT // SET UP aHeadings Array for column headings aHeadings := { "Numbers", "Letters", "Reverse" } // Need to set up individual array blocks for each TBrowse column aBlocks[ 1 ] := {|| Str( ar[ 1, nElem ], 2 ) } // prevent default 10 spaces aBlocks[ 2 ] := {|| ar[ 2, nElem ] } aBlocks[ 3 ] := {|| ar[ 3, nElem ] } // set up TestGet() as the passed Get Function so ft_ArEdit() knows how // to edit the individual gets. bGetFunc := {| b, ar, nDim, nElem | TestGet( b, ar, nDim, nElem ) } SetColor( "N/W, W/N, , , W/N" ) CLS ft_ArEdit( 3, 5, 18, 75, ar, @nElem, aHeadings, aBlocks, bGetFunc ) $END$ */