读书人

拖动无标题窗口出现的有关问题

发布时间: 2012-02-05 12:07:15 作者: rapoo

拖动无标题窗口出现的问题
一个无标题的窗体,用了如下代码拖动窗体,但是窗体上的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 和你的不一样.

你看看我的

我的是正常的


Delphi(Pascal) code
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;

读书人网 >.NET

热点推荐