我觉得你的思路有点混乱。
在Hege窗体的Button2事件中,创建实例HegeReportnan。而在THegeReportnan的Create事件中又重新创建THege的实例,而且这个实例是局部变量,跟全局的Hege同名了(在Hegebiaozhun的Unit中),
我觉得你这样处理好一点。
1.在Hege窗体的Button2事件中,创建了THegeReportnan实例后,不要急于Preview,你可以在Preview之前作一些准备工作,比如你需要把Hege实例传过去。
2.于是你可以在THegeReportnan添加一个方法SetHege。代码大致如下:procedure THegeReportnan.SetHege(AfrmHege: THege);
begin
if not Assigned(AfrmHege) then Exit;
//去除这些有创建THege的代码,因为Hege已经作为参数传进来了。
//Hege:=THege.Create(application); if AfrmHege.RadioGroup1.ItemIndex = 0
then QRLabel1.caption :='一年级' ;
QuickRepHGnan.Dataset := AfrmHege.adoQueryHG1;
QRDBTextHGnan1.Dataset := AfrmHege.adoQueryHG1;
QRDBTextHGnan1.Datafield := '学号';
QRDBTextHGnan2.Dataset := AfrmHege.adoQueryHG1;
QRDBTextHGnan2.Datafield := '总得分';
end;
3.在Button2的代码可能就变成这样了:procedure THege.Button2Click(Sender: TObject);
var
frmHegeReportnan:THegeReportnan;
begin
frmHegeReportnan := THegeReportnan.create(nil);
try
//把自己传给HegeReportnan,设置一些DataSet和其他准备内容
frmHegeReportnan.SetHege(Self);
frmHegeReportnan.QuickRepHGnan.Preview;
finally
frmHegeReportnan.free;
end;
end;3.不好意思,我罗嗦一下,你要注意一下代码的规范化。可以在CSDN中找到如何良好风格代码的文章
在Hege窗体的Button2事件中,创建实例HegeReportnan。而在THegeReportnan的Create事件中又重新创建THege的实例,而且这个实例是局部变量,跟全局的Hege同名了(在Hegebiaozhun的Unit中),
我觉得你这样处理好一点。
1.在Hege窗体的Button2事件中,创建了THegeReportnan实例后,不要急于Preview,你可以在Preview之前作一些准备工作,比如你需要把Hege实例传过去。
2.于是你可以在THegeReportnan添加一个方法SetHege。代码大致如下:procedure THegeReportnan.SetHege(AfrmHege: THege);
begin
if not Assigned(AfrmHege) then Exit;
//去除这些有创建THege的代码,因为Hege已经作为参数传进来了。
//Hege:=THege.Create(application); if AfrmHege.RadioGroup1.ItemIndex = 0
then QRLabel1.caption :='一年级' ;
QuickRepHGnan.Dataset := AfrmHege.adoQueryHG1;
QRDBTextHGnan1.Dataset := AfrmHege.adoQueryHG1;
QRDBTextHGnan1.Datafield := '学号';
QRDBTextHGnan2.Dataset := AfrmHege.adoQueryHG1;
QRDBTextHGnan2.Datafield := '总得分';
end;
3.在Button2的代码可能就变成这样了:procedure THege.Button2Click(Sender: TObject);
var
frmHegeReportnan:THegeReportnan;
begin
frmHegeReportnan := THegeReportnan.create(nil);
try
//把自己传给HegeReportnan,设置一些DataSet和其他准备内容
frmHegeReportnan.SetHege(Self);
frmHegeReportnan.QuickRepHGnan.Preview;
finally
frmHegeReportnan.free;
end;
end;3.不好意思,我罗嗦一下,你要注意一下代码的规范化。可以在CSDN中找到如何良好风格代码的文章
var Hege:THege;
begin
Hege:=THege.Create(application);
if Hege.RadioGroup1.ItemIndex=0
then QRLabel1.caption:='一年级' ;
end;
放在Button2
procedure THege.Button2Click(Sender: TObject);
var HegeReportnan:THegeReportnan;
begin
HegeReportnan:=THegeReportnan.create(self);Hege:=THege.Create(application);
if RadioGroup1.ItemIndex=0
then HegeReportnan.QRLabel1.caption:='一年级' ;HegeReportnan.QuickRepHGnan.Preview;
HegeReportnan.free;
end;