请教:下列函数的语法格式及功能,最好举例说明。函数有set()、acopy()、adel()、alen()和命令on key label的用法。(急!在线等待,有答

dlmaomao 2005-03-11 09:22:48
请教:下列函数的语法格式及功能,最好举例说明。函数有set()、acopy()、adel()、alen()和命令on key label的用法。我在VFP6.0教材和有关参考资料中均没有找到详细的说明,帮助文档也没有装上,现在又急需了解,麻烦各位在百忙中给予解答,先谢谢了!
...全文
365 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dlmaomao 2005-03-11
  • 打赏
  • 举报
回复
谢谢各位!给分!
dzhfly 2005-03-11
  • 打赏
  • 举报
回复
ADEL( ) 函数
示例 请参阅

删除一维数组中的一个元素或删除二维数组的一行或一列。

语法

ADEL(ArrayName, nElementNumber [, 2])

参数
ArrayName

指定一个数组,ADEL( ) 函数删除这个数组的一个元素或一行一列。

nElementNumber

指定从数组中删除第几个元素,或者第几行或第几列。如果要从数组中删除一列,必须包含可选参数 2。

附注
您可以用两种方法引用二维数组中的一个元素。第一种是用两个下标值指定元素在数组中的行和列,另一种则指定单个元素的编号。此函数和其他操作二维数组的函数需要单个元素的编号(此处为 nElementNumber)。使用 AELEMENT( ) 函数可以根据元素的行和列下标返回正确的元素编号。

有关如何引用数组中元素的详细内容,请参阅 DIMENSION。

2

从数组中删除一列。

返回值类型

数值型

说明

从数组中删除一个元素、一行或一列,但并不改变数组的大小;后续元素、行或列向数组的起始方向移动,并把最后一个元素、行或列设置为“假”(.F.)。
如果成功地删除了一个元素、行或列,则返回 1。
adel( ) 函数示例
下面的示例创建并且填充一个数组,然后搜索一个公司名。如果找到此公司名,则从数组删除这个公司名。

close databases
open database (home( ) + 'samples\data\testdata')
use customer && 打开 customer 表
select company from customer ;
where country = 'uk' ;
into array gacompanies
gncount = _tally
gcname = 'seven seas imports'
clear
display memory like gacompanies*
gnpos = ascan(gacompanies, gcname) && 搜索公司名
if gnpos != 0
*** 找到公司名后,从数组中删除这个公司名***
= adel(gacompanies, gnpos)
gncount = gncount - 1
endif
display memory like gacompanies


ALEN( ) 函数
示例 请参阅

返回数组中元素、行或列的数目。

语法

ALEN(ArrayName [, nArrayAttribute])

参数

ArrayName

指定数组名。如果参数仅包含数组名,ALEN( ) 函数则返回元素的数目。

nArrayAttribute

确定 ALEN( ) 函数返回的是数组元素的数目、数组的行数,还是数组的列数。nArrayAttribute 可以取值为 0、1 或 2。

0 指定返回数组元素数目。省略 nArrayAttribute 与指定 nArrayAttribute 为 0 作用相同。
1 指定返回数组的行数。
2 指定返回数组的列数。如果数组是一维数组,则 ALEN( ) 函数返回 0(没有列)。

返回值类型
数值型

alen( ) 函数示例
下面的示例用 afont( ) 函数创建一个数组,数组中包含所有有效字体的名称。然后用 alen( ) 函数求出数组行数,接着显示每种字体的字体名,并显示此字体的一个示例。如果已安装的字体超过 10 种,则仅显示前 10 种。

clear
=afont(gafontarray) && 包含字体名的数组
gnnumfonts= alen(gafontarray) && 已有字体数目
if gnnumfonts > 10
gnnumfonts = 10 && 显示前十种字体
endif

for ncount = 1 to gnnumfonts
? alltrim(gafontarray(ncount)) && 显示字体名
?? ' this is an example of ' ;
+ alltrim(gafontarray(ncount)) font gafontarray(ncount), 8
endfor



on key label 命令
示例 请参阅

指定当按下特定键或组合键,或者单击鼠标按钮时所要执行的命令。

语法

ON KEY [LABEL KeyLabelName] [Command]

参数
LABEL KeyLabelName

为键指定键标记,KeyLabelName 是键上的字母或数字或者指定给该键的特殊名称。下表列出了特殊的键标记名称。后面表中列出了 FoxPro for Macintosh 中例外的标记。

Visual FoxPro 键标记指定值:

键 键标记
LEFTARROW
RIGHTARROW
UPARROW
DNARROW
HOME HOME
END END
PAGE UP PGUP
PAGE DOWN PGDN
DEL DEL
BACKSPACE BACKSPACE
SPACEBAR SPACEBAR
INS INS
TAB TAB
SHIFT+TAB BACKTAB
ENTER ENTER
F1 to F12 F1, F2, F3 ...
CTRL+F1 to CTRL+F12 CTRL+F1, CTRL+F2 ...
SHIFT+F1 to SHIFT+F12 SHIFT+F1, SHIFT+F2 ...
ALT+F1 to ALT+F12 ALT+F1, ALT+F2, ALT+F3 ...
ALT+0 to ALT+9 ALT+0, ALT+1, ALT+2 ...
ALT+A to ALT+Z ALT+A, ALT+B, ALT+C ...
CTRL+LEFT ARROW CTRL+LEFTARROW
CTRL+RIGHT ARROW CTRL+RIGHTARROW
CTRL+HOME CTRL+HOME
CTRL+END CTRL+END
CTRL+PAGE UP CTRL+PGUP
CTRL+PAGE DOWN CTRL+PGDN
CTRL+A TO CTRL+Z CTRL+A, CTRL+B, CTRL+C ...
CTRL+0 CTRL+0
RIGHT MOUSE BUTTON RIGHTMOUSE
LEFT MOUSE BUTTON LEFTMOUSE
MOUSE BUTTON MOUSE
ESC ESC

Command

指定当按下特定键或组合键或者单击鼠标按钮时所执行的命令。

说明

一般来说,ON KEY LABEL 使用 DO 来执行一个过程。
在 READ,BROWSE,EDIT,CHANGE 或者用户自定义菜单的执行过程中,ON KEY LABEL 立即执行命令。如果按键或者单击鼠标时某程序正在运行,Visual FoxPro 将执行完该程序当前行后再执行 on key label 命令。在程序中创建的任何 ON KEY LABEL 键指定值在程序运行完毕后仍然有效。也可以在命令窗口中创建键指定值。
如果要恢复指定键的行为,可以使用 ON KEY LABEL KeyLabelName 命令。如果要把全部键的行为恢复正常,应使用 ON KEY 命令。

提示
为防止在执行 ON KEY LABEL 过程中递归调用,应在过程前面包含 PUSH KEY CLEAR 命令以废止所有激活的 on key label 命令。然后在过程末尾发出一个 POP KEY 命令来启用 on key label 命令。

ON KEY LABEL 键指定值在 Visual FoxPro 系统菜单栏、系统菜单、对话框和警报器等处不起作用。它们只在 Visual FoxPro 系统窗口、Visual FoxPro 文本编辑器、命令窗口、跟踪窗口等处有效。
与 ON KEY 不同,可以有多个激活的 on key label 命令。例如,可以为每个箭头键和鼠标按钮指派命令。
注意:在执行 ON KEY LABEL 时,PARAMETERS( ) 设置为 0。有关详细内容,请参阅 PARAMETERS( )。
FoxPro 中某些事件不可被俘获,因为它们在相应窗口的控制之下。特别的,当单击一个控制菜单或滚动条之类的窗口控制时,不执行 ON KEY LABEL MOUSE,ON KEY LABEL LEFTMOUSE 和 ON KEY LABEL RIGHTMOUSE 。还要注意在 Visual FoxPro 中,ON KEY LABEL 支持 CTRL+0,它将该组合键重定义为向字段中输入空值。

在 FoxPro for Macintosh 中,ON KEY LABEL 支持 命令键,可以用 CMD 命令指定它。CTRL 与 命令键在 FoxPro for Macintosh 中等价并且可互换使用。如果应用程序需要运行在其他 FoxPro 平台上,为获得最大的兼容性,最好使用 CTRL 键。
因为 Macintosh 的鼠标只有一个按钮,所以在单击鼠标时,应使用 ON KEY LABEL LEFTMOUSE 或 ON KEY LABEL MOUSE 来执行命令。当按下 + Option 键的同时单击鼠标时,应使用 ON KEY LABEL RIGHTMOUSE 来执行命令。

Macintosh 也支持为 RETURN 键指定值。ON KEY LABEL RETURN 与 ON KEY LABEL ENTER 等价。同样 ON KEY LABEL DEL 与 ON KEY LABEL BACKSPACE 等价。
在 FoxPro for Macintosh 中使用 CTRL+OPTION 来模仿 Visual FoxPro、FoxPro for Windows 以及 FoxPro for MS-DOS 中的 ALT 键。
有关 FoxPro for Macintosh 中键盘与键击的详细内容,请参阅《安装与 Macintosh 功能指南》中“键盘差异”一节。


on key label 命令示例
下例在箭头被按下时显示一条信息。

set talk off
clear
on key label rightarrow ? 'right arrow'
on key label leftarrow ? 'left arrow'
on key label uparrow ? 'up arrow'
on key label dnarrow ? 'down arrow'
set escape on
store .f. to glexit
on escape store .t. to glexit
store 0 to temp
@ 2,0 say 'press an arrow key to test on key label, <esc> to exit'
define window wenter from 10,20 to 14,60 double
activate window wenter
do while not glexit
enddo
deactivate window wenter
on key


Hotlion 2005-03-11
  • 打赏
  • 举报
回复
帮你顶一下。
dzhfly 2005-03-11
  • 打赏
  • 举报
回复
下面的示例根据 customer 表中选定的记录创建一个数组,然后用 acopy() 函数创建一个新的数组。

close databases
open database (home( ) + 'samples\data\testdata')
use customer && 打开 customer 表

select distinct company ;
from customer ;
order by company ;
where country = 'germany';
into array gacompanies
= acopy(gacompanies, gacompaniestemp) && 对数组进行复制
clear
display memory like gacompaniestemp
dzhfly 2005-03-11
  • 打赏
  • 举报
回复
acopy( ) 函数
示例 请参阅

把一个数组的元素复制到另一个数组中。

语法

ACOPY(SourceArrayName, DestinationArrayName
[, nFirstSourceElement [, nNumberElements [, nFirstDestElement ]]])

返回值类型

数值型

参数

SourceArrayName, DestinationArrayName

将源数组 SourceArrayName 中的元素一对一地复制到目标数组 DestinationArrayName
中去,源数组中的元素将替换目标数组的元素。
数组可以是一维或二维数组。如目标数组不存在,Visual FoxPro 将自动创建目标数组。这时,目标数组的大小与源数组大小相同。

注意

可以用两种方法引用二维内存变量数组的元素.第一种是用两个下标值指定元素在数组中的行和列,另一种则指定单个元素的编号。此函数和其他操作二维数组的函数需要单个元素编号(此处为 nFirstSourceElement 和 nFirstDestElement)。使用 AELEMENT( ) 函数,可以根据元素的行和列下标,返回二维数组中某元素的正确元素编号。

nFirstSourceElement

指定源数组中第一个被复制元素的编号,复制从此元素开始(复制时,包含编号为 nFirstSourceElement
的元素)。如果复制时不使用元素编号 nFirstSourceElement,则从源数组的第一个元素开始复制。

nNumberElements

指定复制的源数组的元素数目。如果 nNumberElement 为 -1,则从元素 nFirstSourceElement 开始,复制源数组中所有的元素。

nFirstDestElement

指定目标数组中第一个被替换的元素。

说明

acopy( ) 函数返回复制到目标数组中的元素个数。

dzhfly 2005-03-11
  • 打赏
  • 举报
回复
set( ) 函数
请参阅

返回各种 SET 命令的状态。

语法

SET(cSETCommand [, 1 | 2])

参数
cSETCommand

一个字符表达式,指定要返回当前状态信息的 SET 命令。指定命令的当前设置作为一个字符串或数值串返回。

1 | 2

返回一个 SET 命令的附加信息。包含这个参数并不意味着对所有 SET 命令都返回附加信息,它只是返回下表所列的标有 1 和 2 的命令附加信息。

SET 命令 返回值
ALTERNATE ON 或 OFF
ALTERNATE, 1 FileName
BELL, 1 cWAVFileName
CENTURY ON 或 OFF
CENTURY, 1 nCentury
CENTURY, 2 ROLLOVER nYear
CLOCK ON 或 OFF
CLOCK, 1 nRow 和 nColumn
COMPATIBLE ON 或 OFF
COMPATIBLE, 1 PROMPT 或 NOPROMPT
COVERAGE,1 FileName
CURRENCY LEFT 或 RIGHT
CURRENCY, 1 cCurrencySymbol
DATE AMERICAN, ANSI, BRITISH/FRENCH, GERMAN, ITALIAN, JAPAN, USA, MDY, DMY, 或 YMD
DATE, 1 日期序列:
0 – MDY
1 – DMY
2 – YMD
DELIMITERS ON 或 OFF
DELIMITERS, 1 cDelimiters
EVENTTRACKING ON 或 OFF
EVENTTRACKING, 1 FileName
FIELDS ON 或 OFF
FIELDS, 1 FieldName1, FieldName2, ...
FIELDS, 2 LOCAL 或 GLOBAL
HELP ON 或 OFF
HELP, 1 FileName
KEY eExpression2, eExpression3
KEY, 1 eExpression2
KEY, 2 eExpression3
MESSAGE nRow
MESSAGE, 1 cMessageText
MOUSE ON 或 OFF
MOUSE, 1 nSensitivity
PRINTER ON 或 OFF
PRINTER, 1 FileName 或 PortName
PRINTER, 2 默认的 Windows 打印机名
PRINTER, 3 默认的 Visual FoxPro 打印机名
(在 Visual FoxPro 打印或页面设置对话框中设置)
RESOURCE ON 或 OFF
RESOURCE, 1 FileName
TALK ON 或 OFF
TALK, 1 WINDOW, NOWINDOW 或 WindowName
TEXTMERGE ON 或 OFF
TEXTMERGE, 1 cLeftDelimiter and cRightDelimiter
TOPIC cHelpTopicName | lExpression
TOPIC, 1 nContextID

说明
不能用 set( ) 函数指定所有 SET 命令,可以指定的命令列在上面参数部分的表中。
SET ( ) 可以识别所有 Visual FoxPro 中 SET 关键字的四字符缩写形式。例如,STAT 和 PRIN 可以分别用来代替 SET STATUS 和 SET PRINTER。
set( ) 函数与 SYS(2001) 的作用一样。

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧