Lspeaks,
Also, in regard to your DO MENUNAME.MPR statments, make sure you only have them in the ON ENTRY clause of your Screen. (So if you are calling them from other locations, place it there, and remove them from where you are updating your MENU.MPR's.) Also, if you haven't done so already, create a "SHOWGETS" routine, which selectively "Show's" each get, and includ the code I place above. An example would be:
PROCEDURE SHOWGETS
ACTIVATE WINDOW MYWINDOW NOSHOW
* FIRST, SET UP DEFAULT FOR YOUR GETS
IF M.JUSTLOOKING
SHOW GETS DISABLE
ELSE
SHOW GETS ENABLE
ENDIF
* NEXT, SELECTIVELY SET GET'S THAT YOU WANT DIFFERENT
* FROM WHAT YOU SET THEM FROM THEIR DEFAULT STATE
IF M.JUSTLOOKING
SHOW GET M.EDITRECORD ENABLE
SHOW GET M.QUITSCREEN ENABLE
ELSE
SHOW GET M.EDITRECORD DISABLE
SHOW GET M.QUITSCREEN DISABLE
ENDIF
* NOW THAT YOU'VE GOT ALL OF YOUR "STATES" SET,
* SHOW THE SCREEN.
SHOW WINDOW MYWINDOW
This code assumes you have some fields, or buttons that you want to control the state beyond the "Default" that you establish based on the state of your screen. You would likely have many, many other fields and buttons, but you don't need to "Name" them specifically in this routine, because you "Set" their state with the first IF statment, either to "Enabled" or "Disabled", depending upon the "State" of your code.
Simply call this routine from anywhere you are making an "Activate" window call now. Do that by replacing the Active call with:
DO SHOWGETS
(Not to be mistaken with SHOW GETS, which is the actual clause...)
Please let me know if this helps,
-Scott