当在memo中打ctrl+回车时,光标下移一行,这时我想使光标通过程序回到最左上角,并清空memo。清空完成了,可是光标却怎么也不上去。用了以前一个 贴子里的:memo1.perform(WM_LBUTTONDOWN,0,makelong(0,0));可以上去,但是再打字打不进去了,必须得按一下鼠标左键;用以前贴子的memo1.caretpos:=point(0,0)不好使。
解决方案 »
- 条件控制语句的问题
- 在c/s模式下,客户端如何对修改服务器上的数据记录?
- 配置BS服務器 裝有deophi的機子 可訪問 其它的無法訪問???
- 星战前传3-西斯的复仇[DVD中文字幕]
- 某文件存在于电脑硬盘里,delphi程序运行时如何打开此文件?
- 急!请问那里有软波表的控件或源码下载,资料也可(delphi相关)!谢谢!
- 公司要我做一个在网上在线升级的程序。
- 十万火急!!!有关Delphi分布式多层开发的问题,在互联网上应用,涉及到防火墙
- 一个菜问题,请同志们看看吧,我好惨啊~~~~
- 大虾、高手、高高手们:能不能用程序建个ACCESS2000的数据库呢(在DELPHI中)?
- 关于调整时间的问题 ?
- 为什么不响应我的事件?一定给分!
Memo1.Perform(EM_LINEINDEX,Memo1.Perform(EM_LINEFROMCHAR,-1,0),0);
Delphi中有控件MEMO,当使用应控件输入内容或编辑时,如何确定光标当前的位置呢?这时就可以调用WINDOWS API中的EM_LINEFROMCHAR和EM_LINEINDEX消息来确定MEMO控件中光标的当前行和列,具体调用方法的过程如下:procedure TForm1.Button1Click(Sender: TObject);
var
LineNum:longint;
CharsBeforeLine:longint;
begin
LineNum := SendMessage(Memo1.Handle,EM_LINEFROMCHAR,
Memo1.SelStart,0);
CharsBeforeLine:=SendMessage(Memo1.Handle,EM_LINEINDEX,
LineNum,0);
Label1.Caption:='Line: '+IntToStr(LineNum + 1);
Label2.Caption:='Position: '+IntToStr((Memo1.SelStart -
CharsBeforeLine)+1);
end;//另一种方法
定义变量iLine: Integer;
{ 使用em_LineFromChar消息 }
iLine := Memo1.Perform(em_LineFromChar, $FFFF, 0);
{ 第一行为0 }
messageDlg('行号: ' + IntToStr(iLine), mtInformation,[mbOK], 0 ) ;
Memo1.Perform(EM_LINEINDEX,Memo1.Perform(EM_LINEFROMCHAR,-1,0),0);
这两个不好用设置一下焦点: 根本不行。
你可以自己试一试,在一个MEMO控件中,打一行字,回车,然后光标到第二行,你用什么都弄不上去!除非你不在程序里,而在运行时用鼠标或键盘!