也就是说,我想做一个FORM,使各子窗体在最大化时不能超过主窗体上的工作区间,这个需要截获系统的最大化消息,请问如何用代码实现???
或者
有没有更好的方法????请回复!!!!!谢谢各位!

解决方案 »

  1.   

    截获WM_SYSCOMMAND消息,当wParam为SC_MAXIMIZE时就是最大化!
      

  2.   

    type
      TForm1 = class(TForm)
      private
        { Private declarations }
      public
        procedure WMSYSCOMMAND(var message: TMessage); message WM_SYSCOMMAND;
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}{ TForm1 }procedure TForm1.WMSYSCOMMAND(var message: TMessage);
    begin
      if message.WParam = SC_MAXIMIZE then
        //Do something
      else
        inherited;
    end;end.
      

  3.   

    你要是用的MDI做,子窗体最大化就不会超过主窗体。一般的窗口肯定会的。不过采用上面的做法就可以了
      

  4.   

    这个……你动态设定Form1.Constraints.MaxHeight、Form1.Constraints.MaxWidth不行吗?截获WM_SYSCOMMAND的SC_MAXIMIZE消息当然可以,但若是双击标题栏放大怎么办?
      

  5.   

    同意楼上的,有意外发生。
    还是设置Form1.Constraints.MaxHeight、Form1.Constraints.MaxWidth