_screen.AddProperty("PrintScr") >? PEMSTATUS(_Screen,'Printscr',4) && returned .T. >? PEMSTATUS(_Screen,'xPrintscr',4) && got error, as you did (which does seem like a bug, doncha think?) > > > >>I if try: ? PEMSTATUS(_Screen,'Printscr',4) >> >>it returns: function, argument value, type, or count is invalid... >> >>Hmmmmm, >>interesting. 5 returns the right values (.t. if the property exists), but it clears the screen. Wonder why it doesn't for everyone. This happens if I run it immediately from starting VFP after typing 'dir' from the command window to draw something on the screen. Of course, I start out with screen colors like gr+/r,n/w etc and I am changing screen colors in the screenset procedure and setting them back in the screenrset procedure... >> >>>Well I'll try a coupla things... >>> >>>1) Maybe PEMSTATUS should be checking 4 instead of 5? >>>--- You could really get by without the PEMSTATUS I think. >>>2) Maybe ADDPROPERTY() would make a difference? >>> >>>good luck >>> >>> >>>>Anyone? My goal is to restore the original screen that was saved in the screenset procedure. >>>> >>>>:o) >>>> >>>>>IF I have information on the screen (even issuing dir from the command window to draw on the screen) and I run this code: >>>>><PRE> >>>>>*Screenset >>>>>#IF "VISUAL" $ UPPER(VERSION()) >>>>> IF !PEMSTATUS(_Screen,'Printscr',5) >>>>> _Screen.AddProperty('Printscr') >>>>> ENDIF >>>>> ACTIVATE SCREEN >>>>> SAVE SCREEN TO _Screen.Printscr >>>>> _screen.lockscreen=.t. >>>>> _Screen.BackColor = RGB(255,255,255) >>>>> _Screen.ForeColor = RGB(0,0,0) >>>>> _Screen.FillColor = RGB(255,255,255) >>>>> _screen.refresh >>>>>#ENDIF >>>>> >>>>>RETURN >>>>>>>>>>
>>>>>*screenrset >>>>>#IF 'VISUAL' $ UPPER(VERSION()) >>>>> >>>>> DECLARE Sleep IN Win32API; >>>>> INTEGER nMilliseconds >>>>> = Sleep(100) && Wait a 1/10th of a second. >>>>> >>>>> * TCH 7/10/2002 Added >>>>> >>>>> WITH _screen >>>>> .fontname=glFontName >>>>> .fontsize=glFontSize >>>>> .fontunderline=.f. >>>>> .fontbold=.f. >>>>> .BackColor = cOldbackcolor >>>>> .ForeColor = cOldforecolor >>>>> .FillColor = cOldfillcolor >>>>> ENDWITH >>>>> >>>>> _SCREEN.lockscreen=.F. >>>>> >>>>> ACTIVATE SCREEN >>>>> IF PEMSTATUS(_Screen,'Printscr',5) >>>>> RESTORE SCREEN FROM _Screen.printscr >>>>> = Sleep(100) && Wait a 1/10th of a second. >>>>> ENDIF >>>>> >>>>> CLEAR DLLS "sleep" >>>>> >>>>>#ENDIF >>>>>>>>>>