| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1430 人关注过本帖
标题:还是我花屏现象的解决。今天我找到了原因,请专家评讲一下!
取消只看楼主 加入收藏
YZCZWCB
Rank: 1
等 级:新手上路
帖 子:191
专家分:5
注 册:2010-1-9
结帖率:97.14%
收藏
已结贴  问题点数:20 回复次数:5 
还是我花屏现象的解决。今天我找到了原因,请专家评讲一下!

我的花屏现象让各位老师、专家费心了。经过对我的程序的指教,真的是让我受益匪浅呀。按照你们的意见,我也不断优化了我的程序,举一反三,对其他模块都作了修改。再次感谢。

程序优化了,改的也更简洁了,但花屏现象还是没有根解。但我结合老师们的意见,这几天在思考,反复对主录入表单进行了分析,我觉得是不是下面的事件出了问题,请老师们再次指教,我改了一下,感觉是好多了。

原先表单的grid1.AfterRowColChange事件中,执行了以下一大段:意思是解决grid1的几个列,通过三个check的值,判断可输入数据或不可以输入数据的。
cLJ=ThisForm.grid1
*--------
IF ThisForm.check1.Value=1
   cLj.column8.Enabled=.F.
   cLj.column9.Enabled=.F.
   cLj.column10.Enabled=.F.
ENDIF
IF ThisForm.check2.Value=1
   cLj.column8.Enabled=.F.
   cLj.column9.Enabled=.F.
   cLj.column10.Enabled=.F.
ENDIF
IF ThisForm.check3.Value=1
   cLj.column8.Enabled=.F.
   cLj.column9.Enabled=.F.
   cLj.column10.Enabled=.F.   
ENDIF
IF ThisForm.check1.Value=1.and.ThisForm.check2.Value=1
   cLj.column8.Enabled=.T.
   cLj.column9.Enabled=.F.
   cLj.column10.Enabled=.F.
ENDIF
IF ThisForm.check1.Value=1.and.ThisForm.check3.Value=1
   cLj.column8.Enabled=.T.
   cLj.column9.Enabled=.F.
   cLj.column10.Enabled=.F.
ENDIF
IF ThisForm.check2.Value=1.and.ThisForm.check3.Value=1
   cLj.column8.Enabled=.F.
   cLj.column9.Enabled=.T.
   cLj.column10.Enabled=.F.
ENDIF
IF ThisForm.check1.Value=1.and.ThisForm.check2.Value=1.and.ThisForm.check3.Value=1
   cLj.column8.Enabled=.T.
   cLj.column9.Enabled=.T.
   cLj.column10.Enabled=.F.
ENDIF
IF ThisForm.check1.Value=0.and.ThisForm.check2.Value=0.and.ThisForm.check3.Value=0
   cLj.column8.Enabled=.F.
   cLj.column9.Enabled=.F.
   cLj.column10.Enabled=.F.
ENDIF

现在更改为:
   将以上的程序拷贝到一个新建的(检测按钮)中,在表单INIT事件中执行(thisform.co_检测.click),一次性判断就行了。
更改理由:
  我是想,如果把上述语句放在grid1.AfterRowColChange中,当在grid1中每移动一行或一列,都要执行上述语句,几条记录一录入,是不是执行太频烦,导致CPU达75%以上,直到花屏的主要原因呢?





[ 本帖最后由 YZCZWCB 于 2010-3-20 13:23 编辑 ]
搜索更多相关主题的帖子: 专家 现象 
2010-03-20 13:21
YZCZWCB
Rank: 1
等 级:新手上路
帖 子:191
专家分:5
注 册:2010-1-9
收藏
得分:0 
老师们,请指教呀。

说真的,我的花屏的原因就是CPU占有75%,一打开VFP就有45%。

在录入数据时,一会儿的功夫,也就是几条数据记录,就达到50%以上....速度越来越慢、越来越慢、越来越慢、越来越慢、越来越慢.....最后完了,此时,CPU占有75%

不过,我改了之后,还真有点效果,至少不那么快就花屏了...

那么还有哪些,会让CPU那么高呢?请指教啦

[ 本帖最后由 YZCZWCB 于 2010-3-20 17:41 编辑 ]
2010-03-20 17:23
YZCZWCB
Rank: 1
等 级:新手上路
帖 子:191
专家分:5
注 册:2010-1-9
收藏
得分:0 
以下是引用hu9jj在2010-3-20 18:15:05的发言:

正如2楼所指出的,楼主的这些代码只要放在check的interactivechange事件中就可以了,当这些值发生变化时才需要执行这些操作。
另外请楼主检查是否存在对记录进行核对(或计算审核)的操作,是不是这类操作在录入的过 ...

还真对了。我的GRID中,对每行的记录,都要根据预算单价,计算出预算总额,并同时根据HCECK的值判断,计算出:预算内资金或预算外资金或自筹资金额。

原先表单的grid1.预算单价列中text1.interactivechange事件中都要计算的。
SELECT Jzzk_lsk
GO RECNO()
cLJ=ThisForm.grid1
k1=ThisForm.check1
k2=ThisForm.check2
k3=ThisForm.check3
*---------
cLj.column7.text1.Value=cLj.column5.text1.Value*cLj.column6.text1.Value
cLj.column8.text1.Value=0
cLj.column9.text1.Value=0
cLj.column10.text1.Value=0
*------------
DO CASE
   CASE k1.Value=1.AND.k2.Value=1.AND.k3.Value=0
        cLj.column9.text1.Value=cLj.column7.text1.Value-cLj.column8.text1.Value-cLj.column10.text1.Value
   CASE k1.Value=1.AND.k3.Value=1.AND.k2.Value=0
        cLj.column10.text1.Value=cLj.column7.text1.Value-cLj.column8.text1.Value-cLj.column9.text1.Value
   CASE k2.Value=1.AND.k3.Value=1.AND.k1.Value=0
        cLj.column10.text1.Value=cLj.column7.text1.Value-cLj.column8.text1.Value-cLj.column9.text1.Value
   CASE k1.Value=1.AND.k2.Value=0.AND.k3.Value=0
        cLj.column8.text1.Value=cLj.column7.text1.Value-cLj.column9.text1.Value-cLj.column10.text1.Value
   CASE k2.Value=1.AND.k1.Value=0.AND.k3.Value=0
        cLj.column9.text1.Value=cLj.column7.text1.Value-cLj.column8.text1.Value-cLj.column10.text1.Value
   CASE k3.Value=1.AND.k1.Value=0.AND.k2.Value=0
        cLj.column10.text1.Value=cLj.column7.text1.Value-cLj.column8.text1.Value-cLj.column9.text1.Value
   CASE k1.Value=0.AND.k2.Value=0.AND.k3.Value=0
        cLj.column10.text1.Value=cLj.column7.text1.Value-cLj.column8.text1.Value-cLj.column9.text1.Value
ENDCASE
ThisForm.grid1.Refresh
今天,我也一并移出了,放到一个新增加的“计算按钮”中,在grid1.colmn8.text1.valid事件中,执行ThisForm.co_计算.Click。
另外,原先也没有用对象变量。
如:cLJ=ThisForm.grid1、k1=ThisForm.check1....而是直接用
ThisForm.grid1.column9.text1.Value=ThisForm.grid1.column7.text1.Value-ThisForm.grid1.column8.text1.Value-ThisForm.grid1.column10.text1.Value
看到一些资料,说这样也会慢的


[ 本帖最后由 YZCZWCB 于 2010-3-20 18:36 编辑 ]
2010-03-20 18:27
YZCZWCB
Rank: 1
等 级:新手上路
帖 子:191
专家分:5
注 册:2010-1-9
收藏
得分:0 
回复 6楼 cnfarer
好,谢谢。我改一下。
不过,有什么区别呢?
因为,queryunload事件中,就只有一个:thisform.release
2010-03-20 18:33
YZCZWCB
Rank: 1
等 级:新手上路
帖 子:191
专家分:5
注 册:2010-1-9
收藏
得分:0 
这几天,我又一发现。我调用的输入法是:“五笔拼音”,这个输入法,一进入就CPU45%,调用其他的输入法,CPU只有10%。

看来,是否是输入法造成的原因?

2010-03-22 20:38
YZCZWCB
Rank: 1
等 级:新手上路
帖 子:191
专家分:5
注 册:2010-1-9
收藏
得分:0 
还真这么说的。反正我现在不用这个输入法了,再也没出现花屏现象。(实际上就是CPU达到70%)

我又再做一个小程序,一离开汉字输入框,就自动关闭输入法。呵呵,防止别人用时,也会出现花屏。

真是活见鬼了。

[ 本帖最后由 YZCZWCB 于 2010-3-26 11:00 编辑 ]
2010-03-26 10:57
快速回复:还是我花屏现象的解决。今天我找到了原因,请专家评讲一下!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037455 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved