好简单,关于Memo的一个小问题。(50分)

  • 主题发起人 主题发起人 D4
  • 开始时间 开始时间
D

D4

Unregistered / Unconfirmed
GUEST, unregistred user!
1>如何取得Memo的当前行。 (30)
我用了如下程序段
var
iLine : Integer ;
begin
...
iLine := Memo1.Perform(em_LineFromChar, $FFFF, 0);
...
可最后返回的是最大行数。`
2>如何截取Enter按键,别太烦。(20)
目的是这样的,在memo的某一行上敲回车,则只有换行而没有回车效果。
 
第一个问题:我在这里有解答,请看:<A HREF="http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=102220">有关EM_LINEFROMCHAR</A>

第二个问题:
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
IF key = #13 then
begin
// 不就抓住了?
end;
end;
 
茶叶蛋 30分给你记下了;
但第二个答案不行。
据我知,像是只有从写消息循环才行。
你那样做Enter消息以发送过了过了。
我不要亡羊补牢,我要的是防患于未然。
 
1、你的代码有错
Win32帮助说ich=-1时得到当前行,
其实是指32位整数,$FFFF是16位整数的-1,
直接写-1就行了。
2、截取Return键的方法如上
只有回车,不换行的方法:
Key:=#0; //取消按键
然后取当前行
用EM_LineIndex消息得到下一行对应的字符索引
同EM_SetSel消息将光标设置到下一行
 
1。听茶叶蛋 的
2。将wantreturns设为false
在onkeypress event 用key=#13捕获
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
546
import
I
后退
顶部