主题:[讨论]COMMAND的CLICK事件還有行數規定嗎?
GEORGECHIN
[专家分:440] 发布于 2009-12-26 20:01:00
[size=2] 今遇到一怪事.在一COMMAND的CLICK事件中用DO CASE嵌套(層數才兩層,共有22 CASE選項),當我一個一個的把CASE選項加進去時,加到第20個選項時,被報錯.其報錯的錯誤碼如下:
AA=&CNT1LJ.COMBO1.DISPLAYVALUE
BB=&CNT1LJ.COMBO2.DISPLAYVALUE
DO CASE
CASE &CNT1LJ.OPTIONGROUP1.VALUE=1 [color=FF0000]&&首先是這里報錯[/color](沒加第20個選項前這里是沒有任何錯誤的)
DO CASE
CASE AA=1
CASE AA=2
*
*
*
CASE AA=22
ENDC
DO CASE
CASE BB=1
THISFORM.LOCKSCREEN=.T. &&這里是一些顯示用的語句,為了一次性刷到位,暫時關閉了刷新.
*
*
CASE BB=5
ENDC
CASE &CNT1LJ.OPTIONGROUP1.VALUE=2
ENDC
WITH &CNT2LJ.COMMANDGROUP1 [color=FF0000]&&然后就是這里報錯.[/color]
.COMMAND1.ENABLED=.F.
.COMMAND2.ENABLED=.F.
ENDW
THISFORM.LOCKSCREEN=.F.
RETU
1.以上這一個事件大約有3000行代碼,如果我拿掉1~22個分支中的一個,其代碼可以運行.
2.第一外報錯的地方我如果把CASE &CNT1LJ.OPTIONGROUP1.VALUE=1改成如下:
CC=&CNT1LJ.OPTIONGROUP1.VALUE
DO CASE
CASE CC=1
這里就不再報錯.
以上請問各位朋友,是什麼原因導至呢,如果是"&"代換是問題,為何不加其中一個分支選項又不報錯呢?
[/size]
最后更新于:2009-12-26 20:56:00
回复列表 (共19个回复)
11 楼
wuzhouhong [专家分:10890] 发布于 2010-01-19 15:05:00
另外,
AA=&CNT1LJ.COMBO1.DISPLAYVALUE
BB=&CNT1LJ.COMBO2.DISPLAYVALUE
DISPLAYVALUE的属性是字符串,让其
AA=1显然是不正常的
但是因为是宏替换,程序保存时不能检查出问题,但是一运行就会报错
12 楼
GEORGECHIN [专家分:440] 发布于 2010-01-19 15:08:00
[quote]我建议你在这里插入
DO CASE
CASE &CNT1LJ.OPTIONGROUP1.VALUE=1
变成
Messagebox("&CNT1LJ.OPTIONGROUP1.VALUE")
DO CASE
CASE &CNT1LJ.OPTIONGROUP1.VALUE=1
你检查下宏替换后的语句是不是出了问题
使用with
endwith
只会让程序更清楚,因为重复的部分已经在with里面了,中间的部分都是必要的代码内容,一点也不重复
[/quote]
大哥,看來我們還真是有緣,我第一次想到的就是用MESSAGEBOX去測.但結果很讓人失望:MESSAGEBOX能夠正確地返回值,但一到CASE &CNT1LJ...就OVER掉了.有時甚至是VFP9.0挂掉退出了.
13 楼
GEORGECHIN [专家分:440] 发布于 2010-01-19 15:13:00
[quote]另外,
AA=&CNT1LJ.COMBO1.DISPLAYVALUE
BB=&CNT1LJ.COMBO2.DISPLAYVALUE
DISPLAYVALUE的属性是字符串,让其
AA=1显然是不正常的
但是因为是宏替换,程序保存时不能检查出问题,但是一运行就会报错[/quote]
兄弟,DISPLAYVALUE屬性可以轉換的嘛,就算未處理,程序運行時,他會報數據不匹配這個錯誤的啊.這個不是問題.
估計是樓上所說代碼太長.我轉到PRG中,有123KB的.但是從CLICK中調用PRG,沒有任何問題啊.
14 楼
wuzhouhong [专家分:10890] 发布于 2010-01-19 15:18:00
这不就清楚问题了嘛?你都知道那行出问题了,你把宏替换改成绝对引用,再报错那就是程序的问题,不报错那就是宏替的问题
15 楼
GEORGECHIN [专家分:440] 发布于 2010-01-19 15:32:00
[quote]这不就清楚问题了嘛?你都知道那行出问题了,你把宏替换改成绝对引用,再报错那就是程序的问题,不报错那就是宏替的问题[/quote]
大哥,我不是說我的疑惑在哪了嗎?不是我不知道問題出在哪,而是不知道為什麼會出這種問題.因為如果是宏的問題,為何我減少CASE,程序就OK!
16 楼
wuzhouhong [专家分:10890] 发布于 2010-01-19 15:58:00
[quote][quote]这不就清楚问题了嘛?你都知道那行出问题了,你把宏替换改成绝对引用,再报错那就是程序的问题,不报错那就是宏替的问题[/quote]
大哥,我不是說我的疑惑在哪了嗎?不是我不知道問題出在哪,而是不知道為什麼會出這種問題.因為如果是宏的問題,為何我減少CASE,程序就OK![/quote]
报错信息是什么?
17 楼
GEORGECHIN [专家分:440] 发布于 2010-01-19 20:15:00
[quote][quote][quote]这不就清楚问题了嘛?你都知道那行出问题了,你把宏替换改成绝对引用,再报错那就是程序的问题,不报错那就是宏替的问题[/quote]
大哥,我不是說我的疑惑在哪了嗎?不是我不知道問題出在哪,而是不知道為什麼會出這種問題.因為如果是宏的問題,為何我減少CASE,程序就OK![/quote]
报错信息是什么?[/quote]
多數報的是非法變量,更多的時候就是VFP挂掉退出--先是不反應,然后VFP道歉,最后退出.
18 楼
wuzhouhong [专家分:10890] 发布于 2010-01-19 23:16:00
[quote][quote][quote][quote]这不就清楚问题了嘛?你都知道那行出问题了,你把宏替换改成绝对引用,再报错那就是程序的问题,不报错那就是宏替的问题[/quote]
大哥,我不是說我的疑惑在哪了嗎?不是我不知道問題出在哪,而是不知道為什麼會出這種問題.因為如果是宏的問題,為何我減少CASE,程序就OK![/quote]
报错信息是什么?[/quote]
多數報的是非法變量,更多的時候就是VFP挂掉退出--先是不反應,然后VFP道歉,最后退出.[/quote]
Case里面的程序有问题,你是否使用了EditBox控件?VF的EditBox在某种情况下会导致程序致命错误
19 楼
GEORGECHIN [专家分:440] 发布于 2010-01-20 00:41:00
基本上我都不用EDITBOX,要麼用TEXT,要麼用COMBOBOX.整個CASE里面的語句都是在處理GRID里的表.
不管了,反正我把那些代碼原封不動地搬到PRG中,就不報錯了.
我来回复