各位大侠:
我在一个查询窗口中调用一个子窗口显示查询结果,当第一次使用时无法显示查询结果,但之后再查询则能正确显示,请问如何解决?如果不使用判断子窗口是否打开,则每执行一次查询都会打开一个子窗口,有没有更好的解决方法?代码如下:
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创建之前就开始查询的,如果不使用判断子窗口是否打开则可以正确显示,但每执行一次查询都会打开一个新的显示结果子窗口,加上判断之后就会第一次查询时没有显示结果,第二次之后就正常了。
我在一个查询窗口中调用一个子窗口显示查询结果,当第一次使用时无法显示查询结果,但之后再查询则能正确显示,请问如何解决?如果不使用判断子窗口是否打开,则每执行一次查询都会打开一个子窗口,有没有更好的解决方法?代码如下:
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创建之前就开始查询的,如果不使用判断子窗口是否打开则可以正确显示,但每执行一次查询都会打开一个新的显示结果子窗口,加上判断之后就会第一次查询时没有显示结果,第二次之后就正常了。
解决方案 »
- D不用WriteProcessMemory写内存如何写,指针?怎么写内存 ?
- delphi 的 Image 显示透明图片在更换位图图片的时候闪烁:
- 急!如何用delphi实现excel,dbf表数据导入oracle数据库???
- 取字符串中最大的数字,以下有问吗?
- 请教:用Adoquery查询,并把查询结果分页显示在DbGrid!急用!在线等!
- 窗体设计器背景颜色的问题。请各位高手援助!!
- Delphi可否做出比较完善的图文混排?
- 怎么建视图啊?
- 4路USB摄像头视频录像系统
- 关于程序优化的问题:程序中用到许多QUERY,是静态建好还是在程序中动态创建呢?
- Delphi中如何显示一个非模式对话框?
- 需要哪些ACCESS文件?在线等......
以SHOWMODAL方式显示。
就可以了。比如按一下BUTTON显示子窗口。
procedure TForm1.Button1Click(Sender: TObject);
begin
application.create(tform2,form2);
form2.showmodal;
form2.free;
end;
form2就是子窗口。
query1.sql.clear;
query1.SQL.Add(strsql); query1.open;
写在jjc_list1.StatusBar1.Panels[0].Text := '记录总数:'+inttostr(jjc_find1.Query1.RecordCount);之后,
jjc_list1.Show;之前。试一下。
begin
if isiconic(jjc_list1.handle) then showwindow(jjc_list1.handle,sw_restore)
else setforegroundwindow(jjc_list1.handle);
end
/////////// else这个else 去掉!
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;
end;
if Assigned(jjc_list1) then
begin
if isiconic(jjc_list1.handle) then showwindow(jjc_list1.handle,sw_restore)
else setforegroundwindow(jjc_list1.handle);
end