F fengyaxuan Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-16 #1 1、有一个程序需要一个login窗口来输入ID和PASSWORD,这个窗体应该在主窗体前还是后生成? 2、当所有信息都输入完,按下确定后,主窗体从何得知用户已经登陆?
N Nstar Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-16 #2 1.我做的是在主窗体前生成 2.检查数据库或注册表(名称或密码保存在数据库或注册表中)检测名称 和密码是否正确, 如果正确则 进入主程序否则退出系统
H HunterTeam Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-16 #3 在主窗体之后生成。我的作法是不将它放在autocreate部分,并且在主窗体的 formshow事件中调用它,代码如下: Frm_Login:=TFrm_Login.Create(Self); //frm_Login是登录窗体名。 Frm_Login.ShowModal; Frm_Login.Free; if G_Dl=2 then close; //G_Dl是一个数值型全局变量,在登录窗体中定义它的值, //0为超级用户,1为普通用户,2则表示用户在登录窗体中点了取消键,主窗体一并退出。
在主窗体之后生成。我的作法是不将它放在autocreate部分,并且在主窗体的 formshow事件中调用它,代码如下: Frm_Login:=TFrm_Login.Create(Self); //frm_Login是登录窗体名。 Frm_Login.ShowModal; Frm_Login.Free; if G_Dl=2 then close; //G_Dl是一个数值型全局变量,在登录窗体中定义它的值, //0为超级用户,1为普通用户,2则表示用户在登录窗体中点了取消键,主窗体一并退出。
L lcl_003 Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-16 #4 应该是后生成吧,第一个生成的是主窗体,如果它关闭了,程序就结束了,你只能隐藏它。 所以我是在主窗体后生成。其他相同
N nexthawks Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-16 #5 应该是先生成,你可以写一个执行函数 如在public中声明一个Execute():Boolean 如成功则返回true
C china_delphi Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-16 #6 如果要登陆的用户名要变成为打印或数据库自动记录对象-->全局变量,建议用先 MainForm后Login,如果程序中不用到登陆的用户名后建议用先Login后MainForm, 当然不尽如此,只是本人的经验而已.
如果要登陆的用户名要变成为打印或数据库自动记录对象-->全局变量,建议用先 MainForm后Login,如果程序中不用到登陆的用户名后建议用先Login后MainForm, 当然不尽如此,只是本人的经验而已.
L l213 Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-16 #7 都可以的,在主窗体后生成有一个不好的地方就是显示登录窗口的时候主窗体也显示在后面,不好看,其他没什么了。 返回方法有多种,可以设一个公用变量,例如用户名,登录成功则赋输入的用户名,不成功则为空,通过读这个值就知道是否登录成功。 在主窗体前登录的话,可以在主程序的那个pas文件中改,只要先把登录窗体释放后,再建立主窗体就不会有什么问题了。
都可以的,在主窗体后生成有一个不好的地方就是显示登录窗口的时候主窗体也显示在后面,不好看,其他没什么了。 返回方法有多种,可以设一个公用变量,例如用户名,登录成功则赋输入的用户名,不成功则为空,通过读这个值就知道是否登录成功。 在主窗体前登录的话,可以在主程序的那个pas文件中改,只要先把登录窗体释放后,再建立主窗体就不会有什么问题了。
L lich007 Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-16 #9 看看我的一个DPR文件写法就明白了:(前后没关系,但要Showmodal出来,而且引用到 数据库的,要把DataModule的Form放在前面。 Application.Initialize; PassForm:=TPassForm.Create(application); try PassForm.Showmodal; finally PassForm.free; end; Application.CreateForm(TMainForm, MainForm); Application.CreateForm(TProgressBarForm, ProgressBarForm); // Application.CreateForm(TSystemForm, SystemForm); Application.Run;
看看我的一个DPR文件写法就明白了:(前后没关系,但要Showmodal出来,而且引用到 数据库的,要把DataModule的Form放在前面。 Application.Initialize; PassForm:=TPassForm.Create(application); try PassForm.Showmodal; finally PassForm.free; end; Application.CreateForm(TMainForm, MainForm); Application.CreateForm(TProgressBarForm, ProgressBarForm); // Application.CreateForm(TSystemForm, SystemForm); Application.Run;
薄 薄荷 Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-17 #10 我觉得在Mainform前create比较好,这样如果没有登陆成功,可以不要create主窗体, 特别是在主窗体比较大的时候.可以在passform里写一个函数,函数里调用passform.showmodale,然后在dpr单元,调用它, 返回为true就继续create主窗体等,否则退出.
我觉得在Mainform前create比较好,这样如果没有登陆成功,可以不要create主窗体, 特别是在主窗体比较大的时候.可以在passform里写一个函数,函数里调用passform.showmodale,然后在dpr单元,调用它, 返回为true就继续create主窗体等,否则退出.