拖动无标题窗口出现的问题
一个无标题的窗体,用了如下代码拖动窗体,但是窗体上的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;
[解决办法]
这样肯定都不响应啊.. 你点击的按钮,, 可是你在消息里面骗 windows 说你点击的是标题栏.
判断下 X Y 的值, 只能拖动上面.下面不给他
[解决办法]
另外,,, 我的 FormMouseMove 和你的不一样.
你看看我的
我的是正常的
unit Unit1;interfaceuses 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.
[解决办法]
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;