怎么打开一个qreport的form (10分)

  • 主题发起人 主题发起人 agamomnon
  • 开始时间 开始时间
A

agamomnon

Unregistered / Unconfirmed
GUEST, unregistred user!
主form中用一个button来打开qreport,
report是直接在一个新的form上添加
qreport的,
在主form中我是这样写的,
procedure Tfrmtj1.Button1Click(Sender: TObject);
begin
reporttj1:=Treporttj1.Create (Application);
reporttj1.Preview ;
end;

当第一次点击按钮的时候,正常进入预览界面,退回到
主界面再次点击的时候,提示" A component named reporttj1
already exists",
我应该怎么做才能让它运行正常。
 
关闭的时候把它 free 掉
 
关闭时是report的close按钮,应该是什么事件呢?
 
关闭的时候没有关闭,你再create当然就不对了。
 
那我应该怎么做呢?
我的水平太次了。。
 
注释掉以后一运行就错,
access violation at address 004b1eee in module 'housenew.exe' read address ffffffff
第二种方法,提示:Expected '=' but '('found
什么意思?
 
方法一:
在工程文件(dpr)中写:
Application.CreateForm(TTreporttj1. reporttj1);
procedure Tfrmtj1.Button1Click(Sender: TObject);
begin
//注释掉算了,何必每次都动态创建呢,多累啊?reporttj1:=Treporttj1.Create (Application);
reporttj1.QuickRep1.Preview ;
end;
--------------------------------------------
方法二:
procedure Tfrmtj1.Button1Click(Sender: TObject);
begin
reporttj1:=Treporttj1.Create (Application);
//不注释掉也行,
reporttj1.QuickRep1.Preview ;
end;

procedure Treporttj1.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
//不注释掉也行,加上这句
end;
 
我忘了问你一下,reporttj1是个窗体(Tform),还是TQuickRep??
上面的帖子我改了一下,你看看吧。我是把reporttj1当作一个窗体。
 
直接新建的report
 
reporttj1是个窗体(Tform),
这个也试过了,直接用preview不行
 
放QuickRep的Form最好做成自动创建,这样直接调用QuickRep的Preview()就行了。
或者每次要预览的时候创建该Form,预览完了再Free/Release
 
reporttj1:=Treporttj1.Create (Application);
reporttj1.Preview ;
reporttj1.free;
 
奇怪,F7一步步来倒是不出问题,一切正常,怎么F9一下运行就出错,最后还非法操作。
再试试。。。。。。。
 
FormRP_RmbIn.TradeID.Caption:=TradeID.Caption;
FormRP_RmbIn.TradeType.Caption:='人民幣買入';
FormRP_RmbIn.MoneyID.Caption:='人民幣RMB';
FormRP_RmbIn.TradeRate.Caption:=TradeRate.Text;
FormRP_RmbIn.TradeAmount.Caption:=TradeAmount.Text;
FormRP_RmbIn.sumHK.Caption:=else
CostHK.Text;
FormRP_RmbIn.IDCard.Caption:=IDCard.Text;
FormRP_RmbIn.Name.Caption:=CustName.Text;
FormRP_RmbIn.Operater.Caption:='DDH';
FormRP_RmbIn.QR_RmbIn.Preview;
決無問題,甭亂折騰
 
动态创建的话,
with Treporttj1.Create(self)do
try
showModal;
finally
free;
 
若是动态创建窗口,则有标准code:
创建:
if not assigned(QRForm) then
QRForm := TQRForm.Create(Application);
QuickRep1.Preview;
释放:在QRForm的Close Event中
Action := caFree;
在Destory Event中
QRForm := nil;
这样就可以不出现以上问题。凡是动态创建的Form均可这样处理。
我的水平有限,不足之处请多指点。
 
procedure Tfrmtj1.Button1Click(Sender: TObject);
begin
reporttj1:=Treporttj1.Create (Application);
reporttj1.Previewmodal;
reporttj1.free;
end;
就可以了![:)]
 
后退
顶部