DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: jsuguo
今日帖子: 29
在线用户: 11
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2009/11/4 22:18:30
标题:
UniSynEdit 回车换行光标不能跳到下一行。 浏览:3156
加入我的收藏
楼主: 在官网上下载了最新的 UniSynEdit For Delphi2009;
下载页面:
http://mh-nexus.de/en/unisynedit.php
在其下角可以看到下载地址;

用该控件做的例子:
按此在新窗口浏览图片

但是发现一个难以忍受的问题:
  一般在文本里写字,用回车就能换行,并且光标跳到下一行的首位;
  可是该版本的synEdit回车虽然能换行,但是光标不动,使用起来非常别扭。
我尝试了synEdit的所有属性调整,均搞不定;
   希望有遇到类似问题的朋友共同研究应对方法。感觉好像需要修改控件源码才行。
----------------------------------------------
青云论坛
作者:
男 suiyunonghen (不得闲) ★☆☆☆☆ -
普通会员
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的版本,效率貌似很低。
----------------------------------------------
-
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2009/11/7 16:41:49
4楼: 我也研究出来了:

procedure TCustomSynEdit.ExecuteCommand(Command: TSynEditorCommand; AChar: WideChar;
这个过程里修改;

就一句话;
大概在7396行,
有一句判断
          if Len >= CaretX then
我把它去掉了,修改成:
          if  1=1  then    
就可以了;

 不知道有没有副作用,反正现在可以了。
----------------------------------------------
青云论坛
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2010/2/20 17:19:37
5楼: 发现一个新问题,该控件在ctrl+c拷贝的时候常常报错,意思是使用黏贴板错误,但又不是每次发生,搞不清楚,希望能有新版本升级,最好是for d2010的。
----------------------------------------------
青云论坛
作者:
男 unonion (葱不葱) ★☆☆☆☆ -
盒子活跃会员
2010/4/22 15:54:08
6楼:
我下载安装了,为什么安装成功了,IDE那里没有显示出控件呢?
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行62.5毫秒 RSS