我在程序里有两个地方要用到同一个FRAME,代码如下,但是程序好像只认一个frame,即创建了一个frame后,另一个frame就不能创建了,说是NAME(frame)已经存在。我不是很理解FRAME,难道一个frame只能用一次的吗?fmeTDetail: TfmeTotalDetail;
fmeMoTDetail: TfmeTotalDetail;procedure TfrmExpertMain2.InitTDetailDBGrid(DBGrid: TDBGridEh);
begin
  if fmeTDetail = nil then
  begin
    fmeTDetail := TfmeTotalDetail.Create(Application);
    fmeTDetail.Parent := tbshtMMSDetail;
    fmeTDetail.Align := alClient;
  end;
  fmeTDetail.dbgrdTotalDetail.Columns := DBGrid.Columns;
end;procedure TfrmExpertMain2.InitMoTDetailDBGrid(DBGrid: TDBGridEh);
begin
  if fmeMoTDetail = nil then
  begin
    fmeMoTDetail := TfmeTotalDetail.Create(Application);
    fmeMoTDetail.Parent := Self.tbshtMoDetail;
    fmeMoTDetail.Align := alClient;
  end;
  fmeMoTDetail.dbgrdTotalDetail.Columns := DBGrid.Columns;
end;

解决方案 »

  1.   

    命名没有重复啊,一个是fmeTDetail,另一个是fmeMoTDetail,只是都是TfmeTotalDetail类型啊
      

  2.   

    你把那个 if fmeMoTDetail = nil then 换成
         if not assigned(fmeMoTDetail) then
    另外一处也如此换
      

  3.   

    只能用一次的话Frame的存在就失去意义
      

  4.   

    首先正如xiaogui_2008 所说,=nil要改成not assigned();
    其次在创建的时候要给它命名,即设置name属性,否则它的name属性均为fmeTotalDetail,即不能创建第二个。