我的程序里有个主界面,在主界面里有个BUTTON,我点这个BUTTON,FORM1出来,然后我点FOM1里的‘保存‘按纽,数据保存完自动关掉FORM1,然后在自动打开FORM1,我的目的是实现数据库更新,把刚才保存的数据更新出来。
当然还有很多更新数据的发法,我只想用这种。如果还有其他方法,在回答完第一个问题后,你也可以写出来,希望大家多写几个。交流一下。

解决方案 »

  1.   

    不会吧!!!!
    实现数据的更新也不至于要频繁的打开关闭窗口啊,你可以直接写一个刷新函数嘛
    另外,如果你实在是想这样的话,Form1.Hide,然后再Form1.Show,不过好像意义不大
      

  2.   

    放一个timer控件设置时间后,先Form1.hide然后在Form1.show;
      

  3.   

    范不着这样吧!D都快被你搞死了,呵呵!
    1、AdoQuery.Close;
       AdoQuery.Open;
    2、AdoQuery.Refresh;
    --------------------------------------
    靠,还不结帖!
      

  4.   

    不是用HIDE,要是用HIDE,我还问你们干吗?
      

  5.   

    主界面:
    procedure TmainForm.ButtonOnClick(Sender:TObject);
    begin
       Form1 := TForm1.Create(Self);
       Form1.ShowModal;
       If Form1.cmdSave.ModalResult = mrOK then
       begin
           Form1 := TForm1.Create(Selft);
           Form1.ShowModal;
       end;
    end;Form1:
    procedure TForm1.cmdSaveOnClick(Sender: TObject);
    begin
       ......
       .....
       .....
       cmdSave.ModalResult := mrOK;
    end;procedure TForm1.Form1OnClose(...);
    begin
       .......
       ......
       Action := caFree;
    end;
      

  6.   

    Form1
    button1显示Form2
    有timer控制Form2在关闭后1秒再显示,初始timer.enable:=False; unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Timer1: TTimer;
        procedure Timer1Timer(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation
    uses Unit2;
    {$R *.dfm}procedure TForm1.Timer1Timer(Sender: TObject);
    begin
        Form2.Show;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
     Form2.Show;
    end;end.Form2//关闭按钮,关闭后会自动显现,Button1关闭后不再显示
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm2 = class(TForm)
        Button1: TButton;
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure FormShow(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;
      Flag:Boolean=True;
    implementation
    uses Unit1;
    {$R *.dfm}procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
       if Flag then
       Unit1.Form1.Timer1.Enabled:=True;
    end;procedure TForm2.FormShow(Sender: TObject);
    begin     Unit1.Form1.Timer1.Enabled:=False;
    end;procedure TForm2.Button1Click(Sender: TObject);
    begin
        Flag:=False;
        Close;
    end;end.
      

  7.   

    可是CLOSE的时候自然会产生CLOSE事件,所以关不掉procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
       if Flag then
       Unit1.Form1.Timer1.Enabled:=True;
    end;
      

  8.   

    虽然以上的回答,都没解决问题,但还是谢谢大家了。呵呵,我用断开在连数据库的方法也实现了,但不是adoquery.close在open,那样数据还是不刷新的,是adocontion方法,有不太清楚的问我啊