作為一個與VisualBasic相類似,但功能更強大的可視化程序開發工具,Delphi同樣提供了大量的簡單便捷的控制組件,通過這些組件,程序設計者可以設計出規范美觀的界面。並且規范化使用者的輸入內容。其中,Delphi提供的編輯組件中的Memo組件的功能是非常豐富的。它可 以完成對文字的編輯、修改、文件的調入和存儲文件等功能,但是與一般的字處理軟件相比,它並未提供編輯時對光標位置、所在行及所在列的信息,這不能說不是一個缺憾。其實,通過很簡單的幾行程序就可以實現這一要求:
先在Form上放置三個Label組件,並在程序代碼的前面聲明下面這三個變量為整型數,即:
VarLpos,Cpos,Linelength:integer;
其中Lpos是行的值(按照Memo的規定,第一行為0),Cpos是字符的位置,LineLength是當前行的字符總個數。
然後,再將下面的七行程序代碼分別加入Memo1的OnMouseDown和OnKeyDown的事件代碼處即可。
Lops:=SendMessage(memol.Handle,EM—LINEFROMCHAR,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就將顯示出相對應的當前行值、字符位置與當前行的字符總個數了。