各位大侠:
    我在一个查询窗口中调用一个子窗口显示查询结果,当第一次使用时无法显示查询结果,但之后再查询则能正确显示,请问如何解决?如果不使用判断子窗口是否打开,则每执行一次查询都会打开一个子窗口,有没有更好的解决方法?代码如下:
  query1.close;
  query1.sql.clear;
  query1.SQL.Add(strsql);  query1.open;
     //判断子窗口是否打开
  if Assigned(jjc_list1) then
  begin
    if isiconic(jjc_list1.handle) then showwindow(jjc_list1.handle,sw_restore)
    else setforegroundwindow(jjc_list1.handle);
  end
  else
  begin
     if Application.FindComponent('jjc_list1')=nil then
      jjc_list1:=Tjjc_list1.Create(nil)
   else
     jjc_list1:=Tjjc_list1.Create(jjc_list1);
     end;
     jjc_list1.Left :=1;
     jjc_list1.top:=65;
     jjc_list1.StatusBar1.Panels[0].Text := '记录总数:'+inttostr(jjc_find1.Query1.RecordCount);
     jjc_list1.Show;

解决方案 »

  1.   

    我试过,没有这种问题啊
    jjc_find1.Query1.RecordCount和query1.SQL.Add(strsql)中的query不是一个吧
    是不是jjc_find1中的query是在jjc_list1创建之后才开始查询的,所以第一次得不到结果
      

  2.   

    应该先创建好显示的窗口,再执行SQL查询的吧
      

  3.   

    jjc_find1.Query1.RecordCount和query1.SQL.Add(strsql)中的query不是一个
    jjc_find1中的query是在jjc_list1创建之前就开始查询的,如果不使用判断子窗口是否打开则可以正确显示,加上判断之后就不正常了。
      

  4.   

    那么在project中你是不是把Application.CreateForm(Tjjc_list1, jjc_list1);屏蔽掉了?
    例如://Application.CreateForm(Tjjc_list1, jjc_list1);
      

  5.   

    晕了,
    应该是你创建的窗体没有指定数据源,很乱呀。你用的DataModule吗?如果不是那么你的jjc_list1的数据显示控件的数据源你是怎么指定的?在那里?