>...anyone know how I get what I want here? I'm thinking the iCase might be bad as I've never used one before...
I wrote this several times, and I'll write it again:
Any dynamic* expression is eval()'d for every visible cell on every refresh of the grid. There's always a chance you have an user with a slow machine, outdated video driver, or that you have a debugger open. Having a long dynamic* expression is then a hindrance.
My preferred technique to get around this is to simplify the expression to the max: a single field. For colors, an integer field; for logicals (like dynamicfontbold and such), a logical. Then pre-fill that field with your values - icase or whatever you have - and refresh it only when the data change (filling the cursor, validation upon data entry). The difference in speed is drastic - back in the days of VFP6 and a 200MHz machine my grids went from sluggish to instantaneous.