下面是代码,大体的意思是,经过用户名和密码的验证,如果正确的话会打开form2窗体,
我可以实现,但我想在打开form2的同时,关闭密码验证窗体form1,可实现不了,不知道为什么???如下解释处!!!!谢谢!!!
cedure TForm1.BitBtn1Click(Sender: TObject);
var
 flag:boolean;
 logname,password:string;
 begin
  flag:=false;
  logname:=edit1.Text;
  password:=edit2.Text;
  table1.Open;
  table1.First;
    while not table1.Eof do
      begin
        if (logname=table1.Fields[0].asstring) and (password=table1.Fields[1].asstring) then
           flag:=true;
           table1.Next;
      end;
        if flag then
           begin
             form2.show;    {注:在这我可以打开form2窗体,但我如果加上 
                             form1.close;  测试的时候form2 窗体也一起关闭
                              了??我想form2留下form1关闭,不知道该怎么
                              写??谢谢}     
           end
             else
               if (edit1.Text='') or (edit2.Text='') then
                 begin
                   showmessage('请您将两项输入完整!');
                   end
                     else
                       showmessage('输入错误,请重输!!');
                       edit1.Clear;
                       edit2.Clear;
                       edit1.SetFocus;
           end;

解决方案 »

  1.   

    Form1是主窗体,关闭它就退出程序,应该让Form2为主窗体,Form1在工程源文件中建立并运行,如下面的例子:program JXCClient;uses
      Forms,
      Main in 'Main.pas' {MainForm},
      DM in 'DM.PAS' {ClientData: TDataModule},
      ServerSet in 'ServerSet.pas' {ServerSetForm},
      EntryDlg in 'EntryDlg.pas' {EntryForm},
      SetupUsers in 'SetupUsers.pas' {SetUsersFrame: TFrame};{$R *.res}var
      Entry: Boolean;
    begin
      Application.Initialize;
      Application.CreateForm(TMainForm, MainForm); //相当Form2
      Application.CreateForm(TClientData, ClientData);
      EntryForm := TEntryForm.Create(Application);
      try
        Entry := EntryForm.Execute(False); //相当Form1
      finally
        EntryForm.Free;
      end;
      if not Entry then
      begin
        MainForm.Free;
        ClientData.Free;
        Exit;
      end;
      Application.Run;
      

  2.   

    同楼上,或者用form1.hide
    也有同样的效果
      

  3.   

    谢谢maozefa(之源) !!!!!!
    可是 我是DELPHI的初学者,你上面的代码我有些看不懂,另外我应该把上面的代码加到什么地方啊??????????????
      

  4.   

    主窗体是不能随便关闭的。请把Form2做成主窗体,在Form2的OnShow事件中Form1.ShowModal进行密码验证,不正确的话就Form1.Close
      

  5.   

    选择Project->View Souecr菜单就出现工程源代码,实际就是Pascal程序入口代码单元,相当于C的main()或winmain()
      

  6.   

    在 Application.Init...后的通过 Application.CreateForm 在工程中创建的第一个窗体是主窗体。
    所以,解决方法:
    1、使用 maozefa(之源) 的代码可以解决问题;
    2、密码验证窗体使用 vPassWordForm := TPasswordForm.Create(nil); 创建并处理也可以解决这个问题。
      

  7.   

    你好!!maozefa(之源) 我上面的代码看不懂啊!!!
    try
        Entry := EntryForm.Execute(False); //相当Form1
      finally
        EntryForm.Free;
      end;
      if not Entry then
      begin
        MainForm.Free;
        ClientData.Free;
        Exit;
      end;
    这些我不知道是什么意思啊!!!你能解释一下吗???我现在理解了主窗体的意思,可只是思维上的理解,代码是没有理解!!!!!!!
    我现在想从写程序,就是想在启动主窗体是先启动密码验证窗体!!你可以给我写的详细一些或给我发个原代码例子吗??????谢谢,我是刚学的!!!!!
    我的email:[email protected]
    你可以留下你的,我们叫个朋友吗??????