各位大侠:
我在一个查询窗口中调用一个子窗口显示查询结果,当第一次使用时无法显示查询结果,但之后再查询则能正确显示,请问如何解决?如果不使用判断子窗口是否打开,则每执行一次查询都会打开一个子窗口,有没有更好的解决方法?代码如下:
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;
我在一个查询窗口中调用一个子窗口显示查询结果,当第一次使用时无法显示查询结果,但之后再查询则能正确显示,请问如何解决?如果不使用判断子窗口是否打开,则每执行一次查询都会打开一个子窗口,有没有更好的解决方法?代码如下:
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;
jjc_find1.Query1.RecordCount和query1.SQL.Add(strsql)中的query不是一个吧
是不是jjc_find1中的query是在jjc_list1创建之后才开始查询的,所以第一次得不到结果
jjc_find1中的query是在jjc_list1创建之前就开始查询的,如果不使用判断子窗口是否打开则可以正确显示,加上判断之后就不正常了。
例如://Application.CreateForm(Tjjc_list1, jjc_list1);
应该是你创建的窗体没有指定数据源,很乱呀。你用的DataModule吗?如果不是那么你的jjc_list1的数据显示控件的数据源你是怎么指定的?在那里?