收藏 分享(赏)

FoxPro+for+Windows程序设计第12章.ppt

上传人:hyngb9260 文档编号:4529050 上传时间:2019-01-02 格式:PPT 页数:99 大小:1.93MB
下载 相关 举报
FoxPro+for+Windows程序设计第12章.ppt_第1页
第1页 / 共99页
FoxPro+for+Windows程序设计第12章.ppt_第2页
第2页 / 共99页
FoxPro+for+Windows程序设计第12章.ppt_第3页
第3页 / 共99页
FoxPro+for+Windows程序设计第12章.ppt_第4页
第4页 / 共99页
FoxPro+for+Windows程序设计第12章.ppt_第5页
第5页 / 共99页
点击查看更多>>
资源描述

1、12.1 菜单技术 12.2 窗口技术,第 12 章 菜单技术和窗口技术,返回主目录,第12章菜单技术和窗口,12.1菜单技术 12.1.1光棒式菜单设计光棒式菜单时, 先使用 PROMPT命令定义菜单项在屏幕上的位置和内容,然后使用 MENU TO 命令激活光棒式菜单, 供用户选择使用其中的一个菜单项。 1. 光棒式菜单项的定义(1) 定义命令的格式:行,列 PROMPT 菜单项名称 MESSAGE 提示信息,该命令从指定的行,列开始, 显示菜单项名称, 如果选择MESSAGE, 则将其指定的提示信息显示在屏幕的底行。 但是, 如果此前有SET MESSAGE命令,则显示在SET MESSA

2、GE命令所指定的行号和位置。 (2) 说明: 一个 PROMPT命令定义一个菜单项, 如果有多个菜单项, 应当连续使用多个 PROMPT命令。 按各个菜单项显示位置的指定方式, 可以将多个光棒式菜单项显示在同一行, 也可以显示在多行。 ,2. 激活光棒式菜单(1) 激活命令的格式: MENU TO 内存变量该命令激活由 PROMPT命令定义的光棒式菜单, 并将用户所选菜单项的序号存入内存变量。 (2) 说明: 凡是在 MENU TO 内存变量 命令之前的 PROMPT 命令, 系统按其出现的先后顺序从数字开始编号。 当执行 MENU TO 内存变量 命令时, 用户可通过下列方法, 使内存变量获

3、得一个选中的菜单编号: ,指向方式用箭头键选择一个菜单项后回车;打入方式选择打入菜单项的首字符。 程序设计时, 一般用条件语句或分情况处理语句, 对于内存变量获得的不同菜单编号, 进行不同的处理, 即执行对应菜单项的处理命令。 MENU TO 内存变量命令中的内存变量获得的菜单编号是数值型数据。 3. 光棒式菜单的应用举例例 12.1利用光棒式菜单, 分类显示人事档案数据库(RSH.DBF)中性别为男、性别为女的记录及所有记录。 其程序如下:,SET MESSAGE TO 24 CENTER &设置显示MESSAGE信息的行号和位置SET COLO TO W/N,W/B,R &设置屏幕显示的标

4、准、 增强、 周边色CLEAR &按设置的颜色清屏USE D:rshDO WHIL .T. &为了执行完某个菜单项后能再次返回此菜单CLEAR &本例将光棒式菜单定义在同一行2, 2 PROMPT 1. 显示男性记录 MESSAGE 按任意键继续显示.,2,20 PROMPT 2. 显示女性记录 MESSAGE 按任意键继续显示. 2,38 PROMPT 3. 显示所有记录 MESSAGE 按任意键继续显示.2,56 PROMPT 4. 退出显示操作 MESSAGE 返回FoxPro.MENU TO xz &激活菜单, 所选择的菜单序号存入变量xz DO CASE&针对所选择的菜单项, 进行分

5、情况处理 CASE xz=1 &选择了“1. 显示男性记录”DISP FOR 性别=男WAIT ,CASE xz=2 &选择了“2. 显示女性记录”DISP FOR 性别=女WAIT CASE xz=3 &选择了“3. 显示所有记录”DISP ALLWAIT CASE xz=4 &选择了“4. 退出显示操作”USESET COLO TO,CLEARRETUENDCASEENDDO执行上面的程序时, 所定义的四个菜单项都显示在屏幕的同一行上(见图12.1),这时应注意计算每个菜单项显示的起始列; 也可以将四个菜单项分别显示在四行, 这时的菜单项应从同一列开始显示。,12.1.2 弹出式菜单 1.

6、 引导例首先, 观察下面一个使用了弹出式菜单的程序段,从中了解弹出式菜单的概念、 弹出式菜单的作用及设计弹出式菜单的一般方法步骤。 例 12.2利用弹出式菜单, 分类显示人事档案数据库(Rsh.dbf)中性别为男、 性别为女的记录及所有记录。 其程序如下: SET MESSAGE TO 24 CENTERSET COLO TO W+/BG,W+/GR+,R,CLEARUSE D:rsh* 定义弹出式菜单窗口的名称(pname)DEFINE POPUP pname* 定义该菜单窗口中的项目名称DEFINE BAR 1 OF pname PROMPT 显示男性记录DEFINE BAR 2 OF p

7、name PROMPT 显示女性记录DEFINE BAR 3 OF pname PROMPT 显示全部记录DEFINE BAR 4 OF pname PROMPT 返回 FoxPro,* 设置各菜单项的选中处理ON SELE BAR 1 OF pname DO dispNAON SELE BAR 2 OF pname DO dispNVON SELE BAR 3 OF pname DO dispQBON SELE BAR 4 OF pname DO foxpFH* 激活菜单窗口ACTIVATE POPUP pname AT 5,55* 返回FoxPro前的处理CLEAR ALL,SET COL

8、O TOCLEARRETU*各个菜单项选中后所调用的内部过程如下: PROCEDURE dispNALIST FOR 性别=男WAIT 按任意键返回CLEARRETU,PROCEDURE dispNVLIST FOR 性别=女WAIT 按任意键返回CLEARRETUPROCEDURE dispQBLISTWAIT 按任意键返回CLEAR,RETUPROCEDURE foxpFHDEACTIVATE POPUP pname &关闭菜单CLEAR ALLRETU执行上面的程序时, 被激活的弹出式菜单窗口将显示在屏幕上(见图12.2)。,2. 弹出式菜单设计的步骤从上面的程序例题中, 对于弹出式菜单

9、的设计, 可以归纳出如下的步骤: 1) 定义弹出式菜单窗口及其属性(1) 定义弹出式菜单窗口的命令格式: DEFINE POPUP 菜单窗口名 FROM 起始行,起始列 TO 终止行,终止列PROMPT FIELD 字段名 KEY 键标TITLE 窗口上标题FOOTER 窗口下标题 SCROLL MOVERMESSAGE 说明信息 SHADOWIN WINDOW 父窗口名 | IN SCREEN,调色盘号 | COLOR 色对表(2) 说明: 本命令定义一个弹出式菜单窗口的名称及其属性, 命令中除了DEFINE POPUP 菜单窗口名外, 其它参数都是选择项(参见例12.2中的)。下面对各个选

10、择项的作用分别予以说明。 如果选择PROMPT FIELD 字段名, 则菜单项目的名称来自当前数据库。 如果不选择此参数, 则需要使用后面将要介绍的其它命令定义菜单项目。 如果选择KEY 键标, 则所指定的键标作为激活弹出式菜单的热键。 ,TITLE 窗口上标题和FOOTER 窗口下标题用于指定位于弹出式菜单窗口上下边框的标题。 选择SCROLL, 则在弹出式菜单的右边框显示一个滚动条。 选择IN WINDOW 父窗口名 或者选择 IN SCREEN, 则指定菜单弹出的位置。 其中, IN 父窗口名表示在指定的其他菜单窗口内显示弹出式菜单; 而IN SCREEN, 则不在其它菜单窗口中弹出菜单

11、。 其它可选项的作用, 在以前的命令中已作过说明, 这里不再赘述。 2) 定义弹出式菜单中的菜单项目如果在DEFINE POPUP 菜单名命令中, 没有使用PROMPT FIELD 参数指定菜单项目来自当前数据库, 则必须使用菜单项目的定义命令定义菜单项。 ,(1) 菜单项目定义命令的格式: DEFINE BAR 菜单项序号 OF 菜单窗口名 PROMPT 菜单项目名KEY 键标 MESSAGE 提示信息 SKIP 条件 COLOR SCHEME 调色盘号 | COLOR 色对表 (2) 说明: 本命令是和DEFINE POPUP命令配合使用的, 即DEFINE POPUP命令一般只定义弹出式

12、菜单窗口的名称及其属性, 而本命令定义其包含的菜单项目及其属性。 用菜单项序号 OF 菜单窗口名说明PROMPT所指定的菜单项目名来自哪个菜单窗口及其在菜单窗口中的顺序号。,如果选择SKIP 条件,则仅当条件为真值时, 此菜单项才允许被选中。 显然,当弹出式菜单中包含有多个菜单项目时, 应多次使用此命令, 分别定义每一个菜单项(参见例12.2中的)。 3) 菜单项的选中处理一个弹出式菜单窗口中一般有多个菜单项, 选中某个菜单项后所要执行的命令,需要事先用菜单项选中处理命令进行设置。 其设置命令格式是ON SELECTION BAR 序号 OF 菜单窗口名 命令如果菜单窗口名中用序号所代表的菜单

13、项被选中,则执行本语句中指定的命令。如果本语句没有指定任何命令,则表示取消先前对该菜单项曾经作过的选中处理的设置。,显然, 当弹出式菜单窗口中包含多个菜单项时, 需要多个菜单项选中处理语句。 例如,命令 ON SELECTION BAR 1 OF POPUP name1 DO prg1的作用是,选中菜单窗口name1的第项之后, 执行过程prg1。而命令ON SELECTION BAR 4 OF POPUP name1 ACTIVATE POPUP name2的作用是,选中菜单窗口name1的第个菜单项后, 激活另一个菜单窗口name2。 4) 菜单窗口的选中处理一个应用程序系统可能定义了多个

14、弹出式菜单窗口,可以用菜单窗口选中处理命令分别设置各个菜单窗口激活时所要执行的命令。 其命令格式是,ON SELECTION POPUP 菜单窗口名| ALL 命令如果本命令中指定的弹出式菜单窗口名被选中, 则执行后面指定的命令。如果菜单窗口名用ALL指定,则不论激活任何一个菜单窗口,都执行相同的命令。如果这里没有指定任何命令, 则表示要取消先前的ON SELECTION POPUP命令所作的设置。 例如,命令ON SELECTION POPUP name1 DO prg1的作用是, 选中名为name1的菜单窗口后, 则执行程序prg1。 而命令 ON SELECTION POPUP name

15、2 DEACTIVATE POPUP name1的作用是, 选中名为namw2的菜单窗口后, 则关闭另一个名为name1的菜单窗口。 ,在用DEFINE POPUP命令定义弹出式菜单窗口时, 如果用PROMPT FIELD 指定的菜单项来自当前数据库的某一字段, 则常用于把字段值作为输入数据。这种情况下,一般不对菜单项设置选中处理。但是,必须设置菜单窗口的选中处理, 并且其处理命令应当是关闭被选中的菜单窗口, 即菜单窗口选中处理命令格式为ON SELECTION POPUP name1 DEACTIVATE POPUP name1(参见例12.3中的)。 5) 激活弹出式菜单的命令 当用DEF

16、INE POPUP、 DEFINE BAR命令完成弹出式菜单窗口的定义, 并设置了窗口选中处理或菜单项选中处理之后,如果需要使用该弹出式菜单, 则应当先用激活弹出式菜单的命令将其激活。 ,(1) 激活命令的格式: ACTIVATE POPUP 弹出式菜单名 AT 行,列 BAR 菜单项序号 NOWAIT(2) 说明: 被激活的菜单窗口, 以 AT 行,列 指定的行、 列为窗口的左上角显示。 如果选择 BAR 菜单项序号, 则激活后, 菜单亮条停留在这里指定的序号上,否则亮条在菜单窗口的第一个菜单项上。 如果选择 NOWAIT,则弹出菜单窗口后, 并不等待用户选择菜单, 而是继续执行程序。 3.

17、 关闭弹出式菜单窗口,(1) 关闭菜单窗口命令的格式: DEACTIVATE POPUP 菜单名,菜单名 | ALL(2) 说明: 本命令可以关闭指定的若干个弹出式菜单, 或者选择 ALL 关闭所有激活的菜单。 由于某个菜单项的选中处理结束后, 菜单窗口仍处于激活状态。 所以弹出式菜单窗口中一般都应包含一个关闭菜单窗口的菜单项, 并设置选中该菜单项时的处理语句为ON SELECTION BAR 退出菜单项的序号 OF 菜单窗口名DEACTIVATE POPUP 菜单窗口名 或者, 当选中退出菜单项的序号后,执行一个具有关闭菜单窗口功能的过程。 ,4. 有关弹出式菜单的其它命令1) 弹出式菜单窗

18、口的隐藏和恢复(1) 隐藏弹出式菜单窗口的命令: HIDE POPUP 菜单窗口名 ,菜单窗口名 | ALL因为弹出式菜单只要不关闭, 就一直显示在屏幕上, 这可能影响对屏幕的使用,可以用此命令暂时将菜单窗口隐藏起来。 注意, 菜单窗口的隐藏不同于关闭。 (2) 恢复隐藏的菜单窗口: SHOW POPUP 菜单窗口名 ,菜单窗口名 | ALL该命令将隐藏了的菜单窗口重新显示出来。 ,2) 删除若干个菜单项目的命令其命令格式为RELEASE BAR 序号 | ALL OF 菜单窗口名该命令可以从未激活的弹出式菜单窗口中, 删除指定的菜单项目。 如果选择ALL,则把指定的菜单名中菜单项目都删除。

19、3) 删除弹出式菜单 其命令格式为RELEASE POPUP 菜单窗口名表该命令从内存删除未激活的弹出式菜单。 如果命令中不指定任何删除对象, 则表示要删除内存中所有的弹出式菜单。 当要删除内存中所有的弹出式菜单时, 还可以使用命令: ,CLEAR POPUP此外, 还有弹出式菜单窗口的移动命令、 菜单窗口大小的改变命令等, 由于这些功能可以用鼠标操作来实现, 所以不作介绍。 5. 有关弹出式菜单的函数1) 返回菜单窗口名的函数() 该函数为POPUP()用户可以用此函数了解被激活的当前菜单窗口名。 如果当前没有任何弹出式菜单被激活, 则返回空字符串。 ,2) 返回选中的菜单项序号的函数()

20、该函数为BAR()3) 返回弹出式菜单中菜单项目数的函数()该函数为CNTBAR(菜单窗口名)最后, 作为本节的结束, 列举一个在DEFINE POPUP 命令中, 用PROMPT FIELD指定菜单项来自数据库中字段值的程序例。 例 12.3向图书馆管理系统中的读者信息数据库(Dzxx.dbf)输入数据, 其中读者的职称从弹出式菜单中选择输入。 ,为此, 在执行下面的程序之前, 先建立一个名为Zc.dbf的数据库, 其记录中只有一个字符型字段, 字段名为“职称”, 已经输入了正高、 副高、中级、初级等数据。 其程序如下: SET PATH TO D:SET MESSAGE TO 22 CEN

21、TERSET COLO TO W+/BG,W+/GR+,RCLEAR* 定义弹出式菜单窗口SELE 2USE zc&打开职称数据库Zc.dbf,DEFINE POPUP name1 ;FROM 10, 34 ;PROMPT FIELD 职称; SCROLL ;COLOR SCHEME 4*注意: 这里用PROMPT FIELD指定了菜单项来自当前库的字段值(职称)。 * 设置菜单窗口的选中处理(选中菜单窗口NAME1后关闭该窗口)ON SELECTION POPUP name1 DEACTIVATE POPUP name1 *因为弹出式菜单的菜单项来自当前数据库的字段值, 所以需要设置菜单窗口

22、的选中处理命令为关闭该窗口。 ,SELE 1USE dzxxDO WHIL .T.mZH= mXM= mZC= YN= DO WHIL .T. 10,4 SAY 请输入借书证号码:GET mZH PICT XXXXXXXX, 11,4 SAY 请输入读者的姓名: GET mXM PICT XXXXXXREAD 12,4 SAY 请输入读者的职称: + +mZC &此时的mZC无数据SELE 2* 激活菜单窗口ACTIVATE POPUP name1GO BAR()&为了把记录指针指向选中的记录STORE 职称 TO mZC &把当前记录的字段值存入变量mZC,STORE 职称 TO mZC &

23、把当前记录的字段值存入变量mZC 12,4 SAY 请输入读者的职称: + +mZC&这时变量mZC中有数据了 14,4 SAY 是否修改(Y/N)? GET ynREADIF UPPER(yn)=YCLEARLOOPELSESELE 1,APPEND BLANKREPL 借书证号 WITH mZH, 读者姓名 WITH mXM, 读者职称 WITH mZCEXITENDIFENDDO 16,4 SAY 是否继续输入(Y/N)? GET ynREADIF UPPER(yn)=YCLEAR,LOOPELSEEXITENDIFENDDOCLEAR ALLCLEAR,本程序利用数据库(Zc.dbf)

24、的职称字段值作为弹出式菜单项。 激活该菜单窗口时, 屏幕显示的菜单窗口见图12.3。 当用户从该窗口选择一个职称作为输入数据时, 只须移动菜单指针到所选职称并回车。 由于作为菜单项的职称不能直接赋值给一个变量, 所以必须借助于BAR()函数, 才能返回所选菜单项序号的功能。以BAR()的函数值作为数据库Zc.dbf中目标记录的记录号,用GO BAR()命令移动数据库的记录指针, 就可以从数据库的当前记录中获取职称的字段值了。 ,12.1.3 下拉式菜单下拉式菜单常用于设计应用程序的主菜单(横向菜单)及各个主菜单项的子菜单(下拉菜单)。因为每当用户选择一个主菜单项时, 能下拉出对应的子菜单,所以

25、把这种形式的菜单叫做下拉式菜单。 为了使读者对下拉式菜单的应用有所了解, 首先阅读和执行一个使用了下拉式菜单的例题程序。 例 12.4设计图书馆管理系统的下拉式菜单。 其程序 如下: SET PATH TO D:CLEAR,* 定义一个二维数组, 用于存放主菜单项及其说明信息DIMENSION main1(6,2)* 二维数组的第一列下标变量存放菜单项目名称main1(1,1)=数据输入main1(2,1)=查询修改main1(3,1)=系统服务main1(4,1)=统计分析main1(5,1)=报表打印main1(6,1)=退 出,* 二维数组的第二列下标变量存放各菜单项的说明信息main1

26、(1,2)=各数据库数据的输入main1(2,2)=按指定的条件对数据库进行查询, 并可以修改查询到的数据main1(3,2)=数据库和索引文件的备份、 恢复, 对数据库进行初始化main1(4,2)=对馆藏图书、 读者信息、 借阅记录进行条件分析main1(5,2)=打印各种报表main1(6,2)=,* 定义存放下拉菜单的一维数组DIMENSION sub1(3),sub2(3),sub3(3),sub4(3),sub5(5)* 向各一维数组的下标变量存放子菜单项名称sub1(1)=输入图书编目sub1(2)=输入读者信息sub1(3)=输入借阅登记sub2(1)=查询馆藏图书sub2(2

27、)=查询读者信息,sub2(3)=查询借阅登记 sub3(1)=数据备份 sub3(2)=数据恢复 sub3(3)=初始化 sub4(1)=图书分类统计 sub4(2)=读者分类统计 sub4(3)=借阅信息分析 sub5(1)=藏书报表,sub5(2)=读者报表sub5(3)=-sub5(4)=借阅到期sub5(5)=统计报表* 配置下拉菜单系统MENU BAR main1,6MENU 1, sub1,3,3MENU 2, sub2,3,3,MENU 3, sub3,3,3MENU 4, sub4,3,3MENU 5, sub5,5,3* 激活下拉菜单系统STOR 1 TO r,cDO WH

28、IL .T. &使用循环可确保执行某一菜单对应的子程序后, 仍返回菜单系统READ MENU BAR TO r,c,* 按选择的主菜单序号及其子菜单序号, 分情况执行所选择的菜单功能DO CASECASE r=1 AND c=1USE tsbmAPPENDCASE r=1 AND c=2USE dzxxAPPENDCASE r=1 AND c=3USE jydj,APPENDCASE r=2 AND c=1USE tsbmDO prg1CASE r=2 AND c=2USE dzxxDO prg1CASE r=2 AND c=3USE jydjDO prg1,CASE r=3 AND c=1D

29、O prg1CASE r=3 AND c=2DO prg1CASE r=3 AND c=3DO prg1CASE r=4 AND c=1DO prg1CASE r=4 AND c=2DO prg1,CASE r=4 AND c=3DO prg1CASE r=5 AND c=1DO prg1CASE r=5 AND c=2DO prg1CASE r=5 AND c=3DO prg1CASE r=5 AND c=4DO prg1,CASE r=5 AND c=5DO prg1CASE r=6CLEAR ALLCLEARRETUENDCASEENDDORETU,*为使例题程序简短, 各个分情况处理语

30、句都调用同一个内部过程: PROC prg1& 内部过程prg1的入口CLEAR 10,10 SAY 这是一个还没有设计出来的子功能程序。 11,10 SAY 按任意键返回到主菜单!WAIT CLEARRETU执行本程序, 屏幕上显示的下拉菜单系统见图12.4。,通过上面的程序, 可以归纳出设计下拉式菜单的方法步骤为: 定义一个二维数组, 用于存储主菜单项及对应的说明信息。 向二维数组的第一列下标变量存放菜单项目名称。 向二维数组的第二列下标变量存放各菜单项的说明信息。 定义存储子菜单的一维数组, 数组的个数同主菜单的项数。 向各一维数组的下标变量存放子菜单名称。 配置下拉菜单系统。 激活下拉

31、菜单系统。 对所选择的菜单项目进行分情况处理。 ,其中, 激活下拉菜单和分情况处理一般都是放在一个循环中, 以确保当执行完某一个菜单的处理程序之后,能再返回下拉菜单系统, 只有从主菜单中选择“退出”, 才能结束程序, 返回到FoxPro系统。 下面分别说明各个步骤中所使用的语句。 1. 定义二维数组并赋值(定义主菜单)所定义的二维数组必须是若干行、 两列的数组, 数组中的各个下标变量必须是字符型。 其中, 第一列下标变量用于存储主菜单的项目名称; 第二列下标变量用于存储对应菜单项的说明性信息,说明性信息显示在SET MESSAGE命令指定的位置(参见例12.4中的、 、 )2. 配置主菜单配置

32、主菜单的命令格式: ,MENU BAR 二维数组名,数值型表达式其中: 二维数组名是上面已定义并赋值的那个二维数组。 数值表达式用于说明主菜单的项目数(二维数组的行数)。 例如,例12.4中, 配置主菜单的命令是: MENU BAR main1,6。 3. 定义主菜单项对应的下列菜单该语句分别定义存储下拉菜单项的一维数组并赋值, 如果向一维数字中的某个下标变量赋值为字符串: -, 则在下拉菜单中该下标变量显示出一条横线,常用于分类显示下拉菜单项(参见例12.4中的、 )。 ,4. 配置下拉菜单配置下拉菜单的命令格式: MENU 主菜单的序号,一维数组名,子菜单的项目数,一次可显示子菜单的项目数

33、其中: 主菜单的序号表示该一维数组是哪个主菜单项的子菜单。 一维数组名是已定义并赋值, 且对应主菜单项序号的一个一维数组。 一次可显示子菜单的项目数如果指定的显示数少于子菜单数组中包含的项目数, 则将用滚动方式显示所有的子菜单项(参见例12.4中的)。,5. 激活下拉菜单激活下拉菜单的命令格式READ MENU BAR TO 存主菜单序号的变量,存子菜单序号的变量 SAVE说明:(1) 当用READ MENU BAR TO命令激活下拉式菜单后,在存主菜单序号的变量和存子菜单序号的变量中,分别获得用户选择的主菜单项序号和子菜单项序号。 程序将通过对这两个变量中存储的数值,对所选择的菜单项进行定位

34、, 并据此进行分情况处理(参见例12.4中的、 )。 (2) 如果命令中指定了SAVE, 则当用户选择了菜单项后, 不清除下拉的子菜单,否则下拉的子菜单被清除。 ,.窗口技术,12.2.1 窗口的定义、 激活、 关闭和清除1. 窗口的定义命令(1) 命令格式: DEFINE WINDOW 窗口名FROM 窗口左上角行号,窗口左上角列号TO 窗口右下角行号,窗口右下角列号| AT 窗口左上角行号,窗口左上角列号 SIZE 行数,列数, TITLE 窗口的上标题 FOOTER 窗口的下标题 SHADOW MINIMIZE CLOSE | NOCLOSE ZOOM | NOZOOM GROW | N

35、OGROW FLOAT | NOFLOAT DOUBLE | PANEL | NONE | 边界字符串 IN 父窗口名 | IN SCREEN COLOR SCHEME 调色板号 | COLOR 颜色对表 ,该命令用于定义一个用户窗口, 窗口区域由FROM TO 或用AT SIZE指定。 例如: DEFINE WINDOW ABC1 FROM 4,5 TO 14,50DEFINE WINDOW ABC1 AT 4,6 SIZE 9,44上面两条窗口定义命令是等价的。 (2) 说明: 窗口定义命令仅仅是定义了一个名为窗口名的型内存变量, 要显示所定义的窗口, 需要使用激活窗口变量的命令。 可以用

36、FROM TO 和AT SIZE 两种方法指定窗口的范围。 其中: ,FROM TO 是通过给出窗口的左上角“坐标”和右下角“坐标”的方法指定窗口范围。 AT SIZE 是用AT给出窗口的左上角坐标, 用SIZE给出窗口包含的行、 列数的方法指定窗口范围。注意,用FROM TO 给出的行、 列数被窗口边框占用;用SIZE给出窗口所占的行、 列数,是窗口内的行、 列数,不包括下边框、 右边框所占用的行、列数。 TITLE、 FOOTER分别用于给出窗口的上、 下标题。 需要带阴影的窗口时选用SHADOW。 可以使窗口缩小到只显示窗口标题时,选择 INIMIZE 。, CLOSE、 NOCLOSE

37、用于指定窗口是否可以关闭, 缺省值是CLOSE。 ZOOM、 NOZOOM用于指定窗口是否可以扩大到全屏幕, 缺省值为NOZOOM。 GROW、 NOGROW用于指定窗口是否可以缩放, 缺省值是NOGROW。 FLOAT、 NOFLOAT用于指定窗口是否可以移动, 缺省值是NOFLOAT。 10 IN 父窗口名或IN SCREEN, 当所定义的窗口为某窗口的子窗口时, 用IN给出父窗口名。 此时, FROM所指定的窗口范围是在父窗口的范围之内。 而当所定义的窗口不在已经激活的其它窗口内显示时,选择IN SCRREN(缺省值) 其它选择项的作用, 同菜单技术中所作过的介绍,注意: 当窗口定义命令

38、中的选择项写在多行时, 要加续行符。 2. 激活窗口的命令(1) 命令格式: ACTIVATE WINDOW 窗口名1 ,窗口名2 | ALLIN 父窗口名 | IN SCREENBOTTOM | TOP | SAMENOSHOW该命令激活指定的一个或多个已定义过的窗口变量, 或者使用ALL, 激活已定义过的所有窗口内存变量。 ,(2) 说明: 在一个激活命令中指定多个窗口名时, 虽然所指定的窗口都显示在屏幕上了, 但是用户只能使用最后指定的那个窗口, 这个窗口叫做当前窗口。在交互方式下,当激活用户窗口后, 当前窗口就不再是 FoxPro的命令窗口了,要使FoxPro的命令窗口成为当前窗口,应

39、按下Ctrl+F1键若干次, 总会使FoxPro的命令窗口变成当前窗口的。 如果使用鼠标,则和在Windows环境下操作一样,鼠标点击的窗口将成为当前窗口。 也可以通过使用窗口激活命令将非当前窗口改变为当前窗口。 例如: DEFINE WINDOW abc1 FROM 4,4 TO 8,40DEFINE WINDOW abc2 FROM 6,8 TO 10,40DEFINE WINDOW abc3 FROM 8,12 TO 12,40ACTIVA WINDOW abc1, abc2,则名为abc1、 abc2的两个窗口显示在屏幕上。 因为abc2 在abc1 之后, 所以abc2是当前窗口。

40、为了使abc1成为当前窗口, 可再执行一次激活命令ACTIVATE WINDOW abc1 窗口被激活并成为当前窗口时, 所有输出内容都显示在当前窗口内。 特别是格式输入、 输出语句中指定的行、 列坐标是窗口内的坐标(窗口内坐标也是从行、 列开始)。 同理,用于指定子窗口范围的坐标, 也应当是父窗口内的坐标。但是当子窗口的范围超出了父窗口, 并不出错。 参数BOTTOM | TOP | SAME用于指定被激活的窗口显示在其它已激活的窗口之后或之前或保持窗口原来相对位置不变。 例如, 窗口激活命令中选择BOTTOM,则所激活的窗口即便是当前窗口, 也要在已激活的其它窗口后面显示。请看下面的程序段

41、:,DEFINE WINDOW abc1 FROM 4,4 TO 8,40DEFINE WINDOW abc2 FROM 6,8 TO 10,40DEFINE WINDOW abc3 FROM 8,12 TO 12,40ACTIVA WINDOW abc1, abc2ACTIVA WINDOW abc3 BOTTOM窗口abc3是最后被激活的, 所以abc3是当前窗口。 因为激活abc3时,选择了BOTTOM,所以窗口abc2、 abc1在屏幕上挡住了当前窗口abc3。 如果依次按下Ctrl+F1键,则在最前面显示的窗口从abc2依次转换为abc1、 abc3。 , 其它选择项的作用同窗口定义

42、命令。 窗口激活命令中也可以使用这些选择项, 说明在窗口定义命令中未指定的参数, 还可以在激活命令中指定。 3. 关闭窗口的命令(1) 命令格式: DEACTIVATE WINDOW 窗口名1 ,窗口名2 | ALL该命令关闭指定的一个或多个窗口, 如果使用ALL, 则所有激活的窗口被关闭。 (2) 说明: 口被关闭, 仅仅是清除窗口在屏幕上的显示, 所定义的窗口变量仍然保留在内存中, 随时还可以将关闭了的窗口激活。 例如:,DEFINE WINDOW abc FROM 4,4 TO 12,40&定义窗口变量abcACTIVATE WINDOW abc &激活窗口变量abcDEACTIVATE

43、 WINDOW abc &关闭窗口abcACTIVATE WINDOW abc &再次激活窗口变量abc 4. 清除窗口变量的命令(1) 命令格式: RELEASE WINDOW 窗口1 ,窗口2 或CLEAR WINDOWRELEASE WINDOW 用于清除指定的一个或多个窗口; 而CLEAR WINDOW 用于清除所有的窗口。 ,(2) 说明: 因为清除窗口的命令是清除窗口变量, 所以当窗口变量被清除之后, 就不能再激活了。 被清除的窗口如果是已经激活的, 则先关闭后清除。 未激活的窗口、 隐藏的窗口都可以作为清除对象。 虽然关闭窗口命令和清除窗口命令都可以使屏幕上显示的窗口消失, 但是

44、两者的功能却完全不同。 5. 窗口应用举例例 12.5下面的三个程序段分别定义并激活窗口abc1、 abc2、 abc3。 定义窗口abc1(一个不能关闭、 不能扩大到全屏、 不能最小化、 不能移动、 不能改变尺寸、 不带阴影、 不作为子窗口、 无上下标题):,DEFINE WINDOW abc1;FROM 3,2 TO 18,70,FROM 3,2 TO 8,30;TITLE 这是窗口上标题;FOOTER 这是窗口下标题;CLOSEACTIVATE WINDOW abc2WAIT 按任意键, 则关闭此窗口DEACTIVATE WINDOW abc2HT5SS激活窗口变量abc2后, 屏幕显示

45、见图12.5。 定义窗口abc3(具备移动、 缩放、 关闭、 带阴影、 标题、 双线边框):,DEFINE WINDOW abc3;FROM 3,2 TO 11,40;TITLE 这是窗口上标题;FOOTER 这是窗口下标题;CLOSE FLOAT ZOOM MINIMIZE GROW SHADOW DOUBLEACTIVATE WINDOW abc3 & 因为指定了窗口的一些操作参数, 出现控制按钮 TEXT,请用鼠标对本窗口作如下操作: 1. 移动窗口2. 改变尺寸3. 窗口最小化4. 恢复窗口原尺寸5. 关闭窗口ENDTEXTRETU激活窗口变量abc3后, 屏幕显示见图12.6。 ,可见, 窗口是否出现标题栏、 控制菜单按钮, 视窗口操作参数的指定情况。 例 12.6使用父、 子窗口的程序例。* 定义父窗口DEFINE WINDOW fu FROM 8,8 TO 20,40;TITLE 窗口的上标题 FOOTER 窗口的下标题; DOUB SHADOW ZOOM MINI GROW FLOAT CLOSE * 定义父窗口的子窗口DEFINE WINDOW zi IN WINDOW fu ;,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > windows相关

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报