兄弟姐妹们, 我向一个Edit发送了一条消息它却没收到, 目的是让收到消息的控件失去焦点就相当于让其触发OnExit事件, 如何解决的? 测试程序如下:unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, SUIEdit, SUIButton;const
WM_EditExitMsg = WM_User+100;type
TForm1 = class(TForm)
suiButton1: TsuiButton;
suiEdit1: TsuiEdit;
suiEdit2: TsuiEdit;
Edit1: TEdit;
Button1: TButton;
procedure suiButton1Click(Sender: TObject);
procedure suiEdit1Exit(Sender: TObject);
private
{ Private declarations }
procedure BurstOnExit;
public
{ Public declarations }
end;var
Form1: TForm1;
p:tpoint;
i:hwnd;implementation{$R *.DFM}procedure TForm1.BurstOnExit;
var
Handle: THandle;
begin
GetCursorPos(P);
Handle:= WindowFromPoint(Mouse.CursorPos);
PostMessage(Handle, CM_EXIT, 0, 0);
end;procedure TForm1.suiButton1Click(Sender: TObject);
begin
BurstOnExit;
end;procedure TForm1.suiEdit1Exit(Sender: TObject);
begin
ShowMessage('Receive!');
Close;
end;end.
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, SUIEdit, SUIButton;const
WM_EditExitMsg = WM_User+100;type
TForm1 = class(TForm)
suiButton1: TsuiButton;
suiEdit1: TsuiEdit;
suiEdit2: TsuiEdit;
Edit1: TEdit;
Button1: TButton;
procedure suiButton1Click(Sender: TObject);
procedure suiEdit1Exit(Sender: TObject);
private
{ Private declarations }
procedure BurstOnExit;
public
{ Public declarations }
end;var
Form1: TForm1;
p:tpoint;
i:hwnd;implementation{$R *.DFM}procedure TForm1.BurstOnExit;
var
Handle: THandle;
begin
GetCursorPos(P);
Handle:= WindowFromPoint(Mouse.CursorPos);
PostMessage(Handle, CM_EXIT, 0, 0);
end;procedure TForm1.suiButton1Click(Sender: TObject);
begin
BurstOnExit;
end;procedure TForm1.suiEdit1Exit(Sender: TObject);
begin
ShowMessage('Receive!');
Close;
end;end.
解决方案 »
- 如何向动态生成的窗体中的控件附值
- 请教Delphi程序汉化问题
- 两岸三地数据同步时,附件怎样同步为好?
- 求一算法!急!
- -----%%%%%------想要通过ServerSocket&&ClientSocket把一个单机版的游戏变成网络版的,应该怎么做,谢谢!
- 怎么样临听端口!
- 在客户端输入学生的考号,在服务器端分解考号
- 一个非delphi的问题,但很重要,这里有许多高手,所以来问问,请赐教。
- 如何让多表的query只更新一个表
- BDE API的帮助在哪里?DbiPackTable在哪里找到的?
- 想学DELPHI,大家推荐一些教程
- 一段sql语句,查询时出错!说'enterprisename'不明确!请各位指教,在线等!
你按下button1後,mouse.cursorpos返回值是button1的位置,得到的句柄也是button1的,edit當然沒反應呀.
你的brustonext實現過程有問題,windowfrompoint通常是配合timer事件執行的.
你要發送的edit是否在同一窗體呢?說清楚點呀.
如果你的窗體只有一個edit的話,試試以下代碼:
procedure tform1.button1click(sender:tobject);
var
h:hwnd;
begin
h:=findwindowex(findwindow(nil,'your form"s caption'),0,'tedit',0);
sendmessage(h,cm_exit,0,0);
end;