@ 0,0 LISTBOX oBrw FIELDS ;
oRs:Fields("novellid"):Value,;
substr( trim(oRs:Fields("lname"):Value)+", "+oRs:Fields("fname"):Value+SPACE(15),1,30),;
oRs:Fields("progid"):Value,;
oRs:Fields("read"):Value,;
oRs:Fields("write"):Value,;
oRs:Fields("super"):Value,;
oRs:Fields("salaried"):Value,;
oRs:Fields("empstat"):Value,;
oRs:Fields("defloc"):Value,;
oRs:Fields("defprg"):Value,;
oRs:Fields("defact"):Value;
SIZES 90,195,90,31,31,31,31,31,40,40,40;
HEADERS "UserID", ;
"Name",;
"ProgID",;
"Rd",;
"Ed",;
"Sup",;
"Sal",;
"St",;
"Loc",;
"Prog",;
"Act";
ON DBLCLICK( _EmpView( "V", oRs ) );
UPDATE
oBrw:bLogicLen := { || oRs:RecordCount }
oBrw:bGoTop := { || oRs:MoveFirst() }
oBrw:bGoBottom := { || oRs:MoveLast() }
oBrw:bSkip := { | nSkip | Skipper( oRs, nSkip ) } // <---- skipper call
oBrw:cAlias := "ARRAY"
//-------------------------------
STATIC FUNCTION SKIPPER( oRsx, nSkip )
LOCAL nRec := oRsx:AbsolutePosition
oRsx:Move( nSkip )
IF oRsx:EOF; oRsx:MoveLast(); ENDIF
IF oRsx:BOF; oRsx:MoveFirst(); ENDIF
RETURN( oRsx:AbsolutePosition - nRec )