lnUsedWkAreas = AUSED(laWkAreas)
laWkAreas will be an 2 Dimensional array where,
laWkAreas[x,1] is the table/cursor name and
laWkAreas[x,2] is the workarea that it is open in
example:
[tt]
* Note: there are 32767 selectable work areas as of VFP 6.0
LOCAL lnWkAreas
LOCAL ARRAY laWkAreas[1]
lnWkAreas = AUSED(laWkAreas)
IF lnWkAreas > 0
* Note: Cursors can have names up to 128 chars
CREATE CURSOR OpenWkAreas (tablename c(128), wkarea N(5))
FOR i = 1 TO lnWkAreas
INSERT INTO OpenWkAreas ;
(tablename,wkarea) ;
VALUES ;
(laWkAreas[i,1],laWkAreas[i,2])
NEXT
LOCAL oForm
oForm = CREATEOBJECT("MyForm"

oForm.SHOW()
READ EVENTS
ENDIF
DEFINE CLASS MyForm AS FORM
DOCREATE = .T.
AUTOCENTER = .T.
CAPTION = "Open tables and work areas"
ADD OBJECT grdWkAreas AS GRID WITH;
TOP = 10, ;
LEFT = 10, ;
HEIGHT = THIS.HEIGHT - 20, ;
WIDTH = THIS.WIDTH - 30
PROCEDURE DESTROY
CLEAR EVENTS
ENDPROC
PROCEDURE grdWkAreas.INIT
* Calculate column widths
* based upon field value widths
LOCAL lnMaxColWidth, i
lnMaxColWidth = 0
GO TOP IN (THIS.RECORDSOURCE)
SCAN
IF EVAL( ;
THIS.COLUMNS(1).text1.CONTROLSOURCE) <> ;
THIS.RECORDSOURCE
lnMaxColWidth = ;
MAX(lnMaxColWidth, ;
LEN(ALLT(EVAL(THIS.COLUMNS(1).text1.CONTROLSOURCE))))
ENDIF
ENDSCAN
THIS.COLUMNS(1).WIDTH = ;
MAX(LEN(THIS.COLUMNS(1).header1.CAPTION),lnMaxColWidth) * 10
ENDPROC
ENDDEFINE
[/tt]
Darrell
'We all must do the hard bits so when we get bit we know where to bite'
