我通过一个查询条件窗口(find)来选择查询的条件,然后把查询窗口隐藏,再打开查询结果显示窗口(list),并可在list通过快捷菜单重新显示find进行查询条件的选择.在list的oncreate里进行query查询,这样第一次打开list时有正确的结果,之后就没有了,如将query改为放在list的onshow里查询,那每次执行find时都会查询一次严重影响速度和系统资源,请问应该把query放在那里才能保证每次查询都能正确显示?能提供一些例子吗?(备注:list为子窗口,设置为只打开一次)

解决方案 »

  1.   

    就在Create里
    query.Close;//一定要关闭
    query.SQl.text := 传入的SQL语句;
    query.Open;
      

  2.   

    把执行query查询,写在一个单独的过程中,需要查询时显示执行fFind.SearchMsg(vCont:string);
    begin
      query1.close;
      query1.sql.clear;
      query1.sql.add(format('select ... from table1 where fieldName = %s ',[vcont]));
      query1.open;
    end;在List中调用
      ffind.searchMsg('条件');  //如果不查询,则去掉该句  ffind.show;
      

  3.   

    那如果我第一次的结果正确出来了时候,我又调出find,那显示就不正确了因为我在find增加了一个判断list是否打开,如打开则show,因为我不想每查询一次都出现一个新的结果显示窗口.