主窗口是一个MID窗口,当MID窗口打开时,在MID窗口中打开一个模式的窗口(做密码验证用),应该在主窗口的什么事件中编写打开模式窗口的代码,我试过在CREAT和SHOW事件中编写,在CREAT中编写,执行出错,在SHOW中编写,主窗口没有显示,模式窗口就打开了

解决方案 »

  1.   

    在CREAT中编写,执行出错 可能是  模式窗口还没创建,你要先创建模式窗口在创建MID窗口
      

  2.   

    在OnPaint和OnResize中都可以实现。
      

  3.   

    procedure Tform1.OnPaint(sender);
    begin
     form2.showmodal;
    end;
      

  4.   

    不行啊,在ONPAINT中编写代码,出错,而且模式窗口关闭后又马上打开在ONRESIZE中编写代友,当窗口的尺寸一变化,模式窗口就又打开了
      

  5.   

    用变量控制呀,定义一个布尔型变量来控制窗口是不是显示。
    dialogshow:boolean;(可以定义为全局变量或者是主窗口类中的一个私有变量)procedure Tform1.OnPaint(sender);
    begin
      if dialogshow then 
        form2.showmodal;
      dialogshow:=false;
    end;
    procedure Tform1.OnCreate(sender);
    begin
      dialogshow:=true;
    end
      

  6.   

    不行,弹出错误窗口,显示以下错误信息
    Project Project1.exe raised exception class EInvalidOperation with
    message 'Cannot make a visible window modal'.Process stopped.Use
    Step or run to continue.这是怎么会事啊,在ONPAINT事件中编写打开模式窗口的代码,执行就出错
      

  7.   

    procedure TMainForm.FormActivate(Sender: TObject);
    begin
    if MainForm.Tag=0 then
     begin
       DLForm.ShowModal;
       MainForm.Tag:=1;
      end;
    end;
      

  8.   

    tag是什么啊,请讲的详细点,谢谢
      

  9.   

    窗体的一个属性啊!自己找一找,DLForm是要登入的窗体。
      

  10.   

    在主窗体的FormActivate事件中写
      

  11.   

    在主程序里里呀!
    program
    begin
      就在这里面!
    end;
      

  12.   

    http://expert.csdn.net/Expert/topic/1556/1556694.xml?temp=.5631372
    去看一下吧, 我前一阵子才搞定,在MDI的ONSHOW中可以实现,不过这时不要 用BITBUTTON,要用一般的按钮来控制登录窗口,要不然就会出现无法控制程序流程的麻烦,也就是说不管输入密码正确与否,都会打开主窗口
      

  13.   

    结束程序用APPLICATION。TERMANATE
      

  14.   

    在From Create中事件中创建窗体。
    SHowModel。
    TOG:是一个标记,就是标记他属于那伙的。
      

  15.   

    这样建立模态窗口
    Modal :TWinSortDialog;
    begin
               modal:=TWinSortDialog.Create (Application);
               try
               Modal.ShowModal;
               finally
               Modal.Free;
               end;
      

  16.   

    procedure TForm1.FormShow(Sender: TObject);
    begin
      if form2.ShowModal<>mrYes then
        Application.Terminate;
    end;form2是密码校验窗口,你把form2中的一个按钮的ModalResult属性设置为mrYes 在这个按钮的click事件里处理密码校验功能。如果密码输入不正确就更改它的ModalResult属性设置不为mrYes,很简单
      

  17.   

    好了,我搞定了,是在别人的一个源程序上看到的,在窗口的Activate里编写打开窗口的代码,设置一个变量,让密码验证窗口只可以打开一次。在密码验证窗口里也设置一个变量,在关闭密码验证窗口时,根据这个变量的值来判断是否通过密码验证,如果有关闭密码窗口,如果没有则关闭整个程序