我有两个窗体form1 ,form2.form2是主窗体,form1是登录窗体在工程启动的时候我把两个同时运行并设FORM2为主窗体
并在application.createform(Tform2,form2);
application.createform(Tform1,form1);
login_fm.ShowModal;
application.run;
可运行form1时,就算密码错误还是启动主窗体!!!form1如下
procedure TLogin_fr.BitBtn1Click(Sender: TObject);
begin
db_main.Table_login.open;
try if trim(edit1.Text)='' then
begin
application.MessageBox('请输入账号!','提示',mb_ok);
edit1.SetFocus;
exit;
end; if db_main.Table_login.Locate('loginName',edit1.Text, [loCaseInsensitive])=false then
begin
application.MessageBox('你的账号不正确,请重新登录!!!','错误',mb_ok);
edit1.SetFocus;
exit;
end; if db_main.Table_login.FieldByName('pwd').AsString<>trim(edit2.text) then
begin
application.MessageBox('你的密码不正确,请重新登录!!!','错误',mb_ok);
edit2.SetFocus;
exit;
end
else
begin
Application.CreateForm(TMain_fr, main_fr);
//enablewindow(handle,false);//窗口一不可用
main_fr.Show; end;
db_main.Table_login.Close;
finally
db_main.Table_login.Close;
//application.MessageBox('数据出错,系统将关闭!','错误',mb_ok);
//application.Terminate;
end;
end;
并在application.createform(Tform2,form2);
application.createform(Tform1,form1);
login_fm.ShowModal;
application.run;
可运行form1时,就算密码错误还是启动主窗体!!!form1如下
procedure TLogin_fr.BitBtn1Click(Sender: TObject);
begin
db_main.Table_login.open;
try if trim(edit1.Text)='' then
begin
application.MessageBox('请输入账号!','提示',mb_ok);
edit1.SetFocus;
exit;
end; if db_main.Table_login.Locate('loginName',edit1.Text, [loCaseInsensitive])=false then
begin
application.MessageBox('你的账号不正确,请重新登录!!!','错误',mb_ok);
edit1.SetFocus;
exit;
end; if db_main.Table_login.FieldByName('pwd').AsString<>trim(edit2.text) then
begin
application.MessageBox('你的密码不正确,请重新登录!!!','错误',mb_ok);
edit2.SetFocus;
exit;
end
else
begin
Application.CreateForm(TMain_fr, main_fr);
//enablewindow(handle,false);//窗口一不可用
main_fr.Show; end;
db_main.Table_login.Close;
finally
db_main.Table_login.Close;
//application.MessageBox('数据出错,系统将关闭!','错误',mb_ok);
//application.Terminate;
end;
end;
解决方案 »
- 指针问题请教。无法把指针地址赋值到全局变量是怎么回事?
- HttpCli 问题请教高手解决。
- 先给50分,300分求一个单据审核的解决方案?
- 为什么动态 创建的 HINT 不能设置 字体的颜色???????????? 急!!!!!!!!!!
- 急散分三:想注册一个商标,加上一个公司名号,不知有没有过来人可以提醒一下
- 串口通讯的高手请进(自动取数的方法)
- 点击treeview一个子结点后在数据库中查询,第一次点击正确,再点击其他时就出错,为什么?代码是...
- 两个unit怎么互相包含?
- 简单又不简单的问题!
- 关于Foxpro的处理
- 关于数据表格的复杂表头的制作方法。
- 关于打包中的access数据库问题
begin
application.createform(Tform2,form2);
application.createform(Tform1,form1);
end;
application.run;
搜搜贴子多了.Dpr :Application.Initialize;
Application.CreateForm(TfrmMain, frmMain);
Sleep(500);
with TfrmLogin.Create(Application) do
begin // 校验成功返回 ModalResult := 1;否则 ModalResult := 2;
ShowModal;
if ModalResult = 2 then
begin
Halt;
end
else if ModalResult = 1 then
begin
Close;
Application.Run;
end;
end;
end.
procedure TFormpassword.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
if ynjcpass='y' then
Canclose:=true else
Application.Terminate;
end;
你定义一个变量来记录用户最多只能试三次密码不正确就关掉程序
如果正确你就close登录界面就ok
三次不正确就
Application.Terminate;
如果是三次以下你就
abort
注意,是abort一个过程
-------------------------------------------------------form2是主窗体,form1是登录窗体//application.createform(Tform2,form2);
application.createform(Tform1,form1);
Form1.Show;
application.run;form1如下procedure TLogin_fr.BitBtn1Click(Sender: TObject);
begin
db_main.Table_login.open;
try
if trim(edit1.Text)='' then
begin
application.MessageBox('请输入账号!','提示',mb_ok);
edit1.SetFocus;
exit;
end; if db_main.Table_login.Locate('loginName',edit1.Text, [loCaseInsensitive])=false then
begin
application.MessageBox('你的账号不正确,请重新登录!!!','错误',mb_ok);
edit1.SetFocus;
exit;
end; if db_main.Table_login.FieldByName('pwd').AsString<>trim(edit2.text) then
begin
application.MessageBox('你的密码不正确,请重新登录!!!','错误',mb_ok);
edit2.SetFocus;
exit;
end
else
begin
Application.CreateForm(TMain_fr, main_fr); // main_fr : Form2 ?
main_fr.Show;
Form1.Hide ;
end;
db_main.Table_login.Close;
Finally
db_main.Table_login.Close;
end;
end;
其实要改在Dpr中并不需要多大的改动; // 觉得下面的就可以了 (Form2 主窗体)application.createform(Tform2,form2);
with TfrmLogin.Create(Application) do
begin // 校验成功返回 ModalResult := 1;否则 ModalResult := 2;
ShowModal;
if ModalResult = 2 then
begin
Halt;
end
else if ModalResult = 1 then
begin
Close;
Application.Run;
end;
end; form1如下procedure TLogin_fr.BitBtn1Click(Sender: TObject);
begin
db_main.Table_login.open;
try
if trim(edit1.Text)='' then
begin
application.MessageBox('请输入账号!','提示',mb_ok);
edit1.SetFocus;
exit;
end; if db_main.Table_login.Locate('loginName',edit1.Text, [loCaseInsensitive])=false then
begin
application.MessageBox('你的账号不正确,请重新登录!!!','错误',mb_ok);
edit1.SetFocus;
exit;
end; if db_main.Table_login.FieldByName('pwd').AsString<>trim(edit2.text) then
begin
application.MessageBox('你的密码不正确,请重新登录!!!','错误',mb_ok);
edit2.SetFocus;
exit;
end
else
begin
ModalResult := 1 ;
end;
db_main.Table_login.Close;
Finally
db_main.Table_login.Close;
end;
end;Login中:取消\退出 按钮 OnClick : ModalResult := 2 ;
Forms,
windows,
about in 'about.pas' {AboutForm},
Clientvar in 'Clientvar.pas',
FindMan in 'FindMan.pas' {FormFindMan},
GroupMan in 'GroupMan.pas' {FormGroupMan},
Load in 'Load.pas' {LoadForm},
Main in 'Main.pas' {MainForm};
{$R *.res}Var
handle,handle1,handle2:THandle;begin
handle1:=findwindow('TloadForm','登陆');
handle2:=FindWindow('Tmainform','显示');
//Application.Terminate;
if handle1<>0 then handle:=handle1
else handle:=handle2;
if handle=0 then
begin
Application.Initialize;
Application.Title := 'TelClient';
LoadForm:=TLoadForm.Create(Application);
LoadForm.ShowModal;
if LoadForm.Loadif then
begin
LoadForm.Free;
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end;
end
else
begin
messagebox(handle,'此程序已经运行了!','提示',MB_ICONASTERISK);
end;
end.
//drp文件
Var
handle,handle1,handle2:THandle;begin
handle1:=findwindow('Tlogin_fr','登陆');
handle2:=FindWindow('Tmain_fr','显示');
Application.CreateForm(TDB_Main, DB_Main);
if handle1<>0 then handle:=handle1
else handle:=handle2;
if handle=0 then
begin
Application.Initialize;
Application.Title := 'TelClient';
login_fr:=Tlogin_fr.Create(Application);
login_fr.ShowModal;
if login_fr.Loadif then
begin
login_fr.Free;
Application.CreateForm(Tmain_fr, Main_fr);
Application.Run;
end;
end
else
begin
messagebox(handle,'此程序已经运行了!','提示',MB_ICONASTERISK);
end;
end.
//login窗体
if db_main.Table_login.Locate('loginName',edit1.Text, [loCaseInsensitive])=false then
begin
application.MessageBox('你的账号不正确,请重新登录!!!','错误',mb_ok);
edit1.SetFocus;
loadif:=false;
exit;
end; if db_main.Table_login.FieldByName('pwd').AsString<>trim(edit2.text) then
begin
application.MessageBox('你的密码不正确,请重新登录!!!','错误',mb_ok);
edit2.SetFocus;
loadif:=false;
exit;
end
else
begin
loadif:=true;
Application.CreateForm(TMain_fr, main_fr);
//enablewindow(handle,false);//窗口一不可用
main_fr.Show; end;楼上的兄弟我按你的方法改了一下可是错误的话就直接退出了!!
你帮我看看我的程序
if db_main.Table_login.FieldByName('pwd').AsString<>trim(edit2.text) then
begin
application.MessageBox('你的密码不正确,请重新登录!!!','错误',mb_ok);
edit2.SetFocus;
loadif:=false;
exit;
end
else
begin
loadif:=true;
login_fr.close; 就可以了 end;
application.createform(Tform2,form2);
应该是这个顺序