我觉得你的思路有点混乱。
在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中找到如何良好风格代码的文章

解决方案 »

  1.   

    或者试试把
    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;