加一个条件,窗体上有个alClient的Panel

解决方案 »

  1.   

      protected
        procedure CreateParams(var Params: TCreateParams); override;procedure TForm1.CreateParams(var Params: TCreateParams);
    begin
      inherited;
      Params.Style := Params.Style or WS_SIZEBOX;
    end;
      

  2.   

    呵呵,将BorderStyle设为bsNone
    然后在Form声明中写:
      protected
      procedure CreateParams(var Params: TCreateParams); override;代码是:procedure TForm1.CreateParams(var Params: TCreateParams);
    begin
      inherited;  Params.Style := Params.Style or WS_THICKFRAME
    end;
      
      

  3.   

    提供参考:怎样在点击拖动控件时拖动无标题窗体!
    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      ReleaseCapture;
      SendMessage(Handle,WM_SYSCOMMAND,$F012,0);
    end;
      

  4.   

    上面的代码改成labelMouseDown后,可以实现按住label移动窗体,并且会出现虚线框,但是改变大小却好象不行
      

  5.   

    呵呵,上面那个例子是发送 sc_DragMove 消息,当然不能改变大小啦。感谢taxi(游少爷) 和 chechy(chechy)  提供的两个参数。
    我提出的的问题基本是解决了,但是有一个问题,我不希望窗体出现边框。
    也就是说如果我用一个Image放在窗体上的话,会有1-2个象素的边框。稍微改变一下问题的描述吧:
    如果我处理 WM_NCHitTest 消息的话,对于空白窗体是可以捕捉到的。
    但是,如果窗体上有一个Panel的话,那么 WM_NCHITTest消息会被Panel捕捉到。
    但是窗体却接收不到这个消息了。我想问问如何才能让鼠标在Panel上的时候,窗体
    能够接收到WM_NCHitTest消息。给一个测试程序:
    interface
    TForm1 = Class(TForm)
    ...
    procedure WMNCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;
    ...
    end;在窗体的 WM_NCHITTEST 消息响应里面写
    procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
    begin
      Caption := Format('%d:%d', [Message.XPos, Message.Ypos]);
      inherited;
    end;
    然后在窗体上放一个Panel,可以看到,当鼠标在Panel上的时候,窗体的Caption不会变化了。如何能够在这种情况下让窗体也能接收到这个消息呢?感谢各位的参与,请继续予以关注。
      

  6.   

    好象从 TWinControl 继承下来的控件如果在顶层的话都会捕捉到这个消息。
    但是它们下面的对象就接收不到这个消息了。为什么呢?