在两个单元文件中创建了两个窗体,但这两个次创建是同一个窗体。
现在在问题是我把这两个一样的窗体关闭就出错。怎么样解决呢?
main.pas
procedure Tmain_window.SpeedButton2Click(Sender: TObject);
beginif mer_i=2 then                         //判断是否创建mer_window窗体
  begin
    (Sender as TSpeedButton).Tag:=0;
  end;if (Sender as TSpeedButton).Tag=0 then
  begin
    mer_window:=Tmer_window.Create(self);
    //Application.CreateForm(Tmer_window, mer_window);
    mer_window.Width:=screen.Width-12;               //设定宽度
    mer_window.Height:=screen.Height-81-78;          //设定高度
    mer_window.Left:=0;                              //显示位子
    mer_window.Top:=0;
    (Sender as TSpeedButton).Tag := Integer(mer_window);
    
    //mer_chuangjian:=2;
  end
else
  begin
     mer_window:=Pointer((Sender as TSpeedButton).Tag);
  end;
mer_i:=1;      //初值
end;procedure Tmer_window.FormClose(Sender: TObject; var Action: TCloseAction);
begin
mer_i:=2;          //关闭是赋值,下次创建mer_window用到
mer_window.Free;    //窗体关闭
end;com.pas
procedure Tcom_window.DBGrid1DblClick(Sender: TObject);
begin
if mer_i=2 then                         //判断是否创建mer_window窗体
  begin
    (Sender as TDBGrid).Tag:=0;
  end;if (Sender as TDBGrid).Tag=0 then
  begin
    //mer_window:=Tmer_window.Create(self);
    Application.CreateForm(Tmer_window, mer_window);
    mer_window.Width:=screen.Width-12;               //设定宽度
    mer_window.Height:=screen.Height-81-78;          //设定高度
    mer_window.Left:=0;                              //显示位子
    mer_window.Top:=0;
    showmessage(inttostr((Sender as TDBGrid).Tag));
    (Sender as TDBGrid).Tag := Integer(mer_window);
    
     mer_chuangjian:=1;
  end
else
  begin
     mer_window:=Pointer((Sender as TDBGrid).Tag);
  end;
mer_i:=1;      //初值end;