各位大侠:
    delphi刚入门,老板要我写了个小程序,历经千辛万苦,总算写完了,可是老板要求加个登陆界面,于是我加了窗体(frmlogin),可是启动时总是启动原来的窗体(mainfrm),我VB中可以在project菜单中该变启动窗体,可是DELPHI中好像不行,哪位指点指点!
    还有两个弱智问题想一并请教各位大侠:
1、两个窗体怎么切换?例如密码输对了,我是不是该这么调用主窗体?:frmlogin.close;mainfrm.show;
2、由于我要在mainfrm的状态栏中显示登陆用户,我该怎么样设定一个变量将frmlogin中的用户名传到mainfrm?   刚入门,手头没有资料,黑心老板催的急,这么些没有入门的问题,请大家别笑我,由于是新手,请说详细点。   万分感谢!!!

解决方案 »

  1.   

    1.有两种方法设置主窗体
    一.在Project菜单下面的Options选项里有个MainForm的选项.选入指定的窗体就是主窗体
    二.修改工程文件
    program Project1;
    uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {Form2};
    {$R *.res}
    begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);  
      APPlication.CreateForm(TForm2, Form2);  //这两个窗体创建的顺序决定哪个是主窗体. 
      Application.Run;
    end.2. if Password then
       begin
         Mainfro.show;
         Mainfro.Label1.Caption := Frmlogin.UserLabel.Caption;
         Frmlogin.close;
       end;
      

  2.   

    非常谢谢,现在还是有点问题,按楼上兄弟说的:
     if Password then
       begin
         Mainfro.show;
         Mainfro.Label1.Caption := Frmlogin.UserLabel.Caption;
         Frmlogin.close;
       end;
    可是窗体Mainfro闪一下就消失了,我改成Mainfro.showmodel可是两个窗口又同时出现在屏幕上,大侠们再指点指点!
       谢谢!
      

  3.   

    在view--->unit里打开单元文件,把Frmlogin窗体加进去
    Application.CreateForm(TFrm_Login, Frm_Login);
    然后对主窗体显示做一个判断弹出login窗体就可以了
      

  4.   

    if Password then
       begin
         Mainfro.show;
         Mainfro.Label1.Caption := Frmlogin.UserLabel.Caption;
         Frmlogin.hide;
       end;
      

  5.   

    在Project菜单下面的Options选项里有个MainForm的选项.把这两个窗体均加近去,然后再执行:
     一楼的方法应该可以了哦,
    但要把2要作些修改2. if Password then
       begin
         Mainfro.showmodel;
         Mainfro.Label1.Caption := Frmlogin.UserLabel.Caption;
         Frmlogin.close;
       end;
      

  6.   

    在Project菜单下面的Options选项里有个MainForm的选项.把这两个窗体均加近去
    在mainform的 onshow中让loginfrm.show也可以
      

  7.   

    在dpr工程文件中加登陆窗口,如果密码不正确或按取消,不启动主窗体,
      

  8.   

    if login = nil then
      begin
        try
          frmlogin:= Tfrmlogin.create(application);
          if frmlogin.showmodal = mrCanCel then
            exit;
        finally
          FreeAndNil(frmlogin);
        end;
      end;
      Application.Initialize;
      Application.CreateForm(Tmainfrm, mainfrm);
      Application.Run;
      

  9.   

    非常谢谢,现在还是有点问题,按楼上兄弟说的:
     if Password then
       begin
         Mainfro.show;
         Mainfro.Label1.Caption := Frmlogin.UserLabel.Caption;
         Frmlogin.close;
       end;
    可是窗体Mainfro闪一下就消失了,我改成Mainfro.showmodel可是两个窗口又同时出现在屏幕上,大侠们再指点指点!
       谢谢!
    ˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍ
     if Password then
       begin
         Mainfro.show;
         Mainfro.Label1.Caption := Frmlogin.UserLabel.Caption;
       Mainfro.update;//<--
         Frmlogin.hide;
       end;
      

  10.   

    可以这样:
    本例用到的form1 为mainform 
              form2 为loginform 
              proj1 为工程文件
    修改工程文件:
       program Proj1;
    uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {Form2};
    {$R *.res}
    begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);  
      APPlication.CreateForm(TForm2, Form2);  
    //在这里添加
      application.showmainfrom:= false ; 
      form2.show ;
    //添加结束 
      Application.Run;
    end.在form2.登陆事件里添加这样的代码: 
    if loginpass = 正确的  then 
    begin 
      application.shoiwmainform:= true ; 
      form1.show; 
      form2.close; 
     end else 
    begin 
     application.messagebox('您的密码或名称错误,请重新登陆','密码或拥护名称错',mb_ok);
     yh.setfocus ; //yh 是你输入拥护的地方;
     if  输入3次错误  then  application.Terminate;//推出系统;
                     
    end ; 
    这样的好处是 运行主程序的窗口在最小化时不在桌面上.
    有问题再E-mail:[email protected]
      

  11.   

    工程文件里这样写:
    program Project1;uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {frmlogin};{$R *.res}begin
      Frmlogin:=Tfrmlogin.Create(Frmlogin);
      Frmlogin.ShowModal;
      if not isLogin then exit;  Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.frmlogin里放两个按钮,一个确定一个退出,具体如何判断用户登陆就不写了,下面是登陆窗口
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      Tfrmlogin = class(TForm)
        BtnOK: TButton;
        BtnExit: TButton;
        procedure BtnOKClick(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure BtnExitClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      frmlogin: Tfrmlogin;
      islogin:boolean;
    implementation{$R *.dfm}procedure Tfrmlogin.BtnOKClick(Sender: TObject);
    begin
        islogin:=true;
        close;
    end;procedure Tfrmlogin.FormCreate(Sender: TObject);
    begin
        islogin:=false;
    end;procedure Tfrmlogin.BtnExitClick(Sender: TObject);
    begin
        islogin:=false;
        close;
    end;end.