我用这个办法移动无标题窗体:
//在Form1的“Private”部分声明过程:
procedure wmnchittest(var msg:twmnchittest);message wm_nchittest;
//在程序部分加入以下代码:
procedure TForm1.wmnchittest(var msg:twmnchittest);
begin
  inherited;
  if (htclient=msg.result) then msg.result:=htcaption;
end;但是这样做了之后窗口无法响应单击鼠标事情或其他的事件,联窗体上面的控间也收不到消息?请问有什么解决办法吗?

解决方案 »

  1.   

    唉,在一个onmousedown里加上 
    ReleaseCapture;
      SendMessage(Handle, WM_SYSCOMMAND, $F012, 0);
    就好了,
      

  2.   

    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      ReleaseCapture;
      SendMessage(self.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
    end;
      

  3.   

    如果我的窗体上面有一个TImage控间,拖动这个TImage控间就不能移动窗体了!只能拖动窗体部分才可以移动窗体,怎么拖动TImage控间移动窗体?
      

  4.   

    procedure image1.onMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
    ReleaseCapture;
      SendMessage(Handle, WM_SYSCOMMAND, $F012, 0);
    end
      

  5.   

    非常感谢 tcjzy(叶正) 问题解决!可否解释一下这两句代码是什么意思?
    5分钟后结帖!
      

  6.   

    你要我讲啊,你没学过windows message我讲了你也不明白的呀.你只要看一下windows编程第2课,里面就有的
    这个意思就是当你鼠标按下的时候,给系统一个消息,相当于你按下了标题栏.