Foxpro中多输入窗口的两种实现方法
A.使用SCREEN BUILDER生成屏幕P1,其中用PUSH BUTTON调用P2和P3屏幕,其伪代码段如下:
DO CASE
……
CASE 按了“调用P2”按键
DO P2.SPR
CASE 按了“退出”键
CLEA READ
……
ENDCASE
B.使用SCREEN BUILDER生成屏幕P2,其中用PUSH BUTTON返回P1和调用P3屏幕,其伪代码段如下:
DO CASE
……
CASE 按了“返回P1”按键
CLEA READ
CASE 按了“调用P3”按键
DO P3.SPR
……
ENDCASE
C.使用SCREEN BUILDER生成屏幕P3,其中用PUSH BUTTON返回P2屏幕,其伪代码段如下:
DO CASE
……
CASE 按了“退出”键
CLEA READ
*返回P2屏幕
……
ENDCASE
D.运行该组窗口时用DEBUG窗口查看RDLEVEL()(该函数返回当前READ嵌套的级数),当进入P3窗口时RDLEVEL()返回3,即已经进入了第三级READ。另外由于每次切换窗口实际是运行另一个窗口,所以其速度非常慢。同时它不能实现页间的自由切换,只能按“P1<-->P2<-->P3”的顺序执行,并且其致命缺陷是一旦管理的窗口达到了6个,则该方案无法实现。
实现方案二:使用SCREEN SET方案,结合OBJNUM()函数。
A.同时打开P1、P2、P3三个窗口,然后一起生成“.SPR”屏幕集文件。
B.其中P1窗口的PUSH BUTTON的伪代码为:
DO CASE
……
CASE 按了“调用P2”按键
-CUROBJ=OBJNUM(“P2窗口的第一个输入字段名”)
CASE 按了“调用P3”按键
-CUROBJ=OBJNUM(“P3窗口的第一个输入字段名”)
CASE 按了“退出”键
CLEA READ
……
ENDCASE
P2、P3的代码段和P1类似。
C.使用RDLEVEL ()查看READ的级数,发现在P1、P2、P3窗口之间切换时其级别均为1级,同时其切换速度远远比方案一要快,因为其窗口在一开始就全部运行,切换时仅仅是现存窗口的切换而不是窗口在切换运行,显然,理论上用此方案能方便地实现无穷多个窗口的管理。