首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2012-02-05 
拖动无标题窗口出现的问题一个无标题的窗体,用了如下代码拖动窗体,但是窗体上的Image,SpeedButton的Click

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

热点排行