现在有两个MDI子窗体 sarch 和 RegisterEmployee 当主窗体 main 调用子窗体sarch(**** sarch 窗体在未关闭的情况下*****)再分别调用RegisterEmloyee窗体时时即报错。(如果sarch 子窗体已经关闭了,再去调用RegisterEmployee则正常)(如果先调用RegisterEmloyee再次调用 sarch 子窗体时则很正常)也就是说当Sarch 子窗体在打开的情况下,(未关闭)无法调用其他子窗体。 想了很久,还是不明白,还希望高手赐教。
报错信息:“name not unique in this context ”
原代码:unit main;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, WinSkinData, Buttons, ComCtrls, RzDBLook, RzGroupBar,
  RzCommon, RzSelDir, ImgList, ExtCtrls, RzPanel, RzStatus, StdCtrls,
  RzLabel, RzDBLbl, RzBorder;type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    SkinData1: TSkinData;
    N9: TMenuItem;
    RzGroupBar1: TRzGroupBar;
    RzGroup1: TRzGroup;
    RzGroup3: TRzGroup;
    RzGroup2: TRzGroup;
    ImageList1: TImageList;
    ImageList2: TImageList;
    ImageList3: TImageList;
    RzStatusBar1: TRzStatusBar;
    RzStatusPane1: TRzStatusPane;
    RzStatusPane2: TRzStatusPane;
    RzStatusPane3: TRzStatusPane;
    RzClockStatus1: TRzClockStatus;
    RzMarqueeStatus1: TRzMarqueeStatus;
    procedure N9Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure RzGroup1Items0Click(Sender: TObject);
    procedure RzGroup1Items1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementationuses Unit2, Unit3, Unit5, Unit4, Unit8;{$R *.dfm}procedure TForm1.N9Click(Sender: TObject);
begin
About.ShowModal;
end;procedure TForm1.N2Click(Sender: TObject);
begin
pwd.ShowModal;
end;procedure TForm1.N3Click(Sender: TObject);
begin
lgout.Show
end;procedure TForm1.RzGroup1Items0Click(Sender: TObject);------------>调用Carch子窗体
begin
IF  not  Assigned(sarch) then
sarch:= Tsarch.Create(self)------------------------------》程序提示这有问题
else
sarch.Show ;
end;procedure TForm1.RzGroup1Items1Click(Sender: TObject);-------》调用registerEmployee 子窗体
begin
IF  not  Assigned(RegisterEmployee) then
RegisterEmployee:= TRegisterEmployee.Create(self)
else
RegisterEmployee.Show ;
end;procedure TForm1.FormCreate(Sender: TObject);
beginend;end.

解决方案 »

  1.   

    该错一下:procedure TForm1.RzGroup1Items1Click(Sender: TObject);-------》调用registerEmployee 子窗体
    begin
    IF  not  Assigned(RegisterEmployee) then
    RegisterEmployee:= TRegisterEmployee.Create(self)--------》程序提示这有问题
    else
    RegisterEmployee.Show ;
    end;
      

  2.   

    提示什么问题
    编译提示还是运行时提示
    还是执行过程中提示?RegisterEmployee:= TRegisterEmployee.Create(self)--------》程序提示这有问题
    把上面代码中的RegisterEmployee换成一个其他的临时变量看看可以吗?
    比如tForm(定义的时候要定义成tForm: TRegisterEmployee)
      

  3.   

    谢谢楼上的朋友。编译没有问题,只是在运行时提示:name not unique in this context ”还请赐教~
      

  4.   

    一但在打开Sarch 子窗体后(未关闭)再次调用RegisterEmployee 另一子窗体时即报错。“name not unique in this context ”
      

  5.   

    procedure TForm1.RzGroup1Items0Click(Sender: TObject);
      begin
        sarch:= Tsarch.Create(self);
        sarch.Show ;
      end;procedure TForm1.RzGroup1Items2Click(Sender: TObject);
      begin
        RegisterEmployee:= TRegisterEmployee.Create(self);
        RegisterEmployee.Show ;
      end;end.
    你干脆就直接这样算了。
      

  6.   

    谢谢楼上的Breakc0de(学无止境)你这样方法虽然不会出现任何问题,但是每次会出现可以调用同一类窗体多次的现象。还请赐教~
      

  7.   

    建议把其中的一个Form重新做,把原来的一个删掉。