Glenn,
That fontmetric() call I posted tells you the DPI setting. Also in the code you posted below it would be much easier to just use the grid.Error() instead.
If you don't want the user to see the object resize set thisform.LockScreen = .t., change stuff, then reset it back to .f.
>I needed my grid.headheight = 0 and my height = 20 both of which are "illegal" values. I reset them to smallest "legal" values and then change the grid.visible = .F.
>
>grid.init
>
>DODEFAULT()
>
>LOCAL lcError, llError
>lcError = ''
>llError = .F.
>
>lcError = ON('ERROR')
>
>ON ERROR llError = .T.
>
>WITH This
> .HeaderHeight = 0
> .Height = 20
> .Top = 10
> .Visible = .T.
>ENDWITH
>
>IF EMPTY(lcError)
> ON ERROR
>ELSE
> ON ERROR &lcError
>ENDIF
>
>
>This is not pretty but it works... additionally resizing the grid is not necessarily a clean appearance on the screen. I wonder if anyone has a sample of the WIN API call to get the value for the windows fonts and I could use that to build this functionality into the base class. Trapping this error and ignoring seems to cause no problems....so far
>
>Thanks,
>
>Mike