如题,怎么实现?最好有代码,谢谢!

解决方案 »

  1.   

    可以实现,只是我比较笨,能用一个timer事件是触发实现
    在showmodal窗体上放一个timer1
    写showmodal窗体的onshow事件 起用timer1
    在timer事件里写上一个检查showmodal窗体的状态代码 如果最小化了 立刻最小化主窗体
    如果时间设得比较短的话 (比如说:设置10毫秒检查一次)看上去就是同时最小化的了
    //form2为showmodal窗体
    procedure TForm2.FormShow(Sender: TObject);
    begin
    timer1.Enabled:=true;
    end;procedure TForm2.Timer1Timer(Sender: TObject);
    begin
    if form2.WindowState=wsMinimized then
    form1.WindowState:=wsMinimized;
    end;办法比较笨 希望高手给出更好的方法。呵呵
      

  2.   

    在form2里加上声明:
    procedure WMNCLBUTTONDOWN(var msg: TWMNCLBUTTONDOWN);message WM_NCLBUTTONDOWN ;
    定义如下:
    procedure TForm2.WMNCLBUTTONDOWN(var msg: TWMNCLBUTTONDOWN);
    begin
      inherited;
      if msg.HitTest = HTREDUCE then
        sendmessage(form1.Handle,WM_SYSCOMMAND,SC_MINIMIZE,0);
    end;
      

  3.   

    to xixuemao(吸血猫) :用你的这个方法结果如下: form2最小化的时候,主窗体并未同时最小化,但当form2从最小化恢复到原窗口的时候,form2 和form1同时最小化了,问题出在哪里?
      

  4.   

    在form2里加上声明:
    procedure WMSyscommand(var Msg:TMessage);Message WM_SYSCOMMAND;
    定义如下:
    procedure TForm2.WMSyscommand(var Msg: TMessage);
    begin
      inherited;
      if Msg.WParam = SC_MINIMIZE then
        sendmessage(form1.Handle,WM_SYSCOMMAND,SC_MINIMIZE,0);
    end;
      

  5.   

    在二楼的基础上做了修改,觉得这样的实际效果更好些。
    -------------------------------------------------------
    在form2里加上声明:
    procedure WMNCLBUTTONDOWN(var msg: TWMNCLBUTTONDOWN);message WM_NCLBUTTONDOWN ;
    定义如下:
    procedure TForm2.WMNCLBUTTONDOWN(var msg: TWMNCLBUTTONDOWN);
    begin
      inherited;
      if msg.HitTest = HTREDUCEthen
        sendmessage(self.Handle,WM_SYSCOMMAND,SC_MAXIMIZE,0);  //增加了让本窗口不最小化
        sendmessage(form1.Handle,WM_SYSCOMMAND,SC_MINIMIZE,0); //让父窗口最小化
    end;
    ------------------------------------------------------------------------------
      

  6.   

    procedure Form2.OnResize(Sender: TObject);
    begin
      if WindowState = wsMinimized then
      begin
        WindowState := wsNormal;
        Application.Minimize;
      end;
    end;