拖动无标题栏窗体时的出现问题?在线等待 当然无法出现了,你已经接管了鼠标事件要是用 sendmessage(handle, wm_command, $f012);或许会好些 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用这个方法是欺骗系统,让系统认为点击区域是标题栏,但是这样做会使form上不能接受焦点的控件也变的麻烦。如果有speedbutton之类的,那么不仅骗了系统也骗了自己,单击无效的。而至于popupmenu就更容易解释了,系统认为你点击的是标题栏,当然不会弹出菜单了~~至于解决办法,我没有试过,不过你可以直接发送弹出菜单的消息给窗体。最好先拦截一下这个消息,不然也很难处理的。祝好运,另解决了的话也要写出来啊~~~~~ 在窗体的OnMouseDown事件中Perform(WM_SysCommand, $F012, 0); 就这样。procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin ReleaseCapture; Perform(WM_SYSCOMMAND, $F012, 0);end; 不处理WM_HitTest,而是处理WM_LBUTTONDOWN;示例代码:const SC_DRAGMOVE = $F012; // 未归档消息。procedure WMLButtonDown(var Msg: TWMLButtonDown); message WM_LBUTTONDOWN;procedure TForm1.WMLButtonDown(var Msg: TWMLButtonDown);begin if (MK_CONTROL + MK_LBUTTON) = Msg.Keys then begin SendMessage(Handle, WM_SYSCOMMAND, $F012, 0) end else begin inherited; end;//ifend;这个过程是当你按下CTRL键,再按下鼠标左键并拖动,就可以拖动窗体了。 Delphi中如何读取注册表的(二进制)键值并复制到别的键值里? 怎么try open 报错????????????????????????????? delphi 中怎么强制把数值转换为字符串? 我该怎样取打印页数,焦急等 发送邮件时如何通过smtp验证? 如何取得ADOQuery返回的数据记录总数? MDB联接使用问题 求教,Ado引号内字符串没有正确结束 比一比谁见过的BCB OR DELPHI书最厚?今天去书店看书把我胳膊累疼了。UPUP来吧。 关于datetime与DATE的问题? 一个Delphi写Com的问题 请推荐一本COM方面的书。
而至于popupmenu就更容易解释了,系统认为你点击的是标题栏,当然不会弹出菜单了~~至于解决办法,我没有试过,不过你可以直接发送弹出菜单的消息给窗体。
最好先拦截一下这个消息,不然也很难处理的。
祝好运,另解决了的话也要写出来啊~~~~~
Perform(WM_SysCommand, $F012, 0);
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND, $F012, 0);
end;
示例代码:const
SC_DRAGMOVE = $F012; // 未归档消息。procedure WMLButtonDown(var Msg: TWMLButtonDown); message WM_LBUTTONDOWN;procedure TForm1.WMLButtonDown(var Msg: TWMLButtonDown);
begin
if (MK_CONTROL + MK_LBUTTON) = Msg.Keys then
begin
SendMessage(Handle, WM_SYSCOMMAND, $F012, 0)
end
else
begin
inherited;
end;//if
end;这个过程是当你按下CTRL键,再按下鼠标左键并拖动,就可以拖动窗体了。