Article ID: 175983
Article Last Modified on 5/10/2003
DO Testmnu.mprThis additional calling of the menu has the effect of re-setting whatever internal counter is causing the extra menu to appear on the 31st run of the MODAL screen. However, in a multi-user environment this workaround may not prevent the behavior.
MODIFY COMMAND Main.prg
DO main.prg
* *********************************************************
* *
* * 10/20/97 Main.prg 16:46:24
* *
* *********************************************************
* *
* * Description:
* * This main program is one of three sample programs that
* * illustrates the problem of an extra menu pad appearing
* * during the 31st display of a MODAL screen.
* *
* *********************************************************
CLEAR
ll_fread = .f.
lc_pad = ""
ln_bar = 0
lc_choice = ""
m0sysoff = .f.
ln_count = 0
PUSH MENU _msysmenu
DO TESTMNU.MPR
DO WHILE .T.
ll_fread = .f.
READ VALID ll_fread
ll_fread = .t.
DO CASE
CASE UPPER(lc_pad) = "TEST BAR"
ln_count = ln_count + 1
@ 2, 35 SAY "Menu hit count " + STR(ln_count)
DO TESTAPP.SPR
CASE UPPER(lc_pad) = "QUIT TO FOXPRO"
CLEAR
RELEASE ln_count
EXIT
ENDCASE
ENDDO
POP MENU _msysmenu
RETURN
PROCEDURE l_actmnu
PARAMETERS lc_parm1
ll_fread = .t.
CLEAR READ
lc_bar = BAR()
lc_pad = lc_parm1
RETURN
* *********************************************************
* *
* * END OF Main.prg
* *
* *********************************************************
* *********************************************************
* *
* * 10/20/97 Testmnu.mpr 16:46:24
* *
* *********************************************************
* *
* * Description:
* * This menu program is one of three sample programs to
* * illustrate the problem of an extra menu pad appearing
* * during the 31st display of a MODAL screen.
* *
* *********************************************************
SET SYSMENU TO
SET SYSMENU AUTOMATIC
DEFINE PAD tp1 OF _MSYSMENU PROMPT "Test Pad \<1" ;
COLOR SCHEME 3 ;
KEY ALT+1, "ALT+1" ;
SKIP FOR m0sysoff
DEFINE PAD tp2 OF _MSYSMENU PROMPT "Test Pad 2" ;
COLOR SCHEME 3 ;
SKIP FOR m0sysoff
DEFINE PAD tp3 OF _MSYSMENU PROMPT "Test Pad 3" ;
COLOR SCHEME 3 ;
SKIP FOR m0sysoff
DEFINE PAD tp4 OF _MSYSMENU PROMPT "Test Pad 4" ;
COLOR SCHEME 3 ;
SKIP FOR m0sysoff
DEFINE PAD tp5 OF _MSYSMENU PROMPT "Test Pad 5" ;
COLOR SCHEME 3 ;
SKIP FOR m0sysoff
DEFINE PAD tp6 OF _MSYSMENU PROMPT "Test Pad 6" ;
COLOR SCHEME 3 ;
SKIP FOR m0sysoff
DEFINE PAD tp7 OF _MSYSMENU PROMPT "Test Pad 7" ;
COLOR SCHEME 3 ;
SKIP FOR m0sysoff
DEFINE PAD exitpad OF _MSYSMENU PROMPT "\<Exit" ;
COLOR SCHEME 3 ;
KEY ALT+E, "ALT+E"
ON PAD tp1 OF _MSYSMENU ACTIVATE POPUP testpad1
ON PAD exitpad OF _MSYSMENU ACTIVATE POPUP exit
DEFINE POPUP testpad1 MARGIN RELATIVE SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF testpad1 PROMPT "\<Test Bar" ;
KEY ALT+T, "Alt+T"
DEFINE BAR 2 OF testpad1 PROMPT "test1"
ON SELECTION BAR 1 OF testpad1 DO l_actmnu WITH PROMPT()
DEFINE POPUP exit MARGIN RELATIVE SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF exit PROMPT "Quit to Foxpro"
DEFINE BAR 2 OF exit PROMPT "Do something else 1"
DEFINE BAR 3 OF exit PROMPT "Do something else 2"
ON SELECTION BAR 1 OF exit DO l_actmnu WITH PROMPT()
* *********************************************************
* *
* * END OF Testmnu.mpr
* *
* *********************************************************
* *********************************************************
* *
* * 10/20/97 TESTAPP.SPR 16:46:24
* *
* *********************************************************
* *
* * Description:
* * This screen program is one of three sample programs that
* * illustrates the problem of an extra menu pad appearing
* * during the 31st display of a MODAL screen.
* *
* *********************************************************
DEFINE WINDOW test ;
AT 0.000, 0.000 ;
SIZE 15.846,92.600 ;
FONT "MS Sans Serif", 8 ;
FLOAT ;
NOCLOSE ;
MINIMIZE ;
SYSTEM
MOVE WINDOW test CENTER
#REGION 1
m0sysoff = .t.
#REGION 1
IF WVISIBLE("test")
ACTIVATE WINDOW test SAME
ELSE
ACTIVATE WINDOW test NOSHOW
ENDIF
@ 12.000,36.800 GET lc_choice ;
PICTURE "@*HN \<Exit" ;
SIZE 1.8,10.000,1.0 ;
DEFAULT 1 ;
FONT "MS Sans Serif", 8 ;
STYLE "B" ;
VALID lc_val()
IF NOT WVISIBLE("test")
ACTIVATE WINDOW test
ENDIF
READ CYCLE MODAL
RELEASE WINDOW test
#REGION 1
m0sysoff = .f.
FUNCTION lc_val && lc_choice VALID
CLEAR READ
RETURN
* * END OF Testapp.spr
Keywords: kbprb KB175983