
通过WindowsAPI函数可以获取光标所在处的窗口的句柄。在Windows *** 作系统中,可以使用API函数“HWNDWindowFromPoint(POINTPoint)”获取当前虚拟光标的位置,返回值是一个BOOL类型,表示函数执行是否成功。如果函数执行成功,就可以获取到虚拟光标的位置,可以通过该位置来获取句柄。
VF常用命令和程序命令一、主要命令:
1、CREATE
作用:建立一个新的表。
格式:CREATE [<文件>|](注意,命令字符可取前面四个字符,后面可省略不写,即CREA
,下同;中括号表示其中的参数是可选的;|管道符号表示两个参数只能选择一个,不能同
时选择,下同。)
说明:文件指建立以dbf为扩展名的VFP数据库文件,在命令后面加上一个问号表示系统会
d出
对话框,要求用户输入想要建立的表名。在命令中不加文件名或问号系统也会d出对话框,
要求用
户输入想要建立的表名。
2、MODIFY STRUCTURE
作用:显示表文件结构,并允许修改此表的结构。
格式:MODIFY STRUCTURE
说明:只有在用USE命令打开表文件以后,才能显示或修改表文件的结构。
3、APPEND
作用:在当前表的尾部(无论表中有无记录)追加记录(在当前表指当前正使用的表)。
格式:APPEND [BLANK]
说明:在APPEND命令后面加上BLANK参数表示在当前表的尾部添加一条空白记录。无BLANK参
数时,表示在当前表的尾部添加一条记录并要求用户输入相应的字段内容。
4、INSERT
作用:在表文件中间插入一个新记录。
格式:INSERT [BEFORE] [BLANK]
说明:INSERT 在当前记录后插入一记录;
INSERT BEFORE 在当前记录前插入一记录;
INSERT BEFORE BLANK 在当前记录前插入一空记录。
5、BROWSE
作用:主要用于打开浏览窗口,查阅表文件并同时进行修改。
格式:BROWSE
6、USE
作用:打开和关闭表文件。
格式:USE [<文件名>]
USE
说明:前一个命令用来打开<文件名>指定的表文件,该表如有备注型字段,则同时打开相应
的
备注文件(fpt文件);后一个命令关闭当前打开的表文件。
7、LIST和DISPLAY
作用:显示表(dbf)的内容、结构或状态。
格式:LIST|DISPLAY [OFF] [<范围>] [FIELDS] <表达式表> [WHILE <条件>] [FOR <条件
>]
[TO PRINT|TO FILE <文件>]
LIST|DISPLAY STRUCTURE TO PRINT|TO FILE <文件>]
LIST|DISPLAY STATUS [TO PRINT|TO FILE <文件>]
说明:命令带OFF参数表示不显示记录号,范围指定对哪些记录进行 *** 作,范围包括:
RECORD n
第几号记录、NEXT n 当前记录开始的几个记录、REST 自当前记录开始至文件末尾的所有记
录、ALL
所有的记录。不选范围则隐含范围为ALL;FIELDS后跟字段名,字段名与字段名之间用逗号
分
隔。WHILE后跟条件,FOR后面也跟条件,区别是,WHILE后的条件如果满足,便停止查找;
FOR后的
条件查找所有满足条件的记录。TO PRINT和TO FILE <文件>分别表示将显示结果在打印机上
打印出
来和将显示结果输出到文件。DISPLAY命令在显示记录满屏后,要求用户按任意键继续显示
,并且在
该命令中,如果省略范围仅显示当前记录。格式中,下面两个命令分别为显示表结构(
STRUCTURE)和工作状态(STATUS)。
8、记录的定位
作用:用记录指针(POINTER)定位记录。
格式:GO[TO] RECORD n|TOP|BOTTOM
n
SKIP [+|-]
说明:第一个命令又叫绝对定位,其中,RECORD n定位到n号记录,TOP定位到第1个记录,
BOTTOM定位到最后一个记录。第二个命令定位到第n个记录,n是一个数值。第三个命令又叫
相对定
位,它以当前记录为基准前移(-)或后移(+)n个记录,不选任选项,则默认记录指针后
移一个记录。
9、CHANGE和EDIT
作用:显示要编辑或修改的字段。
格式:CHANGE|EDIT [<范围>] [FIELDS <字段名表>] [WHILE <条件>] [FOR <条件>]
10、BROWSE
作用:打开一个"浏览"窗口,供用户浏览或修改记录。
格式:BROWSE [FIELDS <字段名表>]
11、REPLACE
作用:用表达式的值代替命令中与之相对应的字段的内容。
格式:REPLACE [<范围>] <字段1> WITH <表达式1>[,<字段2> WITH <表达式2>] [FOR <条
件>
] [WHILE<条件>]
12、DELETE、PACK、ZAP和RECALL
作用:分别是给要删除的记录作删除标记、彻底删除、删除所有记录和取消被选中的表记录
的
删除标志。
格式:DELETE [<范围>] [WHILE<条件>] [FOR <条件>] (特例:DELETE FILE
FILENAMEDBF,
该命令删除指定的表文件)
PACK
ZAP
RECALL [<范围>] [FOR <条件>] [WHILE<条件>]
13、SORT和INDEX
作用:分别是建立一个其记录以新的物理顺序排列的新表文件和对当前表根据关键字表达式
的值
从小到大排列,并存入TO后指定的索引文件名的文件或复合索引文件的一个标识中。
格式:SORT TO <文件名> ON <字段名1> [/A] [/C] [/D][,<字段名2> [/A] [/C]
[/D]]
[ASCENDING|DESCENDING] [<范围>] [FOR <条件>] [WHILE<条件>] [FIELDS<字段表>]
INDEX ON <关键字表达式> TO <文件名>
INDEX ON <关键字表达式> TAG <标识名> [OF <文件名>] [FOR <条件>]
说明:第1个命令中,/A按字段名升序排序,/D按字段名降序排序,/C忽略大小写,针对字
符型
关键字而言,ASCENDING和DESCENDING分别表示升序和降序。第1个命令建立dbf表文件,第
2个命令
建立idx单一索引文件,第3个命令建立cdx复合索引文件(Compound Index)。
14、USE <表文件名> INDEX <索引文件名表>、SET INDEX TO和SET ORDER TO
作用:分别是打开表文件的同时打开索引文件、打开索引文件和改变主索引。
格式:USE <表文件名> INDEX <索引文件名表>
SET INDEX TO [<索引文件名表>]
SET ORDER TO [<索引文件名>](特例:重新索引命令:REINDEX)
15、FIND、SEEK和LOCATE及CONTINUE
作用:前两个命令FIND和SEEK是在一个已经建立了索引文件的表中,定位到关键字中的内容
与命
令行中字符串相同的第一个记录。后一个命令在用USE打开表文件以后,直接查询表中字段
内容。
格式:FIND <"字符串">|<字符串>
SEEK <表达式>
LOCATE [<范围>] [FOR <条件>] [WHILE<条件>]
CONTINUE
说明:FIND命令与SEEK命令的区别是前者后跟字符串,而后者后跟表达式。在用LOCATE命令
找到
一个匹配记录后,可用CONTINUE命令搜索表的剩余部分来寻找其他匹配的记录。
16、COUNT
作用:统计当前表文件中符合条件的记录数。
格式:COUNT [<范围>] [FOR <条件>] [WHILE<条件>] [TO <内存变量名>]
说明:内存变量名可用除参数外的任意字符。
17、SUM
作用:对当前表中选中记录的全部或指定的数值字段或由指定字段组成的数值表达式累加求
和。
格式:SUM [<范围>] [数值<表达式>] [TO <内存变量名表>] [FOR <条件>] [WHILE<条件>]
18、AVERAGE
作用:对当前表中选中记录的全部或部分数值型字段及其组成的表达式求平均值并显示。
格式:AVERAGE [<范围>] [数值<表达式>] [TO <内存变量名表>] [FOR <条件>] [WHILE<条
件>]
二、常用函数
1、数学函数
函数 用途
ABS(<数值表达式>) 绝对值,|x|
CEILING(<数值表达式>) >=自变量的最小整数
EXP(<数值表达式>) 对基E的幂,e=271828
FLOOR(<数值表达式>) <=自变量的最大整数
INT(<数值表达式>) 取整(舍尾)自变量
LOG(<数值表达式>) 自变量的自然对数,ln x
LOG10(<数值表达式>) 自变量的普通对数,lg x
MAX(<表达式1>,<表达式2>) 两个值的最大值
MIN(<表达式1>,<表达式2>) 两个值的最小值
MOD(<数值表达式1>,<数值表达式2>) 求余数
RAND([<数值表达式1>]) 返回伪随机数
ROUND(<数值表达式1>,<数值表达式2>) 四舍五入第一个自变量
SIGN(<数值表达式>) 自变量的符号
SQRT(<数值表达式>) 平方根(正根)
2、字符串 *** 作函数
函数 用途
&<内存变量> 用于代替内存变量内容
LEN(<字符串表达式>) 返回字符串表达式的字符个数
SPACE(<数值表达式>) 生成空格
SUBSTR(<字符串表达式>,<数值表达式n>[,<数值表达式L>]) 求子字符串,从指定的字
符串表达式第n个开始,总长为L的字符串
LOWER(<字符串表达式>) 将字符串字母转换成小写字母
UPPER(<字符串表达式>) 将字符串字母转换成大写字母
TRIM(<字符串表达式>) 删除字符串尾空格
ASC(<字符串表达式>) 返回字符串表达式最左边的第一个字符的ASCII码
CHR(<数值表达式>) 将数值表达式转换成字符
AT(<字符串表达式1>,<字符串表达式2>[,<数值表达式n>]) 确定字符串表达式1在字符
串表达式2中的位置,n为字符串表达式第几次出现
STR(<数值表达式>[,<数值表达式L>][,<数值表达式n>) 将数值转换为字符串,L为数值
表达式总长,n为小数位数
VAL(<字符串表达式>) 将数字字符串转换为数字
TYPE(<表达式>) 检测表达式值的数据类型
LTRIM(<字符串表达式>) 删除字符串左部空格
RTRIM(<字符串表达式>) 删除字符串右部空格
LEFT(<字符串表达式>,<数值表达式n>) 取字符串左边部分字符,n为返回的字符个数
RIGHT(<字符串表达式>,<数值表达式n>) 取字符串右边部分字符,n从右边截取字符个数
3、表(dbf) *** 作函数
函数 用途
BOF([<工作区号或别名>]) 查表文件开始函数
EOF([<工作区号或别名>]) 表文件结尾测试函数
RECNO([<工作区号或别名>]) 测试当前或指定工作区表的当前记录号
DELETED([<工作区号或别名>]) 记录删除测试函数
FILE(<"字符串">) 测试文件是否存在函数
DBF([<工作区号或别名>]) 检测表的文件名函数
4、日期、时间函数
函数 用途
DATE() 查系统当前日期函数
TIME([<数值表达式>]) 查系统当前时间函数
YEAR(<日期型表达式>|<日期时间型表达式>) 由日期查年函数
MONTH(<日期型表达式>|<日期时间型表达式>) 从日期查月份函数
CMONTH(<日期型表达式>|<日期时间型表达式>) 由日期查月份名函数
DAY(<日期型表达式>|<日期时间型表达式>) 从日期查当月的日函数
DOW(<日期型表达式>|<日期时间型表达式>[,<数值表达式>]) 由日期查星期函数
CDOW(<日期型表达式>|<日期时间型表达式>) 从日期查星期名函数
DTOC(<日期型表达式>|<日期时间型表达式>) 日期转换为字符函数
CTOD(<字符串表达式>) 字符串转换为日期函数
CTOT(<字符串表达式>) 返回日期时间值函数
TTOC(<日期时间型表达式>) 返回字符值
5、显示、打印位置函数
函数 用途
ROW() 判断光标行位置函数
COL() 判断光标列位置函数
INKEY([<数值表达式>]) 检测用户所击键对应的ASCII码函数,数值表达式以秒为单位等
待击键的时间
6、其他函数
函数 用途
DISKSPACE() 返回默认磁盘驱动器中可用字节数函数
OS() 检测 *** 作系统名称的函数
VERSION() 返回VFP版本号的函数
三、主要程序语句
1、条件判断语句
格式:(1)IF <条件>
<命令语句组>
ENDIF
说明:如果条件为真,则执行命令语句组中的各语句,否则跳过这些命令语句不执行,
而执行ENDIF后的语句。
(2)IF <条件>
<命令语句组1>
ELSE
<命令语句组2>
ENDIF
说明:如果条件为真,执行命令语句组1,否则执行命令语句组2。
(3)IF <条件1>
IF <条件2>
<命令语句组1>
ELSE
<命令语句组2>
ENDIF
ELSE
<命令语句组N>
ENDIF
说明:进行多重条件的嵌套选择。
(4)DO CASE
CASE <条件1>
<命令语句组1>
CASE <条件2>
<命令语句组2>
CASE <条件3>
<命令语句组3>
CASE <条件N>
<命令语句组N>
[OTHERWISE]
[<命令语句组N+1>]
ENDCASE
说明:依次判断条件,转入条件为真的命令语句组中执行。当所有条件都不成立时,若有
OTHERWISE项,则执行命令语句组N+1,否则执行ENDCASE后面的语句。
2、循环语句
格式:(1)DO WHILE <条件>
<命令语句组>
[LOOP]
<命令语句组>
[EXIT]
<命令语句组>
ENDDO
说明:判断条件是否为真,如为真就重复执行循环体中的命令语句组,直到条件为假,结束
循
环。
(2)SCAN
<命令语句组>
ENDSCAN
说明:在一个表中建立一个执行命令语句组的循环,并执行对每一条记录的 *** 作,直到表文
件
记录完为止。
VFP常用函数使用说明
1、数值运算函数
函数 *** 作 例 结果
SQRT(x) 求平方根 SQRT(9) 3
INT(x) 取整数 INT(314) 3
ROUND(x) 四舍五入 ROUND(314159,4) 31416
MOD(x,y) 求X除以Y的余数 MOD(25,4) 1
MAX(x,y) 求X,Y中的最大值 MAX(7,8) 8
MIN(x,y) 求X,Y中的最小值 MIN(1,2,3) 1
2、字符中 *** 作函数
函数名 *** 作 例 结果
UPPER(S) 小写字母 UPPER(abc) ABC
LOWER(S) 大写字母 LOWER(ACD) acd
LEN(S) 求字符串的长度 LEN("中国1号") 7
AT(S1,S2) 在字符串S2,找字符串S1 AT("H","CHINA") 2
SUBSTR(S,I,N) 在S字符串中的第I个字符起取N个字符 SUBSTR('TECHNOLO',3,3) CHN
LEFT(S,N) 从字符串S左边取N个字符 LEFT("中国人",4) 中国
RIGHT(S,N) 从字符串S右边取N个字符 S=‘12345'
RIGHT(S,3) 345
SPACE(N) 生成N个空格 "合计"+SPACE(2)+"123" 合计123
TRIM(S) 消除字符串尾部空格 TRIM("姓名 ") 姓名
ALLTRI(S) 消除字符串中所有空格 ALLTRIM("李 丽") 李丽
STUFF(S1,N1,N2,S2) 用字符串S2替换S1中第N1个字符起的N2个字符 STUFF("NOW",2,
1,"E") NEW
& 宏替换 P="G2"
USE &P USE G2
3、日期和时间函数
函数名 *** 作 例 结果
DATE() 求当前日期 DATE() 2001/11/12
DATETIME() 求当前日期和时间 DATETIME() 2001/11/12/0:22:33am
YEAR(D) 求年份 YEAR(DATE()) 2001
MONTH(D) 求月份(数值) MONTH(DATETIME()) 11
CMONTH(D) 求月份(字符) MONTH(DATETIME()) Novenber
DAY(D) 求日期 DAY(DATE()) 12
DOW(D) 求星期几(数值) DOW(DATE()) 1
CDOW(D) 求星期几(英文) CDOW(DATE()) sunday
TIME(D) 求当前时间 TIME(DATE()) 10:20:38am
4、数据类型转换函数
函数名 *** 作 例 结果
ASC(S) 求第一个字符串的ASCII码 ASC("what") 87
CHR(N) 求ASCII码的字符 CHR(87) w
STR(R,L,D) 数值转换成字符,L为长度,D为小数位数 X=31415
STR(X,6,2) 314
VAL(S) 字符串转换为数值 VAL("123") 12300
CTOD(S) 字符串转日期 CTOD('11/01/2002') 11/01/2002
DTOC(D) 日期转换成字符串 DTOC(DATE()) 11/01/2002
DTOS(D) 把日期转成年月日式的字符串 DTOS(DATE()) 20021101
CTOT(C) 字符串转成日期时间型 CTOT(11/01/2002 10:30:50am) 11/01/2002 10:30:50am
DTOT(D) 日期型转为日期时间型 DTOT(DATE()) 11/25/2001 00:00:01am
TTOC(T) 日期时间型转为字符型 TTOC(DATETIME()) 11/25/2001 00:00:01am
TTOD(T) 日期时间型转为日期型 TTOD(DATETIME()) 11/25/2001
IIF(LE,E1,E2) 逻辑判断 IIF(A>0,"YES","NO") YES
5、检测函数
函数名 *** 作 例 结果
RECNO() 检测当前记录号 RECNO() 1
RECCOUNT() 检测当前记录数 RECCOUNT() 12
BOF() 开始记录 BOF() 1
EOF() 最后记录 EOF() 12
FOUND() 返回查找结果 FOUND() T
ROW() 返回当前行坐标 ROW() 1
COL() 返回当前列坐
VBA讲的是逻辑,那么从逻辑上来说
单元格的位置可以作为坐标来反馈,故可以使用Cells(SelectionRow, SelectionColumn)来确定当前光标所处的坐标,但这仅仅局限于一个单元格,cells(r,c)分别为行号和列号,通过坐标来判断光标所处位置。同样的,如果用cells(r,c+1)则可以 *** 作光标所处单元格的右数1个单元格的属性,并且在 *** 作右侧单元格时光标依然在当前的单元格上,所以如果下一条命令是cells(r+1,c)则可 *** 作下方相邻单元格,举个例子就是如果cells(r,c)是A1,cells(r,c+1)就是B1,cells(r+1,c)是A2
那么只要让textbox的值 = Cells(SelectionRow, SelectionColumn)Value 即=cells(r,c)的值,就可以让textbox显示出当前光标所处单元格的值。也就是无论你光标移动到哪里,窗体都能显示出光标所处的单元格的值
最后,你提到的“右击”,VBA无法判断左击还是右击,但无论你怎么击都属于“选中 or 激活”这个 *** 作,所以 无论你左击还是右击某个单元格,Cells(SelectionRow, SelectionColumn)都能指出当前激活单元格的坐标。
32、在浏览窗口中,能将一条记录进行逻辑删除的 *** 作是( d )。
A) 将光标定位于该记录,按Ctrl+T键
B) 将光标定位于该记录,按Delete键
C) 将光标定位于该记录,单击表菜单中的“切换删除标志”选项
D) 单击该记录前的白色小方块,使其变黑
33、表文件中有数学,英语,计算机和总分四个数值型字段,要将当前记录的三科成绩汇总后存入总分字段中,应使用命令(d )。
A) TOTAL 数学+英语+计算机 TO 总分
B) REPLACE 总分 WITH 数学+英语+计算机
C) SUM 数学+英语+计算机 TO 总分
D) REPLACE ALL 数学+英语+计算机 WITH 总分
34、启动VFP后,屏幕上出现两个窗口:一个是VFP的主窗口,另一个是( b )
A) 文本窗口 B) 命令窗口 C) 帮助窗口 D) 对话框
35、要求表文件某数值型字段的整数是4位,小数是2位,其值可能为负数,该字段的宽度应定义为 ( a)
A) 8位 B) 7位 C) 6位 D) 4位
36、要使学生数据表中不出现同名学生的记录,需要建立( b )
A) 字段有效性规则 B) 字段属性设置
C) 记录有效性规则 D) 设置触发器
37、如果要给当前表增加一个字段,应使用的命令是( c )
A) APPEND B) MODIFY STRUCTURE C) INSERT D) EDIT
38、在VFP环境下,若已打开ADBF表文件,统计该表中的记录数,使用的命令是 ( b )
A) TOTAL B) COUNT C) SUM D) AVERAGE
39、使用List命令时,如果范围短语为ALL或REST或省略,则执行该命令后记录指针指向( c )
A) 末记录 B) 首记录 C) 末记录的后面 D) 首记录的前面
40、要从某表文件中真正删除一条记录,应当( c )
A) 先用DELETE命令,再用ZAP命令 B) 直接用ZAP命令
C) 先用DELETE命令,再用PACK命令 D) 直接用DELETE命令
41、设表TXLDBF中有20条记录。在VFP命令窗口中执行以下命令序列,最后显示的结果是( c )
USE TXL
SKIP 3
COUNT TO N
N
A) 0 B) 3 C) 4 D) 20
42 、在Visual FoxPro中,可以对字段设置默认值的表( c )
A) 必须是数据库表 B) 必须是自由表
C) 自由表或数据库表 D) 不能设置字段的默认值
43 、在表的 *** 作中,DELE命令的作用是( b )
A) 将记录从表中彻底删除 B) 给要删除的记录做删除标记
C) 不能删除记录 D) 删除整个表中的记录
44 、在浏览窗口打开的情况下,若要向当前表中连续添加多条记录应使用( c )
A) "显示"菜单中的"追加方式" B) "表"菜单中的"追加新记录"
C) "表"菜单中的"追加记录" D) 快捷键Ctrl+Y
45、不允许记录中出现重复索引值的索引是 ( c )
A) 主索引 B) 主索引、候选索引、普通索引
C) 主索引和候选索引 D) 主索引、候选索引和唯一索引
46、可以伴随着表的打开而自动打开的索引是(c )。
A) 单一索引文件(IDX) B) 复合索引文件(CDX)
C) 结构化复合索引文件 D) 非结构化复合索引文件
47、表中相对移动记录指针和绝对移动记录指针的命令分别为( c )。
A) Locate和Skip B) Locate和Go
C) Skip和Go D) Locate和Find
48、下面有关索引的描述正确的是( a )
A) 建立索引以后,原来的数据库表文件中记录的物理顺序将被改变
B) 索引与数据库表的数据存储在一个文件中
C) 创建索引是创建一个指向数据库表文件记录的指针构成的文件
D) 使用索引并不能加快对表的查询 *** 作
仅供参考!
scan本身就具备记录指针向下移动的功能,当循环内语句执行完毕,重新返回到scan时,则记录指针自动向下移动一个,如果你的循环体内有skip语句,则记录指针在skip这个位置就向下移动了一个,然后在scan又向下移动了一个,也就是移动了两次了。
在调试器窗口中的“调试”菜单项包含执行程序、选择执行方式、终止程序执行、修改程序以及调整程序执行速度等命令。下面是各命令的具体功能:
(1)运行:执行在跟踪窗口中打开的程序。如果在跟踪窗口里还没有打开程序,那么选择该命令将会打开“运行”对话框。当用户从对话框中指定一个程序后,调试器随即执行此程序,并中断于程序的第一条可执行代码上。
(2)继续执行:当程序执行被中断时,该命令出现在菜单中。选择该命令可使程序在中断处继续往下执行。
(3)取消:终止程序的调试执行,并关闭程序。
(4)定位修改:终止程序的调试执行,然后在文本我窗口打开调试程序。
(5)跳出:以连续方式而非单步方式继续执行被调用模块程序中的代码,然后在调用程序的调用语句的下一行处中断。
(6)单步:单步执行下一行代码。如果下一行代码调用了过程或者方法程序,那么该过程或者方法程序在后台执行。
(7)单步跟踪:单步执行下一行代码。
(8)运行到光标处:从当前位置执行代码直至光标处中断。光标位置可以在开始时设置,也可以在程序中断时设置。
(9)调速:打开“调整运行速度”对话框,设置两代码行执行之间的延迟秒数。
(10)设置下一条语句:程序中断时选择该命令,可使光标所在行成为恢复执行后要执行的语句。
以上就是关于如何获取虚拟光标停留位置的句柄全部的内容,包括:如何获取虚拟光标停留位置的句柄、谁能提供VFP里常用的命令谢、VBA中如何获取当前鼠标位置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)