ccidnet????

出版日期:1997-10-27 总期号:681 本年期号:41

本期导读
综合要闻
网络通信
市场商情
国际文摘
技术专题
软件应用
delphi中memo组件的光标定位

罗起

  作为一个与visualbasic相类似,但功能更强大的可视化程序开发工具,delphi同样提供了大量的简单便捷的控制组件,通过这些组件,程序设计者可以设计出规范美观的界面。并且规范化使用者的输入内容。其中,delphi提供的编辑组件中的memo组件的功能是非常丰富的。它可以完成对文字的编辑、修改、文件的调入和存储文件等功能,但是与一般的字处理软件相比,它并未提供编辑时对光标位置、所在行及所在列的信息,这不能说不是一个缺憾。其实,通过很简单的几行程序就可以实现这一要求:

  先在form上放置三个label组件,并在程序代码的前面声明下面这三个变量为整型数,即:

  varlpos,cpos,linelength:integer;

  其中lpos是行的值(按照memo的规定,第一行为0),cpos是字符的位置,linelength是当前行的字符总个数。

  然后,再将下面的七行程序代码分别加入memo1的onmousedown和onkeydown的事件代码处即可。

  lops:Κsendmessage(memol.handle,em—linefromchar,memol.selstart,0);

  cpos:Κsendmessage(meno1.handle,em—lineindex,lpos,0);

  linelength:Κsendmessage(memol.handle,em—linelength,cpos,0);

  cpos:Κmemol.selstart-cpos;

  labell.caption:Κinttostr(lpos);

  label2.caption:Κinttostr(cpos);

  label3.caption:Κinttostr(linelength);

  这样,执行程序后,随着在memo组件中的编辑操作,label1、label2和label3就将显示出相对应的当前行值、字符位置与当前行的字符总个数了。