按下一个TForm对象的'最小','最大','X(关闭)',分别对应那个响应函数,如何使这些操作不产生效果?
谢谢!

解决方案 »

  1.   

    1 直接在form的属性里去掉systembox
    2 自己编写WM_SYSCOMMAND消息的响应函数,wparam为SC_CLOSE等消息直接就屏蔽掉
      

  2.   

    在PUBLIC中建立
    procedure WMSysCommand(var Msg: TMessage);message WM_SYSCOMMAND;在实现中
    procedure Tfm_report_main.WMSysCommand(var Msg: TMessage);
    begin
        //最小化
      if Msg.WParam = SC_ICON then
    //执行相应的语句
        //最大化
      else
        begin   
          if Msg.WParam =SC_ZOOM then
             //执行相应的语句
           else
            inherited;
        end
    end;
      

  3.   

    呀..被你抢了..firectoucher..真....
      

  4.   

    唉,我还想叫他用CBT hook呢。算了。
      

  5.   

    1 直接在form的属性里去掉systembox?
    是直接在Object Inspector 中改吗?我没找到systembox呀?
    我现在还太菜,请大家稍微说得详细一些,拜托了!谢谢!
      

  6.   

    属性
    form1.BorderIcons:=[];
    就这么写吗?
      

  7.   

    form1.BorderIcons
    属性
    你设置一下就好了呀
      

  8.   

    在Object Inspector 中设置
    form1.BorderIcons中的
    bisystemmenu biminimize  bimaximize 三项为false
    你的窗体就没有了系统菜单、最小、最大或者:(看你想要做什么)如果你想在程序中控制这些事件,可以用 zqdshsy(jsfdkl) 的代码
    如果只想使这些操作不产生效果就直接改form的borderstyle属性为bsdialog或bsnone
      

  9.   

    谢谢,我试了,确实可行不过不知道BorderIcons 中biSystemmer和biHelp是用来控制什么的?控制‘X’按钮的属性是什么?谢谢!
      

  10.   

    var
      SamepleMenu: MHENU;
    begin
      SamepleMenu:= GetSystemMenu(Handle,False);
      EnableMenuItem(SamepleMenu,SC_CLOSE,MF_BYCOMMAND+MF_DISABLED+MF_GRAYED);
      //使标题栏菜单的“关闭”按钮失效
      DeleteMenu(SamepleMenu,SC_CLOSE,MF)BYCOMMAND);
      //“关闭”菜单删除
    end;