We could add this as an additional Xbase++ compatibility, but the existing one is good as a native Harbour call.
Such functions as this would be a very good candidate for inclusion in xpp lib in contrib, along with the necessary headers. Brgds, Viktor On Tue, Jun 16, 2009 at 4:16 PM, Pritpal Bedi<bediprit...@hotmail.com> wrote: > > Hello Przemek > > > Przemyslaw Czerpak-2 wrote: >> >> I just wanted to suggest you something like that. >> I'll add HB_WALIST()/HB_WAEVAL() functions which should help in >> writing function to iterate workareas. >> > > If you are into that: > > Xbase++ functions to this effect: > > > Syntax > > WorkSpaceEval( <bAreaBlock>, [<nWorkSpace>] ) --> nProcessed > > Parameters > > <bAreaBlock> > > The argument <bAreaBlock> must be a code block. It is evaluated in all used > work areas of the work space specified with <nWorkSpace> . > > <nWorkSpace> > > Constants from DMLB.CH must be used for the optional argument <nWorkSpace> . > It specifies the work space in which WorkSpaceEval() is executed. The > following table lists all valid constants: > > Constants to specify the work space > > Constant Description > > DB_ZEROSPACE WorkSpaceEval() is executed in the Zero space > DB_WORKSPACE *) WorkSpaceEval() is executed in the current work space > > *) default > > Return > > The function returns a numeric value that indicates the number of work areas > where the code block <bAreaBlock> is evaluated. > > Description > > The function WorkSpaceEval() evaluates a code block in all used work areas > of a work space. It is used, for example, to set, save or restore the > environment within all work areas. If DB_ZEROSPACE is specified, information > about work areas pending in the Zero space can be retrieved, which normally > is not possible without a prior call to DbRelease(). > > Example - 1 > > // Determine which work areas are used > > // In the example, the function UsedAreas() is programmed. It > // returns an array containing the numbers of all used work areas. > > FUNCTION UsedAreas() > LOCAL aUsed := {} > > WorkSpaceEval( {|| AAdd( aUsed, Select() ) } ) > > > RETURN aUsed > > Example - 2 > > // Save the current state of all work areas > > // The example demonstrates how to save and restore the current > // state of all work areas. The user-defined function SaveWorkSpace() > // saves and RestWorkSpace() restores the state of the work areas. > > ********************** > FUNCTION SaveWorkSpace > LOCAL aSaved := {} > > WorkSpaceEval( {|| AAdd( aSaved, SaveWorkarea() ) } ) > > RETURN { aSaved, Select() } > > ********************* > > FUNCTION SaveWorkarea > RETURN { ; > { Select() , {|x| DbSelectArea(x)} }, ; > { OrdNumber(), {|x| OrdSetFocus(x) } }, ; > { Recno() , {|x| Dbgoto(x) } } } > > > ******************************** > FUNCTION RestWorkSpace( aSaved ) > > AEval( aSaved[1] , ; > {|a| AEval( a, {|aa| Eval( aa[2], aa[1] ) } ) } ) > > RETURN DbSelectArea( aSaved[2] ) > > ************************************************************* > > Syntax > > WorkSpaceList( [<nWorkSpace>] ) --> aAliasNames > > Parameters > > <nWorkSpace> > > Constants from DMLB.CH must be used for the optional argument <nWorkSpace> . > It specifies the work space in which WorkSpaceList() is executed. The > following table lists all valid constants: > > Constants to specify the work space > > Constant Description > > DB_ZEROSPACE WorkSpaceList() is executed in the Zero space > DB_WORKSPACE *) WorkSpaceList() is executed in the current work space > > *) default > > Return > > The function returns a one-dimensional array. It contains character strings > with the alias names of all used work areas. If no work area is used, an > empty array is returned. > > Description > > With the function WorkSpaceList(), the number of work areas used at a given > time can be determined as well as a list of all alias names in use. The > function is a specialized form of WorkSpaceEval(). > > ********************************************* > > It will be nice if you used above namespace. > We will be more near to Xbase++. > > Regards > Pritpal Bedi > > -- > View this message in context: > http://www.nabble.com/MT-workareas-cloning-tp24050058p24055313.html > Sent from the Harbour - Dev mailing list archive at Nabble.com. > > _______________________________________________ > Harbour mailing list > Harbour@harbour-project.org > http://lists.harbour-project.org/mailman/listinfo/harbour > _______________________________________________ Harbour mailing list Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour