|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2009/11/4 22:18:30 |
标题: |
UniSynEdit 回车换行光标不能跳到下一行。 |
浏览:3156 |
|
加入我的收藏 |
楼主: |
在官网上下载了最新的 UniSynEdit For Delphi2009; 下载页面: http://mh-nexus.de/en/unisynedit.php 在其下角可以看到下载地址;
用该控件做的例子:
但是发现一个难以忍受的问题: 一般在文本里写字,用回车就能换行,并且光标跳到下一行的首位; 可是该版本的synEdit回车虽然能换行,但是光标不动,使用起来非常别扭。 我尝试了synEdit的所有属性调整,均搞不定; 希望有遇到类似问题的朋友共同研究应对方法。感觉好像需要修改控件源码才行。
----------------------------------------------
青云论坛 |
作者: |
|
2009/11/6 17:16:35 |
1楼: |
修改 procedure ExecuteCommand(Command: TSynEditorCommand; AChar: WideChar; Data: pointer); virtual; 这个函数的换行处理,也就是ecLineBreak;里面有代码 if Command = ecLineBreak then begin //if SpaceCount2 > 0 then 这句注释掉 begin SpaceBuffer := Copy(Lines[BackCounter], 1, SpaceCount2); InternalCaretXY := BufferCoord(1, CaretY +1); for i := 1 to Length(SpaceBuffer) do if SpaceBuffer[i] = #9 then CommandProcessor(ecTab, #0, nil) else CommandProcessor(ecChar, SpaceBuffer[i], nil); end; end; 可见,其实这个东西是可以换行的,只是有个条件,就是字符串信息的左边需要有空格,如果是顶头写了文字,换行就不会执行了,所以 把里面的if SpaceCount2 > 0 then 这句注释掉就可以了
----------------------------------------------
逍遥乎八极之外,虚浮世间以乘天风云马
|
作者: |
egust (欢迎访问 Delphi@smth.org) |
★☆☆☆☆ |
-
|
普通会员 |
|
2009/11/6 18:33:35 |
2楼: |
倒是够省事儿的了……我是在7442行加了个 else InternalCaretXY := BufferCoord(1, CaretY +1);
----------------------------------------------
cnblogs中我写的关于Delphi的blog,欢迎访问: http://www.cnblogs.com/egust/
|
作者: |
zbzb ( ) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2009/11/7 0:06:56 |
3楼: |
uni的版本,效率貌似很低。
----------------------------------------------
-
|
作者: |
|
2009/11/7 16:41:49 |
4楼: |
我也研究出来了: 在 procedure TCustomSynEdit.ExecuteCommand(Command: TSynEditorCommand; AChar: WideChar; 这个过程里修改;
就一句话; 大概在7396行, 有一句判断 if Len >= CaretX then 我把它去掉了,修改成: if 1=1 then 就可以了;
不知道有没有副作用,反正现在可以了。
----------------------------------------------
青云论坛
|
作者: |
|
2010/2/20 17:19:37 |
5楼: |
发现一个新问题,该控件在ctrl+c拷贝的时候常常报错,意思是使用黏贴板错误,但又不是每次发生,搞不清楚,希望能有新版本升级,最好是for d2010的。
----------------------------------------------
青云论坛
|
作者: |
|
2010/4/22 15:54:08 |
6楼: |
我下载安装了,为什么安装成功了,IDE那里没有显示出控件呢?
----------------------------------------------
-
|
|