Delphi中SendMessage给一个Edit控件发送WM_SETTEXT消息的问题

tianben0954 2010-07-06 05:24:51
请问怎样在Delphi中用SendMessage给一个Edit控件发送WM_SETTEXT消息?

procedure TForm1.Button1Click(Sender: TObject);
var
str:string;
begin
str:= 'abc ';
SendMessage(edit1.Handle,WM_SETTEXT,0,LPARAM(str));
end;

正常情况下是这样的,请问我想让abc逐个发送到edit里面如何做呢?
...全文
1847 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
一剑飘雪 2011-11-23
  • 打赏
  • 举报
回复
不错,收藏了
talip1106 2011-03-16
  • 打赏
  • 举报
回复
str:= 'abc ';
for i:=1 to 3 do
SendMessage(edit1.Handle,WM_CHAR,0,LPARAM(copy(str,1,i)));

用WM_CHAR消息,不能用WM_SETTEXT
newfang 2010-07-07
  • 打赏
  • 举报
回复
WM_KEYDOWN;WM_KEYUP
newfang 2010-07-07
  • 打赏
  • 举报
回复
干嘛非要用settext,用按键消息不更好,按哪个键就显示哪个字符。
ysai 2010-07-07
  • 打赏
  • 举报
回复
WM_SetText会清掉原来的
可以用
SendMessage(edit1.Handle,WM_SETTEXT,0,LPARAM((Edit1.Text)+Copy(str,1,i+1)));
也可以用WM_GetText获取原来的后,再加个字母SetText

还可以用WM_Char消息,模拟按键等等
hsmserver 2010-07-06
  • 打赏
  • 举报
回复
var
str:string;
i:Integer;
begin
str:= 'abc ';
for i:=0 to Length(str)-1 do
SendMessage(edit1.Handle,WM_SETTEXT,0,LPARAM((Edit1.Text)+Copy(str,i+1,1)));
tianben0954 2010-07-06
  • 打赏
  • 举报
回复
楼上的朋友,这样写输出的结果是c。 我想要结果是abc,怎么改呢?
liangpei2008 2010-07-06
  • 打赏
  • 举报
回复
str:= 'abc ';
for i:=1 to 3 do
SendMessage(edit1.Handle,WM_SETTEXT,0,LPARAM(copy(str,1,i)));
tianben0954 2010-07-06
  • 打赏
  • 举报
回复
我的意思是通过逐个输入到edit里,但是结果还是abc

现在edit里的结果只有c
tianben0954 2010-07-06
  • 打赏
  • 举报
回复
不行啊,只输出了一个c
SuperTitan004 2010-07-06
  • 打赏
  • 举报
回复
不好意思,前面看错了

str:= 'abc ';
for i:=1 to 3 do
SendMessage(edit1.Handle,WM_SETTEXT,0,LPARAM(copy(str,i,1)));

这样逐个发送?
tianben0954 2010-07-06
  • 打赏
  • 举报
回复
你好,没看明白 - -!
可以根据我上面的代码改一下么?
SuperTitan004 2010-07-06
  • 打赏
  • 举报
回复
for i:=1 to 10 do
SendMessage(tedit(form1.FindComponent('edit'+inttostr(i))).Handle,WM_SETTEXT,0,LPARAM(inttostr(i)));

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧