大家好,我在主窗体A中 点击“添加”按钮打开窗体B。
在B中输入各个字段后点击确定插入数据,然后窗体B点击退出后 在A窗体中的dbgrid中及时显示出新增加到数据表中的信息,请问大家有什么比较好的实验方法.我目前只能在A窗体中加个 刷新 的按钮刷新数据才能及时 显示,请问各位高手解决方法。谢谢!

解决方案 »

  1.   

    你把刷新数据的代码加到窗体B的onclose事件中就可以了
      

  2.   

    把刷新方法写在  在B窗体关闭的时候 ;
    Tform2.close
    begin
      刷新;
    end;
      

  3.   


    A本来引用B了现在B又引用A啊
      

  4.   

    在A窗体中
    b.showmodel;
    bt.Click;
      

  5.   

    在 implementation里
    uses 不会造成循环引用的
      

  6.   

    既然B窗体关闭的时候你数据都写进去了,
    把你A窗体的  刷新 按钮的代码写到timer事件里  这样可以吗?
      

  7.   

    把A窗体中的数据集作为参数传到B窗体中,在B窗体中对该数据集进行数据添加和刷新动作即可。在B窗体中定义一个类方法TFormB = class(TForm)
    .....
    public
      class function InsertData(ADataSet: TDataSet): Boolean;
    end;class function TFormB.InsertData(ADataSet: TDataSet): Boolean;
    begin
      with TFormB.Create(Nil) do
      try
        Result := ShowModal;
        if Result then begin
          ADataSet.Insert;
          //使用如下方法插入数据
          //ADataSet.FieldByName().AsString := Value;
          ADataSet.Post;
          ADataSet.Refresh;
        end;
      finally
        Free;
      end;
    end;A窗体中如下调用即可
    TFormB.InsertData(DataSet);
      

  8.   

    相互引用啊
    然后form1.button1.click;
      

  9.   

    在A窗体的OnActivate事件中加入刷新动作就可以了,一但B窗体关闭,A窗体成为活动窗体,就自动刷新一次。
      

  10.   

    dbgrid关联一个query,在关闭B的时候重新select一下,就可以了。大家啊有兴趣看看这个 http://www.130132.cn/0_12_227329.aspx
      

  11.   

    同意!!!楼主可以用chris_mao仁兄的方法,我也是这么做的!方便!呵呵!
      

  12.   

    不用SQL语句,直接对adoquery操作就可以适时刷新了。with adoquery do
    begin
    close;
    sql.text := 'select * from table';
    open;
    …… ……
    …… ……
    insert;
    try
    fieldbyname('field1').asstring := 'abc';
    post;
    except
    cancel;
    end;
    …… ……