如何发送消息给TCombobox来完成复制,粘贴,删除这些操作?(50分)

  • 主题发起人 主题发起人 Adnil
  • 开始时间 开始时间
A

Adnil

Unregistered / Unconfirmed
GUEST, unregistred user!
偶用了<br>SendMessage(ComboBox1.Handle, WM_CUT, 0, 0);<br>SendMessage(ComboBox1.Handle, WM_PASTE, 0, 0);<br>......<br>全部都失败,那我应该如何做呢?
 
可以啊,同志,比如,剪贴板上有文章内容,然后<br>SendMessage(ComboBox1.Handle, WM_PASTE, 0, 0);<br>保证可以在COMBOBOX上粘贴出来。<br>不过有个问题得提醒你,当你用CUT和COPY时,会有问题是因为COMBOBOX没有了焦点,<br>所以它不能复制出来,但是你可以让它先获得焦点:<br>&nbsp;combobox1.SelectAll;<br>&nbsp;SendMessage(ComboBox1.Handle, WM_copy, 0, 0);<br>
 
to liangdewei:<br><br>我试过怎么不行呢?<br>你能把编译通过的代码发过来看看?
 
下面的代码运行通过.<br>// 将edit中的文字粘贴到combobox中<br>// 测试SendMessage(ComboBox1.Handle, WM_paste, 0, 0);<br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br>&nbsp; edit1.SetFocus;<br>&nbsp; sendmessage(edit1.haNdle,WM_CUT,0,0);<br>&nbsp; combobox1.SelectAll;<br>&nbsp; SendMessage(ComboBox1.Handle, WM_paste, 0, 0);<br>end;<br><br>//将combobox中的文字粘贴到edit中<br>// &nbsp;SendMessage(Combobox1.Handle, WM_CUT, 0,0);<br>procedure TForm1.Button2Click(Sender: TObject);<br>begin<br>&nbsp; combobox1.SelectAll;<br>&nbsp; SendMessage(Combobox1.Handle, WM_CUT, 0,0);<br>&nbsp; edit1.SetFocus;<br>&nbsp; SendMessage(Edit1.Handle, WM_PASTE, 0, 0);<br>end;<br><br>//清除combobox的文字<br>//测试 &nbsp;SendMessage(Combobox1.Handle, WM_CLEAR, 0,0);<br>procedure TForm1.Button3Click(Sender: TObject);<br>begin<br>&nbsp; combobox1.SelectAll;<br>&nbsp; SendMessage(Combobox1.Handle, WM_CLEAR, 0,0);<br>end;
 
谢谢两位的帮助,不过又发现EM_CANUNDO和EM_UNDO的消息还是没有办法处理,怎么办?
 
EM_CANUNDO和EM_UNDO是对Edit类型的控件有效的,例如TEdit,TRichEdit.<br>如果非要对TComboBox有效,就要修改TComboBox的源代码了,这样可以开放<br>TComboBox的EditHandle属性,在strctrls.pas中TCombobox的published部分加一行<br>[red]property EditHandle;[/red]<br>然后在工程中加入这个strctrls.pas就可以用了,如下:<br>&nbsp;if SendMessage(ComboBox1.EditHandle,EM_CANUNDO,0,0) &lt;&gt; 0 then<br>&nbsp; &nbsp; SendMessage(combobox1.EditHandle,EM_UNDO,0,0);<br>strctrls.pas在Delphi安装目录下的source目录下.<br>
 
感谢上面各位 :)
 
后退
顶部