Delphi中RichEdit的奥妙

2016-01-29 14:09 114 1 收藏

Delphi中RichEdit的奥妙,Delphi中RichEdit的奥妙

【 tulaoshi.com - Delphi 】

 
一、如何得知当前行号
  用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中调试通过。 

来源:http://www.tulaoshi.com/n/20160129/1492655.html

延伸阅读
//根据字符串,拆分字符串,相当于vb中的split函数 function SplitString(const Source,ch:string):TStringList; var   temp:String;   i:Integer; begin   Result:=TStringList.Create;   //如果是空自符串则返回空列表   if Source=''   then exit; &nbs...
标签: Delphi
  Delphi作为一种面向对象的可视化开发工具,以其开发程序的高速度和编译代码的高效率越来越受到广大编程人员的喜爱。尽管Delphi已经提供了非常强大的开发组件(VCL),但灵活使用API函数一定可以使你的程序增色不少。 状态键的检查 当今不少流行软件的编辑窗口(包括Delphi的代码编辑窗口)的底部都有一个状态条...
Delphi // 指定输入游标的位置 procedure SetCaret(RTF: TRichEdit; var Row, Col: Word); var i, iStopLine, iSelStart: integer; begin if (RTF = nil) then Exit; if Row = 0 then Row := 1; !-- frame contents -- !-- /frame contents -- if Col = 0 then Col := 1;// 到第 Row 列, Col 行共几个字元 iStopLine := R...
Delphi中的字符串 ——摘自网络 一:各种字符串  字符串是Object Pascal所有数据类型中最有用的类型。许多函数以字符串为传递参数。由于在Delphi中字符串的定义和使用有各种方式,包括Pascal中典型的字符串(String),Delphi支持的长字符串(ANSIString),类似于C语言的字符数组(Array of Char),指向字符的...
网上找来的 感觉对入门者很有启示 收藏一下了! No.1 判断逻辑类型 } var B: Boolean; begin B := Boolean(2); //这样只是为了调试//B := True; if B = True then ShowMessage('B = True'); //不建议//不安全 /////// if B then ShowMessage('B'); //建议//简短 end; var B: Boolean;...

经验教程

154

收藏

15
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部