WITH &gActiveForm .grdItems LOCAL grdAlias PUBLIC x .recordsource = gridSource DO case CASE UPPER(gridSource) == UPPER('"curPoItems"') *** cursor created when the PO is selected from cboPO list on add SELECT curPoItems grdAlias = "curPoItems" CASE UPPER(gridSource) == UPPER('"curInvItems"') *** cursor created to display existing invoice line items for a given Invoice when add New is selected SELECT curInvItems grdAlias = "curInvItems" OTHERWISE .linkMaster = "apInvMast" .childorder = "invKey" && invNum grdAlias = "apInvItems" ENDCASE DO setGridGlobalProperties IN GridProcs .deleteMark = .F. x = 0&& grid index x=x+1 IF grdAlias = "curPoItems" .columns(x).controlSource = "&grdAlias .poLine" && field ID ELSE .columns(x).controlSource = "&grdAlias .invLine" && field ID ENDIF .columns(x).header1.caption = DBGETPROP("apInvItems.invLine","FIELD","CAPTION") x = x+1 .columns(x).width = 80 .columns(x).controlSource = "&grdAlias .shopOrder" .columns(x).header1.caption = DBGETPROP("apInvItems.shopOrder","FIELD","CAPTION") x = x+1 .columns(x).readonly = .F. .columns(x).width = 100 .columns(x).controlSource = "&grdAlias .authNum" .columns(x).header1.caption = DBGETPROP("apInvItems.authNum","FIELD","CAPTION") . . . ENDWITH