把关闭写到edit的事件中不行吗?

解决方案 »

  1.   

    你的TBitBtn的ModalResult设置为mrNone就好了
      

  2.   

    ChildForm.Show;
    这是显示非模式对话框,它可以与主窗口间切换,所以被主窗口切换回去,然后给Free了。改用模式窗口:
    ChildForm.ShowModal;
    这样等子窗口关闭才会继续下面的程序通常我这样使用:
        ChildForm := TForm2.Create(self);
        if ChildForm.ShowModal = mrOk then
        begin
          // 按OK后,要做的事
        end;    
        ChildForm.Free;
      

  3.   

    ChildForm中一定有TBitBtn吧?
    你的TBitBtn的ModalResult设置为mrNone就好了 
      

  4.   

    edit的问题很简单我想你用的button或bitbtn 使用 kind := bkOK 这样 default := True
    把属性 default 设为 false , 这样就不会在edit中按回车退出了
      

  5.   

    phoenix96_2000(冷月孤星):
    如果不用showmodal,那么就在子窗体的show过程中加上formmain.enable:=false
    在子窗体退出时再将formain.enable:=true,这样很麻烦,而且也不符合面向对象的编程精神
      

  6.   

    program Project1;uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {Form2};{$R *.RES}begin
      Application.Initialize;
      Application.CreateForm(TForm2,Form2);  // your Child Form;
      Application.CreateForm(TForm1, Form1); // your main Form;
      Application.CreateForm(TForm2, Form2);
      Application.Run;
    end.
      

  7.   

    在free前加判断,edit文本框处敲击回车,才允许退出呗!像你那样刚create一个from马上free掉,当然感觉是一闪即逝呀!
      

  8.   

    to zenartus(投入者):我已经试过了,在提问中我已提到了这这问题
      

  9.   

    有很多方法
    其一:在你要创建的子窗口里放一个Ttimer,定时enabled:=false;
    在工程文件里面写上:
    program own;uses
      forms,
      main in 'Main.pas' ,
      unit2 in 'unit2.pas' ;{$R *.RES}
    begin
      Application.Initialize;
      form2 := form2.Create(Application);
      form2.Show;   
      form2.Update; 
      while form2.timer1.Enabled do
        Application.ProcessMessages;
      Application.CreateForm(TMain, Main);
      form2.Hide;  
      form2.Free;  
      Application.Run;
    end.