我程序采用了MDI窗体设计,所以一般的登陆程序用不了,所以写了下面这个:
主程序的create中:
procedure Tstu_main.FormCreate(Sender: TObject);
var s:string;
begin
  F_LKSOFT:=TF_LKSOFT.Create(nil);
  if F_LKSOFT.showmodal=Mrok then
    begin
      s:='select user,password from login where user='''+F_LKSOFT.edit1.text+''' and password='''+F_LKSOFT.edit2.text+'''';
      with adoquery1 do
        begin
         sql.Clear;
         sql.Add(s);
         open;
         if recordcount<>0 then F_LKSOFT.free
                           else begin showmessage('密码或用户有误');
                                      F_LKSOFT.showmodal;
                                 end;
        end;
    end;
end;
但是只有第一次会验证用户与密码,第二次就不验证直接就进入了主程序了,怎么办呢?望大家给个办法!

解决方案 »

  1.   

    你把这段代码写在FormCreate里面,当然只执行一次啦。
    因为除非重新开启程序,否则FormCreate不会被再次调用到。
      

  2.   

    现在这个不可以吗,写到mdi主窗体的create里面就可以 了
      

  3.   

    http://community.csdn.net/Expert/TopicView3.asp?id=4668029
      

  4.   

    procedure Tstu_main.FormCreate(Sender: TObject);
    这个是主窗体创建时执行的代码。
      

  5.   

    这个需要析放窗体才行的
    改为:
      F_LKSOFT:=TF_LKSOFT.Create(nil);
      if F_LKSOFT.showmodal=Mrok then
        begin
         F_LKSOFT.free; //
         ....
      

  6.   

    你可以在formcreat中创建登陆的form 所有登陆的操作都在那里执行,在onclose中写一个formclose 基本可以了