登錄船體代碼unit Unit4;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, StdCtrls;type
  Tfm_login = class(TForm)
    ID: TEdit;
    Passwors: TEdit;
    Button1: TButton;
    Button2: TButton;
    ADOTable1: TADOTable;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  fm_login: Tfm_login;implementationuses Unit1;{$R *.dfm}procedure Tfm_login.Button1Click(Sender: TObject);
begin  AnimateWindow(Form1.Handle, 550, AW_BLEND or AW_ACTIVATE);  IF Not adotable1.Locate('ID',id.Text,[]) then
  begin
    SHOWMESSAGE('id不存在!');
  end
  else
  begin
  if adotable1.FieldByName('Passwors').AsString=Passwors.Text then
  begin    form1.Show;
    fm_login.Hide;  end
  else
  begin
    SHOWMESSAGE('用户名错误!');
  end;
  end;end;procedure Tfm_login.Button2Click(Sender: TObject);
beginCLOSE;end;end.大家好,請問爲什麽沒有"ID""Passwords"都沒有驗證成功,如:ID不存在、Passwords錯誤。
爲什麽還是照樣進入Form1
請問各位怎麽回事,那登錄窗口豈不是白做。請指點。

解决方案 »

  1.   

    你的意思是,即便出现showmessage(用户名错误)之后form1依然会显示?
      

  2.   

    你的FORM1是主窗口吧,這個窗口在工程代碼中已經建立且SHOW,所以無論你這裡無論登錄是否成功都會顯示。如果驗證失敗你加一句 Application.Terminate;終止應用程序就可。
      

  3.   

    LZ回复即可参考。建议LZ画一下流程图,确认哪些窗体是AutoCreate的
      

  4.   

    楼主看来是没有搞清楚Delphi中窗体的创建、显示,以及什么是主窗体,什么是主程序,程序执行的入口点等等。    默认情况下,Delphi中的主窗体会自动创建并显示,通常是你第一个创建的窗体(Form1)。
    你必须在主程序中添加几行代码,以阻止主窗体的显示:  Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.CreateForm(TForm2, Form2);   //假设Form2是登录窗体
      Application.ShowMainForm:=false;  //阻止主窗体的显示
      form2.show;   //-----显示登录窗体
      Application.Run;这样,主窗体不会自动显示,而是显示登录窗体。在登录成功后,关闭登录窗体,显示主窗体。