请问怎样在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里面如何做呢?

解决方案 »

  1.   

    for i:=1 to 10 do
        SendMessage(tedit(form1.FindComponent('edit'+inttostr(i))).Handle,WM_SETTEXT,0,LPARAM(inttostr(i)));
      

  2.   

    不好意思,前面看错了  str:= 'abc ';
      for i:=1 to 3 do
        SendMessage(edit1.Handle,WM_SETTEXT,0,LPARAM(copy(str,i,1)));这样逐个发送?
      

  3.   

    我的意思是通过逐个输入到edit里,但是结果还是abc现在edit里的结果只有c
      

  4.   

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

  5.   

    楼上的朋友,这样写输出的结果是c。 我想要结果是abc,怎么改呢?
      

  6.   

    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)));
      

  7.   

    WM_SetText会清掉原来的
    可以用
    SendMessage(edit1.Handle,WM_SETTEXT,0,LPARAM((Edit1.Text)+Copy(str,1,i+1)));
    也可以用WM_GetText获取原来的后,再加个字母SetText还可以用WM_Char消息,模拟按键等等
      

  8.   

    干嘛非要用settext,用按键消息不更好,按哪个键就显示哪个字符。
      

  9.   

    str:= 'abc ';
      for i:=1 to 3 do
      SendMessage(edit1.Handle,WM_CHAR,0,LPARAM(copy(str,1,i)));用WM_CHAR消息,不能用WM_SETTEXT