一个FRAME在一个程序里只能用一次的吗?
我在程序里有两个地方要用到同一个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;
[解决办法]
你把那个 if fmeMoTDetail = nil then 换成
if not assigned(fmeMoTDetail) then
另外一处也如此换
[解决办法]
首先正如xiaogui_2008 所说,=nil要改成not assigned();
其次在创建的时候要给它命名,即设置name属性,否则它的name属性均为fmeTotalDetail,即不能创建第二个。