先请大家看下我的软件:agenius.go.nease.net  
凡此贴内回复(无论问题回答出来没有)且用邮件通知我的人都可以免费得到PureEdit这个版本的注册码(我会每隔2,3天给大家发一次);问题是这样:
  这个软件是用SynEdit和ExpressBars做的;我用Action管理,这样在ActionMgr的OnUpDate事件里写上界面更新的代码,比如“编辑”里那些菜单什么时候有效,什么时候无效;但是ExpressBars重绘比较慢,非常占用时间,这样导致软件开启打一点的软件后就无法编辑了,响应十分缓慢;请问有什么好的方法解决这个问题?(别说让我换控件)
具体代码是这样的:
SynEdit写在TssnEditor类里,TssnEditor提供CanCut/CanPaste....方法供界面检测;在ActionMgr的OnUpDate里写actEditCut.Enabled:= Editor.CanCut;但这样太慢,“卡”的几乎用不了(ExpressBars还提供了LockUpDate方法,用了后效果也不好),后来写在每个Action自己的OnUpDate事件里,就成现在这样了,10000行以上的文件几乎没法编辑,但如果不更新界面的话,或者不用ExpressBars,用标准Menu控件的话,效果就好太多,几乎不受影响,郁闷ing;
现在有两个想法:
1.自己写一个action,就像标准action里面的Cut,Paste,把DelLine,DelFromBegin什么的都写成标准action,这样就不用从Editor里获取状态;
2.在申旻的《delphi高手突破》里提到了一种回调函数的方法,不置可否实现?
以上两种方法都是想了一下,没有具体实践,一是按本人水平实践起来有些难度,二是不确定实现后是否可以却是解决问题,特此向各路高手请教。请各位不吝赐教,说说自己的想法,或者还有什么其他方法?如果不会也请帮我顶 :)up有分!

解决方案 »

  1.   

    没有仔细看不过你可以追追是不是 canPaste 的取得的函数很花时间?
      

  2.   

    to boatzm
    应该不是很长,主要好像是DevExpressBars更新的不够快。因为用标准的TMenu控件的时候就很好。多谢两位帮我顶,大家继续哦;
    要注册码得给我发邮件,写清楚机器码,此贴至2005年1月1日有效;