各位大侠:
我在一个查询窗口中调用一个子窗口显示查询结果,当第一次使用时无法显示查询结果,但之后再查询则能正确显示,请问如何解决?如果不使用判断子窗口是否打开,则每执行一次查询都会打开一个子窗口,有没有更好的解决方法?代码如下:
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创建之前就开始查询的,如果不使用判断子窗口是否打开则可以正确显示,但每执行一次查询都会打开一个新的显示结果子窗口,加上判断之后就会第一次查询时没有显示结果,第二次之后就正常了。
解决方案 »
- 实现上传PDF文件并显示出来。并保存到服务器。
- Delphi 表单读取,并对其中项目做比较
- 怎样把string 类型的数据存到文件中阿?我用length的不到长度,因为是一个文件的二进制码。
- 关于ShowWindow(Application.Handle, SW_HIDE)的提问
- 怎样把xml文件各节点的内容读入sql数据库?
- TreeView的问题,还望指教!
- 一个sql语句问题。急急急。
- 紧急求助
- 众高手请深入的详解一下消息,句柄!(详细,详细再详细!,深入,深入,再深入!)
- *****如何实现这一方法*****
- 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