一个主窗口:mainf, 运行时分别调用两个窗口:loginf,adduserf,在点击菜单项时调出adduserf,
loginf和adduserf情况差不多,可是编译时报错:adduser.adduserf.Showmodal; 说这一行addusef没有声明,请问什么问题?
unit main;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, login,adduser,Menus, StdCtrls;type
  TMainf = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    AddUser: TMenuItem;
    DeleUser: TMenuItem;
    exit: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    procedure FormShow(Sender: TObject);
    procedure exitClick(Sender: TObject);
    procedure AddUserClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Mainf: TMainf;
  Loginf:TLoginf;
  adduserf:Tadduserf;implementation{$R *.dfm}procedure TMainf.FormShow(Sender: TObject);
begin
  login.Loginf.ShowModal;
end;procedure TMainf.exitClick(Sender: TObject);
begin
  close;
end;procedure TMainf.AddUserClick(Sender: TObject);
begin
  adduser.adduserf.Showmodal;
end;end.

解决方案 »

  1.   

    mainf 没有引用loginf,adduserf的单元
      

  2.   

    在interface下面:uses里添上loginf,adduserf两个单元然后代码里直接这样写Loginf.ShowModal;不用加前面的单元名,否则就是引用了login单元里定义的变量了
      

  3.   

    我在uses里添加了loginf,adduserf两个单元啊?
      

  4.   

    而且就算是没有引用,为什么login.Loginf.ShowModal;这句没有报错呢?
      

  5.   

    implementationuses adduser, login;
    这样应该可以了吧
      

  6.   

    没有声明的话……就是没有声明咯,没有什么好的解释了,请检查adduser这个unit中是不是真的定义了adduserf。adduser.adduserf这样调用的话,是不会调用main.adduserf的,我不知道你在main中再声明一个adduserf是什么意思……lz这种后缀的命名方法还真的挺少见的……
      

  7.   

    unit mainform;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Menus;type
      Tmainf = class(TForm)
        MainMenu1: TMainMenu;
        adduser1: TMenuItem;
        exit1: TMenuItem;
        menu1: TMenuItem;
        procedure FormShow(Sender: TObject);
        procedure adduser1Click(Sender: TObject);
        procedure exit1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      mainf: Tmainf;implementationuses adduser, login;{$R *.dfm}procedure Tmainf.FormShow(Sender: TObject);
    begin
    loginf.ShowModal;
    loginf.Free;
    end;procedure Tmainf.adduser1Click(Sender: TObject);
    begin
    adduserf.ShowModal;
    adduserf.Free;
    end;procedure Tmainf.exit1Click(Sender: TObject);
    begin
    close;
    end;end.
      

  8.   

    同意楼上的,你这相当于覆盖了定义,所以变得找不到,你要反,就不要在var里重新定义adduserf,要么引用只写adduserf.showmodal