Self对象可能不是指的窗体!
换成Formname.Close;
换成Formname.Close;
解决方案 »
- 断网,散分!(4)
- 请问个位大虾,怎样把两个DBGrid中的数据存入一个sql server 2005的一个表中
- OCX程序调试出现的怪现象。
- 网络汉奸小小马哥被川航开除
- 在delphi里面有没有什么设置原子操作的方法,也就是几条语句要么全部执行,要么一条都不执行
- 又要提一个select语句的问题(续)?
- 怪了,formactivate为什么运行不了啊?
- treeview的节点赋值给DBEDIT
- CreateProcess函数能不能,创建非可执行文件进程
- 我把数据库记录导出为.csv文件时,字符型字段导出后前面的‘0’没了。该如何处理?
- 谁能帮小弟一把啊!!!
- 一个简单问题,怎样用dbGrid 处理memo类型(blob field)?
一般Self指的是自己类的引用你用楼上的方法肯定没有问题
在窗体上放了个dbgrid,双击dbgrid的一条记录,显示打印。打印完毕,出现本窗体,然后
就关不掉了
我跟踪代码,没有发现
糊涂了……
procedure TfrmPSearJing.DBGrid1DblClick(Sender: TObject);
begin
try begin
if not (Trim(self.DBGrid1.Fields[0].AsString) ='') then begin
frmPsjing.QRLabel1.Caption:=self.DBGrid1.Fields[0].AsString;
frmPsjing.QuickRep1.Preview ;
end
else begin
application.MessageBox(Pchar('请先查询!'),'提示信息!',mb_IconInformation+mb_oK);
self.ComboBox1.SetFocus ;
end;
end; except
application.MessageBox(Pchar('请先查询!'),'提示信息!',mb_IconInformation+mb_oK);
end;
end;
//////////////////
procedure TfrmPsjing.QuickRep1Preview(Sender: TObject);
begin
form2.QRPreview1.QRPrinter :=self.QuickRep1.QRPrinter;
form2.Show;
end;
////////////
procedure TForm2.CloseBtnClick(Sender: TObject);
begin
self.Close;
end;
/////////
代码依次按照以上顺序走的
当执行到最后时。form2.close时,返回到了frmPSearJing,然后就 关不掉了
procedure TfrmPsjing.QuickRep1Preview(Sender: TObject);
begin
form2 := TForm2.Create(Self);
try
form2.QRPreview1.QRPrinter :=self.QuickRep1.QRPrinter;
form2.ShowModal;
finally
form2.Free;
end;
end;
产生后的窗体名是否还是form2
form2.QRPreview1.QRPrinter :=self.QuickRep1.QRPrinter;
form2.Show; ////////////
能显示数据,如果用:
form2 := TForm2.Create(Self);
try
form2.QRPreview1.QRPrinter :=self.QuickRep1.QRPrinter;
form2.ShowModal;///////////
finally
form2.Free;
end;
则能关掉,但是QRpreview不显示数据,当然。只是一闪。然后又回到了本窗体(不能关掉的窗体)
procedure TfrmPsjing.QuickRep1Preview(Sender: TObject);
var
form2: TForm2;
begin
form2 := TForm2.Create(Self);
try
form2.QRPreview1.QRPrinter :=self.QuickRep1.QRPrinter;
form2.ShowModal;///////////
finally
form2.Free;
end;
end;
是TQRPreview搞的鬼,在它身上找找问题根源吧.....
我知道呀,怎么找呀???????????
begin
Action := caFree;
end;
Delphi为一个Form的关闭行为指定了四种方式,分别是:caNone 禁止Form被关闭
caHide Form不被关闭,但是被隐藏。被隐藏的Form仍然可以被程序访问。
caFree Form被关闭,并且释放其占用的资源。 caMinimize Form被最小化而不是被关闭,这是MDI子窗口的默认关闭行为。
如果你是用TQRPreview自己做的,那么放个BitBtn,设置属性Kind:= bkClose即可。
你去看我帖子:
http://www.csdn.net/expert/topic/445/445725.shtm
多谢!