' brian- ' sorry i didn't dig this out earlier for you. ' don't know if it's better or worse than what you've got, ' but it's always worked ok for me. ' -bowerbird ' CLEAR LOCAL FN AddResource (resHndl&, resType&, resID, resNm$) LONG IF FN GETHANDLESIZE (resHndl&) <> 0 oldResH& = FN GET1RESOURCE (resType&, resID) IF oldResH& THEN CALL RMVERESOURCE (oldResH&) CALL ADDRESOURCE (resHndl&, resType&, resID, resNm$) CALL WRITERESOURCE (resHndl&) CALL DETACHRESOURCE (resHndl&) END IF END FN : REM AddResource CLEAR LOCAL FN SaveTEXTStyl (efID, resID) GET FIELD efHndl&, efID LONG IF efHndl& = 0 PRINT "error: getting edit field text"; STOP XELSE ' get text & styl sizes resSize% = FN GETHANDLESIZE (efHndl&) txtSize% = efHndl&..top% stylSize% = resSize% - txtSize% - 2 ' save TEXT resource resHndl& = FN NEWHANDLE (txtSize%) LONG IF resHndl& = 0 AND SYSERROR <> _noErr PRINT "error creating 'text' resource"; STOP XELSE BLOCKMOVE [efHndl&] + 2, [resHndl&], txtSize% FN AddResource (resHndl&, _"TEXT", resID, "") ' now save styl resource osErr = FN SETHANDLESIZE (resHndl&, stylSize%) BLOCKMOVE [efHndl&] + txtSize% + 2, [resHndl&], stylSize% FN AddResource (resHndl&, _"styl", resID, "") DEF DISPOSEH (resHndl&) END IF KILL FIELD efHndl& END IF END FN : REM SaveTEXTStyl