Delphi中RichEdit的奥妙

原创 2001年07月16日 16:45:00
一、如何得知当前行号
  用RichEdit(或者memo)控件制作文本编辑器时,通过访问linescount属性可以得到总行数,但是若想知道光标当前所在行的行号就麻烦了,因为delphi没有提供这个属性。要实现这个编辑器必备功能,就须调用em_ LineFromChar。请试试下面的程序。
  先在窗口中布置一个RichEdit或者memo(命名为editor),以及一个button。在button的onclick事件中写入下列代码。
  var
  CurrentLine:Integer;
  begin
  CurrentLine:=EditorPerform(em_ LineFromChar,SFFFF,0);
  ApplicationMessageBox(PChar(′当前行号是′+IntToStr(CurrentLine)),′消息′,mb_ iconinformation);
  end;
  需要注意的是,第一行的行号为零。
  二、如何撤消操作(undo)
  对于memo来说,实现undo是不需编程的,只要让popupmenu属性为空,运行时就能用鼠标右键激活一个常用操作菜单,其中包括撤消、剪切、复制、粘贴、删除和全选六项。
  但可惜的是,这一招对于功能强大的RichEdit控件居然行不通,害得我们还要自己设计一个popupmemu。当你用CutToClipBoard等语句轻松而顺利地完成了“剪切”等功能,接着便会无奈地发现,竟找不到undo或cancel之类的语句来执行“撤消”。
  这时你需要这样处理:
  RichEdit1Perform(EM_UNDO,0,0);
  另外还应检查是否允许撤消,从而开启或关闭弹出菜单中的“撤消”项:
  Undo1Enabled:=RichEditPerform(EM_CANUNDO,0,0)<>0;
  以上程序在Delphi3中调试通过

delphi Richedit控件的用法

dm.qryTmp.First; while not dm.qryTmp.eof do begin edt_re.Lines.Add (dm.qryTmp.FieldByNa...
  • hansoy
  • hansoy
  • 2015年04月07日 17:00
  • 2598

Delphi中RichEdit的奥妙

  • zgqtxwd
  • zgqtxwd
  • 2008年04月30日 18:14
  • 149

调整RichEdit行间距、字符间距

void __fastcall TForm1::Button1Click(TObject *Sender) {    PARAFORMAT2 pf;   pf.cbSize=sizeof(PARAFO...
  • ksrsoft
  • ksrsoft
  • 2012年04月13日 17:37
  • 2655

delphi RichEdit控件中插入GIF动画表情

delphi在RichEdit控件中插入GIF动画表情 在UDP即时通讯软件中实现类似于QQ的动画表情,在richEdit控件中插入gif动画表情。 发送的时候将表情转为命令,接收之后,再将命令转...
  • gzxiaorou
  • gzxiaorou
  • 2015年03月22日 15:43
  • 1129

delphi读取和写入文件-richedit控件

需要两个按钮和两个Richedit控件,采用默认名称即可. procedure TForm1.Button1Click(Sender: TObject);  //写文件 var wText...
  • hushiwei1993
  • hushiwei1993
  • 2015年12月03日 16:48
  • 1305

RichEdit显示行号

我们还是废话少说,现在来详细探讨一下原理,VB6的实现不同,我们稍候再说。我们将会探讨 有关Windows消息系统、窗口的子类技术、Gdi函数的使用,如果您对这些部分闻所未闻的话就需要 补充这方面...
  • aasmfox
  • aasmfox
  • 2014年11月13日 20:49
  • 1527

[原创]让RichEdit支持中文搜索、向上查找、区分大小写!(花费一个多星期的成果)!

           RichEdit组件本身为文本搜索提供了FindText()方法,但FindText()方法有一个最大的缺点是不支持中文查找,如果在要搜索的字符串中含有中文,哪是无论如何也搜不到...
  • gencheng
  • gencheng
  • 2007年04月07日 19:52
  • 3677

richedit 设置某一行颜色

CHARFORMAT cf; ZeroMemory(&cf, sizeof(CHARFORMAT)); cf.cbSize = sizeof(CHARFORMAT); cf.dwMask = CFM_...
  • a379039233
  • a379039233
  • 2015年09月10日 11:30
  • 1787

Richedit控件字符格式及字体颜色的实现

1、Richedit中控制字符的格式:        通过调用
  • a904235765
  • a904235765
  • 2014年10月15日 18:32
  • 2385

解决richedit的内容不能超过64k的方法

1.经试验和查阅,RichEdit控件的确不
  • rell336
  • rell336
  • 2014年10月11日 09:31
  • 1488
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Delphi中RichEdit的奥妙
举报原因:
原因补充:

(最多只允许输入30个字)