拖动无标题窗口出现的问题
时间:2011-11-10
来源:互联网
一个无标题的窗体,用了如下代码拖动窗体,但是窗体上的Image,SpeedButton的Click事件都不响应了,如何解决?
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if (ssLeft in Shift) then
begin
ReleaseCapture;
SendMessage(Form1.Handle,WM_SYSCOMMAND,SC_MOVE+1,0);
end;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if (ssLeft in Shift) then
begin
ReleaseCapture;
SendMessage(Form1.Handle,WM_SYSCOMMAND,SC_MOVE+1,0);
end;
end;
作者: odbc12345 发布时间: 2011-11-10
这样肯定都不响应啊.. 你点击的按钮,, 可是你在消息里面骗 windows 说你点击的是标题栏.
判断下 X Y 的值, 只能拖动上面.下面不给他
判断下 X Y 的值, 只能拖动上面.下面不给他
作者: warrially 发布时间: 2011-11-10
另外,,, 我的 FormMouseMove 和你的不一样.
你看看我的
我的是正常的
Delphi(Pascal) code
你看看我的
我的是正常的
Delphi(Pascal) code
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; SpeedButton1: TSpeedButton; Image1: TImage; procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure SpeedButton1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Image1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Caption := 'Button Click'; end; procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if (Button = mbLeft) then begin ReleaseCapture(); Perform(WM_SYSCOMMAND, SC_MOVE or HTCAPTION, 0); end else self.Close; end; procedure TForm1.Image1Click(Sender: TObject); begin Caption := 'Image Click'; end; procedure TForm1.SpeedButton1Click(Sender: TObject); begin Caption := 'SpeedButton Click'; end; end.
作者: warrially 发布时间: 2011-11-10
public一个 bool 标记变量
一个位置x,位置y坐标
form mousedown
标记:=true;
位置x=x;
位置y=y;
form mouseup
标记:=false;
form mousemove
if 标记=true then
begin
通过位置x,y和当前x,y移动form
end;
一个位置x,位置y坐标
form mousedown
标记:=true;
位置x=x;
位置y=y;
form mouseup
标记:=false;
form mousemove
if 标记=true then
begin
通过位置x,y和当前x,y移动form
end;
作者: funxu 发布时间: 2011-11-10
早几天不是讨论过这问题嘛?搜索都懒得了?
作者: sailxia 发布时间: 2011-11-10
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28