改工程文件,参阅http://www.csdn.net/expert/topic/523/523644.xml
uses logdlg;
....
var Auser,Apass:string;
...
while (Auser<>'aaa') or Apass<>'111' do
  mylogindialog('登陆',Auser,Apass);
....

解决方案 »

  1.   

    我是这么做的,可能有些笨,不过你可以试一试:
    在FormMain Create的时候写入一下代码
               try
                  Formlogin := TFormLogin.Create(self);
                  FormLogin.ShowModal;
                  StatusBar1.Panels[8].Text := FormLogin.LoginUserName;
                finally
                  FormLogin.Free;
                end;然后再FormLogin的FormCloseQuery下写入
    if ModalResult = MROK then
    begin
      你进行判断的句子;
      if 用户判断正确 then
        canclose := true
      else
        canclose := false
    end
    else
    begin
      if application.Messagebox('……','……'+ mb_YesNo) = IDYes then  
        application.Terminate;
    end;你自己可以试一试,不明白的再问
      

  2.   

    其实这个很简单的,在工程文件中写入(*.dpr):
       unit
         forms,windows,sysutils
       var
         name,password:string;
        begin
         application.initialize;
         application.title:='你的程序名';
         form2:=tform2.create(application);
         form2.show;
         form2.update;
         if edit1.text='登陆名' and edit2.text='密码' then begin
            application.createform;
             form2.hide;
            form2.free;
            application.run;
         end else begin         application.messagebox//显示信息
             halt;终止程序
          end;
    谢谢了,给分吧!!
      

  3.   

    我刚刚编写了一个
    这样可以如果用户名或密码不对,循环,不至于退出unit Gd_Login;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, jpeg, ExtCtrls, DB, DBTables;type
      TFmLogin = class(TForm)
        Image1: TImage;
        Label1: TLabel;
        Label2: TLabel;
        OKBtn: TButton;
        CancelBtn: TButton;
        NameEd: TEdit;
        PwdEd: TEdit;
        TbOp: TTable;
        TbLog: TTable;
        procedure FormCreate(Sender: TObject);
        procedure OKBtnClick(Sender: TObject);
        procedure FormActivate(Sender: TObject);
        procedure CancelBtnClick(Sender: TObject);  private
        { Private declarations }
      public
        { Public declarations }
      end;var
      FmLogin: TFmLogin;implementationuses Gd_Main;
    {$R *.dfm}procedure TFmLogin.FormCreate(Sender: TObject);
    begin
      Left := (Screen.Width-Width) div 2;
      Top  := (Screen.Height - Height) div 2;
    end;procedure TFmLogin.FormActivate(Sender: TObject);//在这里,这样可以如果用户名或密码不对,循环,不至于退出
    begin
      NameEd.SetFocus;
      TbOp.Active := True;
      TbOp.First;
      while not TbOp.Eof do begin
         if TbOp.FieldValues['Flag'] = True then begin
            NameEd.Text := TbOp.FieldValues['姓名'];
            PwdEd.SetFocus;
            Break;
         end;
         TbOp.Next;
      end;
      TbOp.Active := False;
    end;procedure TFmLogin.OKBtnClick(Sender: TObject);
    begin
       if TbOp.Active = False then TbOp.Active := True;
       TbOp.First;
       if TbOp.Locate('姓名',NameEd.Text,[]) then begin
          if (TbOp.FieldValues['密码'] = null) or (TbOp.FieldValues['密码'] = PwdEd.Text) then begin
    //         MessageBox(Self.Handle,'密码正确!','提示',MB_OK+MB_ICONEXCLAMATION);
             //修改操作员库
    //         RecNo := TbOp.RecNo;
             sName := NameEd.Text;
             sPwd := PwdEd.Text;
             nPrivilege := TbOp.FieldValues['权限'];
             TbOp.First;
             while not TbOp.Eof do begin
                TbOp.Edit;
                Tbop.FieldValues['Flag'] := False;
                TbOp.Post;
                TbOp.Next;
             end;
             TbOp.First;
             if TbOp.Locate('姓名',NameEd.Text,[]) then begin
                TbOp.Edit;
                TbOp.FieldValues['Flag'] := True;
             TbOp.Post;
             end;
             TbOp.Active := False;         // 记录行为
             if TbLog.Active = False then TbLog.Active := True;
             TbLog.Edit;
             TbLog.Append;
             TbLog.FieldValues['姓名'] := NameEd.Text;
             TbLog.FieldValues['日期'] := Now;
             TbLog.FieldValues['动作'] := '登录';
             TbLog.Post;
             TbLog.Active := False;         Close;
          end
          else begin
             MessageBox(Self.Handle, '密码不正确,请重新输入!','错误提示',MB_OK+MB_ICONEXCLAMATION);
             PwdEd.SetFocus;
             TbOp.Active := False;
          end;
       end
       else begin
          MessageBox(Self.Handle, '没有该用户!','错误提示',MB_OK+MB_ICONEXCLAMATION);
          NameEd.SetFocus;
          TbOp.Active := False;
       end;
       if TbOp.Active = True then TbOp.Active := False;
       if TbLog.Active = True then TbLog.Active := False;
    end;procedure TFmLogin.CancelBtnClick(Sender: TObject);
    begin
       Application.Terminate;
    end;end.
      

  4.   

    同意redlegend_126_com(redlegend)
    应在工程文件中写登陆窗口代码
      

  5.   

    同意redlegend_126_com。
    原理是:登录对话框并非主窗口,所以最好用ShowModel模态显示,
    可以写一个类似于MessageDlg的函数,这样很好用。
      

  6.   

    是啊!
    在project里面写也可以!