如:
点击A窗口的一个button按纽:
procedure Tmonimain.lblW_E44FClick(Sender: TObject);
begin
screen.Cursor:=crHourGlass;
lblW_E44F.Enabled:=false;//省略一部分代码setrateprice.Showmodal;
screen.Cursor:=crdefault;
lblW_E44F.Enabled:=true;end;以下是点击B窗口的“确定保存”按纽:
procedure Tsetrateprice.Tsbn_101Click(Sender: TObject);
begin
screen.Cursor:=crHourGlass;
Tsbn_101.Enabled:=false;//中间这段是对oracle数据库进行的一些读写操作,比较耗时,大约要10秒。screen.Cursor:=crdefault;
Tsbn_101.Enabled:=true;setrateprice.hide;
setrateprice.close;end;我的流程是:点击A窗口的button1按纽打开B窗口,在B窗口中输入完资料后点“保存”,然后将保存成功或失败的信息显示在A窗口的memo1上面,再自动关闭B窗口。但现在的问题是:B窗口有时能自动关闭,有时却又不能,为什么?
请各位大虾指点!对于这种流程的设计大家通常是如何处理的?先谢了。

解决方案 »

  1.   

    form2的close里加上这句
    Action:=cafree
      

  2.   

    是这样吗?
    setrateprice.hide;
    setrateprice.Action:=cafree; //这行编译通不过呀?
    setrateprice.close;
      

  3.   

    procedure Tsetrateprice.Tsbn_101Click(Sender: TObject);
    begin
       screen.Cursor:=crHourGlass;
       Tsbn_101.Enabled:=false;   //中间这段是对oracle数据库进行的一些读写操作,比较耗时,大约要10秒。   screen.Cursor:=crdefault;
       Tsbn_101.Enabled:=true;
       Close;  //确保程序执行到这一句。
    end;
      

  4.   

    HsWong() 说得对,因为对oracle的操作时间比较长,而且有不确定性,
    我感觉就是程序有时没能执行close;这句。
    这时的form2窗口点关闭也关闭不了,没有反应。第一次见到这种奇怪的问题。
      

  5.   

    痛苦了二天,终于解决了。但还不了解为什么会这样。
    form1的按纽中用:setrateprice.Show;form2的“确定提交”按纽中用:
       try
           hide;
           close;
       finally
           setrateprice.Show;
           hide; 
           close;
       end;
    就可以了。但不知为什么会这样,是不是delphi的bug?
    等一会结贴。