memo的KeyDown事件当中接收到回车怎么可以不处理

时间:2022-05-08 02:13:28
   问题是这样的....今天老板需要做一个memo接收回车后调用其他的控件的内容...而我也实现了..但是我一按回车虽然调取了其他的控件的内容..但是memo也同时接收到一个回车事件,换行了....我是想知道怎么让他这个换行的消息不执行呢.....
   我试了用
   PostMessage(ed.Handle,WM_KEYDOWN,VK_BACK,0);
    PostMessage(ed.Handle,WM_KEYUP,VK_BACK,0);
  虽然可以.但是显得略为笨拙..

  还有就是退过让程序代码出错也可以不换行...但这些都是旁门左道看有没有直接的方法...求教了...

9 个解决方案

#1


Memo中回车,就是换行。改成读取其它控件内容,不符合规范。不可取。可以改成通过鼠标右键来操作。

#2


procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
      if Key=#13 then  Key:=#0;
end;

#3


引用 2 楼 jjpweb 的回复:
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
      if Key=#13 then  Key:=#0;
end;

不可取,这样取消了全部的回车。

#4


执行的内容放到key:=0;上面

#5


执行后把Memo的最后一个换行符删掉 memo的KeyDown事件当中接收到回车怎么可以不处理

#6


问题解决了吗?

#7


memo.ReadOnly := True;
只读就不换行了

#8


思路错误,你应该在FORM中判断这个回车
将FORM的keypreview属性设置为TRUE,然后在FORM的KEYPRESS事件中加入代码:
  if memo1.Focused  then //判断KEY是否由MEMO1处传递过来
    if Key=#13 then  Key:=#0 //回车不换行

#9


2樓、8樓的方法應該都可行呀

#1


Memo中回车,就是换行。改成读取其它控件内容,不符合规范。不可取。可以改成通过鼠标右键来操作。

#2


procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
      if Key=#13 then  Key:=#0;
end;

#3


引用 2 楼 jjpweb 的回复:
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
      if Key=#13 then  Key:=#0;
end;

不可取,这样取消了全部的回车。

#4


执行的内容放到key:=0;上面

#5


执行后把Memo的最后一个换行符删掉 memo的KeyDown事件当中接收到回车怎么可以不处理

#6


问题解决了吗?

#7


memo.ReadOnly := True;
只读就不换行了

#8


思路错误,你应该在FORM中判断这个回车
将FORM的keypreview属性设置为TRUE,然后在FORM的KEYPRESS事件中加入代码:
  if memo1.Focused  then //判断KEY是否由MEMO1处传递过来
    if Key=#13 then  Key:=#0 //回车不换行

#9


2樓、8樓的方法應該都可行呀