我在VFP中遇到了些问题

DEFINE POPUP 系统介绍 MARGIN RELATIVE SHADOW COLOR SCHEME 4

DEFINE POPUP语法介绍
作用:创建菜单

DEFINE POPUP MenuName
[FROM nRow1, nColumn1]
[TO nRow2, nColumn2]
[IN [WINDOW] WindowName | IN SCREEN]
[FONT cFontName [, nFontSize]]
[STYLE cFontStyle]
[FOOTER cFooterText]
[KEY KeyLabel]
[MARGIN]
[MARK cMarkCharacter]
[MESSAGE cMessageText]
[MOVER]
[MULTISELECT]
[PROMPT FIELD FieldName | PROMPT FILES [LIKE FileSkeleton]
| PROMPT STRUCTURE]
[RELATIVE]
[SCROLL]
[SHADOW]
[TITLE cMenuTitleText]
[COLOR SCHEME nSchemeNumber
| COLOR ColorPairList]

参数

MenuName

指定要创建的菜单的名称。

FROM nRow1, nColumn1 TO nRow2, nColumn2

指定菜单放置的位置。nRow1、nColumn1 指定菜单左上角的坐标。如果省略 FROM 子句,Visual FoxPro 就将菜单的左上角放在 Visual FoxPro 主窗口或用户自定义窗口的第一行第一列。
若要用指定的尺寸创建菜单,可包含 TO nRow2, nColumn2 来指定菜单右下角的位置。如果包含了 FROM nRow1, nColumn1 而省略了 TO
nRow2, nColumn2,Visual FoxPro 自动设置菜单大小。菜单的宽度与最长的菜单项一样宽(如果菜单项是用 DEFINE BAR 创建的),菜单的长度受到所在的 Visual FoxPro 主窗口或用户自定义窗口的限制。若菜单的长度不够容纳所有的菜单项,就会出现一个滚动条允许在菜单项间滚动。

IN [WINDOW] WindowName

在 WindowName 指定的用户自定义窗口中放置菜单。如果省略这个子句,在默认情况下,菜单放在 Visual FoxPro 主窗口中,除非有一个活动的用户自定义窗口。如果有一个活动的用户自定义窗口,菜单就放在该活动窗口中。

IN SCREEN

在 Visual FoxPro 主窗口中放置菜单。

FONT cFontName [, nFontSize]

仅用于 Visual FoxPro。
为菜单指定默认的字体。可以通过在 DEFINE BAR 中包含 FONT 子句改写单个菜单项的默认字体。
cFontName 指定字体名称,nFontSize 指定字体磅值。例如,下列命令创建 12 磅 Courier 字体的菜单:

DEFINE MENU popMyPopup FONT 'Courier', 12

如果在 FONT 子句中省略磅值 nFontSize,就用 10 磅字体。在 Visual FoxPro 中,如果指定的字体不可用,就用相似的字体代替。

STYLE cFontStyle

仅用于 Visual FoxPro。
为菜单指定默认的字形。可在 DEFINE BAR 中包含 FONT 子句改写单个菜单项的默认样式。
如果省略 STYLE 子句,就使用常规字形。在 Visual FoxPro 中,如果指定的字形不可用,就用相似的字形代替。
下表列出了可用 cFontStyle 指定的字形:

字符 字形
B 粗体
I 斜体
N 常规
O 轮廓
Q 不透明
S 阴影
- 删除
T 透明
U 下划线
可以组合多个字符来指定字形。例如,下列命令指定粗斜体:

DEFINE MENU popMyPopup STYLE 'BI'

FOOTER cFooterText

用 cFooterText 指定的文本在菜单底部中央创建一个注脚。

KEY KeyLabel

为菜单指定快捷键或键组合。请参阅 ON KEY LABEL,可得到可用键和组合键以及它们的键标记名称的列表。在此使用 KEY 子句等效于发出下列命令:

ON KEY LABEL KeyLabel ACTIVATE POPUP MenuName

附注
如果一个键具有同样的键标记和键盘宏,则键盘宏优先。不能用指定的键或组合键激活菜单。

MARGIN

在每个菜单的两边设置额外的空间,标记字符显示在菜单项左端的空间里,表明有一个附加的层叠式子菜单的箭头显示在菜单项的右端。如果省略 MARGIN,标记字符改写菜单项名的第一个字符,表示菜单层次的箭头改写菜单项的最后一个字符。

MARK cMarkCharacter

指定出现在菜单项左端的标记字符。在 FoxPro for MS-DOS 中默认标记字符是菱形。而在 Visual FoxPro、FoxPro for Windows 和 FoxPro for Macintosh 中默认的标记字符为对号。
在 Visual FoxPro 和 FoxPro for Macintosh 中忽略 MARK 子句。如果菜单并入 Visual FoxPro 系统菜单中,就使用默认的标记字符。如果菜单所在的 FoxPro 主窗口或用户自定义窗口中的字体不是 FoxFont,也忽略 MARK子句。
可以包含 MARK 将默认的标记字符改写为 cMarkCharacter 指定的字符。如果 cMarkCharacter 包含多个字符,则仅第一个字符用作标记字符。

附注
指定一个标记字符并不能给一个菜单项做标记,可用 SET MARK OF 给菜单项做标记。

MARK 子句可为菜单上所有的菜单项设置标记字符。DEFINE BAR 命令指定的标记字符优先于 DEFINE POPUP 中用 MARK 子句指定的标记字符。SET MARK OF 用来切换标记字符的打开或关闭,它也可用来为单个菜单项或为所有菜单项指定标记字符。

MESSAGE cMessageText

当选择一个菜单项时显示信息。在 FoxPro for MS-DOS 中,默认情况下,信息 cMessageText 显示在 FoxPro 主窗口最后一行的中央。信息的显示位置可以用 SET MESSAGE 改变。
在 Visual FoxPro、FoxPro for Windows 和 FoxPro for Macintosh 中,信息放在图形方式状态栏中。如果基于字符方式的状态栏用 SET STATUS ON 打开时,信息就显示在 Visual FoxPro 主窗口最后一行的中央。

MOVER

将双向箭头 () 放到菜单中被选定菜单项左边的移动钮中。可拖着这个双向箭头将一个菜单项移到菜单上的另一个位置。GETBAR( ) 可用来确定菜单上每个菜单项的位置。
不能重新调整用 PROMPT 子句创建的菜单中的菜单项。

MULTISELECT

允许用户同时从一个菜单中选择多个菜单项,当用户从一个菜单中选择一项时,菜单项的左端就放置一个标记字符。
不能从一个用 PROMPT 子句创建的菜单中选择多项。
MRKBAR( ) 可用来确定从菜单中选择的菜单项。
如果在 DEFINE POPUP 中包含了 MULTISELECT,可以包含 MARGIN 子句,在每个菜单项中为标记字符保留空间。
在下面的例子中创建一个名为 popFruits 的菜单。其中 MULTISELECT 子句创建一个允许选择多个菜单项的菜单。
四个菜单项各有一个不同的标记字符,当用户从菜单上选择菜单项时,给菜单项打开标记并由名为 yourchoice 的例程显示被选的菜单项。

CLEAR
IF NOT _DOS
MODIFY WINDOW SCREEN FONT 'foxfont', 12
ENDIF
ACTIVATE SCREEN
DEFINE POPUP popFruits FROM 5,5 ;
MULTISELECT MARGIN && 创建多重选择菜单
DEFINE BAR 1 OF popFruits ;
PROMPT '\<Apples' MARK CHR(3) && 第一个菜单项
DEFINE BAR 2 OF popFruits ;
PROMPT '\<Bananas' MARK CHR(4) && 第二个菜单项
DEFINE BAR 3 OF popFruits ;
PROMPT '\<Grapes' MARK CHR(5) && 第三个菜单项
DEFINE BAR 4 OF popFruits ;
PROMPT '\<Lemons' MARK CHR(6) && 第四个菜单项
@ 12,5 SAY 'Your choices:'
ON SELECTION POPUP popFruits DO yourchoice && Choice 例程
ACTIVATE POPUP popFruits
PROCEDURE yourchoice && 当选定时执行

@ 13,5 CLEAR
FOR gnCount = 1 TO CNTBAR('popFruits') && 菜单项数目次循环
IF MRKBAR('popFruits', gnCount) = .T. && 给选项做上标记
? PRMBAR('popFruits', gnCount) AT 5 && 显示标题
ENDIF
NEXT

PROMPT FIELD FieldName

指定一个已打开的表的字段名,该表的记录作为菜单上的菜单项。对于表中的每个记录,菜单都对应一个菜单项。当激活该菜单时,就选定了该表的工作区。

提示
如果为 PROMPT FIELD 指定的、用于菜单中的字段设置了筛选条件,可以使用 Rushmore 优化。有关 Rushmore 优化的详细内容,请参阅 SET OPTIMIZE 或《开发指南》的第十七章“优化应用程序”。

FieldName 可包含多个用加号操作符 (+) 连接的字段名和表达式。FieldName 也可以是在另一个工作区打开表中的字段名或是一个用户自定义函数。
在 FoxPro for MS-DOS 的标准(16 位)版本中,可以出现在 PROMPT FIELD 创建的菜单上的菜单项的最大数目为 32,767。如果表中有更多的记录,FoxPro 显示一条错误信息。在 FoxPro for MS-DOS 的扩展(32 位)版和 Visual FoxPro、FoxPro for Windows 以及 FoxPro for Macintosh 中,对可以出现在 PROMPT FIELD 创建的菜单上的菜单项数目没有限制。

PROMPT FILES [LIKE FileSkeleton]

创建一个显示当前目录中可用的文件名的菜单。
LIKE FileSkeleton 允许使用通配符指定在菜单上显示的文件。例如,要创建一个显示默认驱动器和路径下的表名的菜单,可使用以下命令:

PROMPT FILES LIKE *.DBF

可以包含驱动器标识符、路径标识符或同时包含两者,来创建显示在其他驱动器、其他路径上的文件名的菜单。例如,若想使创建的菜单中包含 C 驱动器 PROGRAMS 子目录下的文件名,可使用下列命令:

PROMPT FILES LIKE C:\PROGRAMS\*.PRG

PROMPT STRUCTURE

根据表的字段结构,在菜单上显示当前表中的字段名。当激活菜单时,也就选择了表所在的工作区。

RELATIVE

指定菜单项在菜单上放置的顺序。如果菜单不是用 RELATIVE 子句创建的,那么菜单项在菜单上放置的顺序由该菜单项的编号决定。菜单为没有定义的菜单项保留空间。例如,如果定义了第一项和第三项且激活了菜单,则菜单上就会为第二项保留一空行。
如果用 RELATIVE 创建菜单,菜单项就以定义它们的顺序出现在菜单上。菜单不为未定义的项保留空间。
用 RELATIVE 定义菜单允许您在 DEFINE BAR 中使用 BEFORE 和 AFTER 子句在菜单上相对于其他项的位置放置菜单项。如果菜单不是由 RELATIVE 创建,在 DEFINE BAR 中包含 BEFORE 或 AFTER 会产生错误。

运行以下两个程序实例并比较每个菜单上菜单项安置位置。

*** RELATIVE 示例 ***
DEFINE POPUP popRelatYes RELATIVE FROM 1,1
DEFINE BAR 4 OF popRelatYes PROMPT '4444'
DEFINE BAR 3 OF popRelatYes PROMPT '3333'
DEFINE BAR 2 OF popRelatYes PROMPT '2222'
DEFINE BAR 1 OF popRelatYes PROMPT '1111'
DEFINE BAR 6 OF popRelatYes PROMPT '6666' BEFORE 4
ACTIVATE POPUP popRelatYes
*** NON-RELATIVE 示例***
DEFINE POPUP popRelatNo FROM 1,1
DEFINE BAR 4 OF popRelatNo PROMPT '4444'
DEFINE BAR 3 OF popRelatNo PROMPT '3333'
DEFINE BAR 2 OF popRelatNo PROMPT '2222'
DEFINE BAR 1 OF popRelatNo PROMPT '1111'
DEFINE BAR 6 OF popRelatNo PROMPT '6666'
ACTIVATE POPUP popRelatNo

SCROLL

在创建的菜单右端放置滚动条。只有当菜单项太多而菜单装不下,或菜单太长而它所在的 Visual FoxPro 主窗口或用户自定义窗口中放不下时,才出现滚动条。

SHADOW

仅用于 FoxPro for MS-DOS。
在菜单后设置阴影。SET SHADOWS 可以用来显示或删除菜单的阴影。有关的详细内容,请参阅 SET SHADOWS。

TITLE cMenuTitleText

在菜单的顶边中央显示一个标题。cTitleText 指定菜单标题。

COLOR SCHEME nSchemeNumber

为菜单上所有元素指定颜色。默认情况下,DEFINE POPUP 创建的菜单颜色由配色方案 2 控制。

COLOR ColorPairList

为菜单上所有元素指定颜色。
有关配色方案和颜色对的详细内容,请参阅颜色概述主题。

说明
要在菜单上放置一组定义的菜单项,请使用一系列 DEFINE BAR 命令。要在菜单中放置记录、文件或字段,使用 DEFINE POPUP 中的选项 PROMPT FIELD、PROMPT FILES 或 PROMPT STRUCTURE。
当菜单显示出来并由 ACTIVATE POPUP 激活时,可在菜单上选择一个菜单项。根据选择的菜单项,可能会执行一个例程或显示并激活另一个菜单。当选择一个菜单项时显示的另一个菜单称为层叠式子菜单。有关创建子菜单的详细内容,请参阅 ON BAR。
如果使用菜单设计器创建菜单,根本没有必要使用这些命令。菜单设计器自动为菜单创建这些命令。菜单设计器使用 Visual FoxPro 系统菜单,可以通过添加自己的菜单项更新它。有关创建菜单的详细内容,请参阅创建菜单系统和《开发指南》的第十二章“设计菜单”。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-12-27
你要问什么呢!?