如果主窗口为MainForm,登录窗口为LoginForm,那么可以在MainForm的OnCreate或OnShow 事件里面创建LoginForm,用ShowModal显示。这样LoginForm不关掉的话,主窗口就不能动了。

解决方案 »

  1.   

    var 
      Login: boolean;
    begin
      Application.Initialize;
      with TPasswordDlg.Create(Application) do
      try
        Login := ShowModal=mrOK;
      finally
        Free;
      end;
      if Login then
      begin
        Application.CreateForm(TMainFrm, MainFrm);
        Application.Run;
      end;
    end.
      

  2.   

    我已经结贴了,再请问大侠们,我在主窗口的SHOW事件中打开,但是却主窗口还没有现出来,登录窗口就弹出来了,要等关掉登录窗口主窗口才显现,如果做到主窗口先显示呢?再者,如果登录失败,应该关掉应用还是关掉主窗口,如何关掉?
      

  3.   

    TO coffeedou(咖啡豆)
    NO :先出现主窗体,再出现登录对话窗;
    下边是当登录失败时,关闭主窗体的,如果不想让其关闭,则不要加
    application.Terminate ;
    好了,这样就可以了
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type
      TForm1 = class(TForm)
        procedure FormShow(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
      logo:boolean;
        { Public declarations }
      end;var
      Form1: TForm1;implementation
    uses unit2;{$R *.DFM}procedure TForm1.FormShow(Sender: TObject);begin
     if not logo then
      begin
        form2:=Tform2.create(application);
        form2.show;
      end;end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      logo:=false;
    end;end.
    procedure TForm2.Button1Click(Sender: TObject);
    begin  application.Terminate ;end;end.
    但是有一点:
    form1.onActivate:=form1.onshow;
    在属性中进行设置;