窗体调用出错,怎么多次调用窗体?

注号帐被册 2015-11-24 03:35:32

用dephi7设计学生管理系统,登录进入系统后有如下菜单

主窗体是Mainfrom,为了使登录窗体先出现


登录窗体代码

其他窗体都可以正常调用
切换用户选项代码

就是选择切换用户时,显示工程出错.

才接触dephi,请大家帮忙解决切换用户的问题,是哪里出错了...下午去上课,晚上才能回来,多谢各位了!!
...全文
160 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Liyp92 2015-11-26
  • 打赏
  • 举报
回复
引用 8 楼 wind2210262828 的回复:
[quote=引用 6 楼 u012072926 的回复:]
哦。你是在main打开ADO登录的?
不过照我那样做,你dengluuser.close。整个程序都会被关了。
帮你写你个列子吧,Form1为主窗体,Form2为登陆窗体:

form1的 uses添加 unit2;

在form1的OnShow 事件写代码:

procedure TForm1.FormShow(Sender: TObject);
begin
Application.CreateForm(TForm2,Form2);
Form2.ShowModal;
form2.Free;
end;

这个就是主窗体的代码,就这个就足够了!

下面是登陆窗口的代码:
登陆窗口设计为两个Edit组件,分别用来输入账号和密码!
两个Button组件,button1为确定 button2为取消

定义一个全局变量 例如: I: integer=0;

单击确定按钮:

procedure TForm2.Button1Click(Sender: TObject);
begin
if (Trim(Edit1.Text)='账号')and(Trim(Edit2.Text)='密码') then
begin
I := 1;
close;
end
else
begin
showmessage('用户名或密码错误。');
I := 0;
end;
end;

单击取消按钮:

procedure TForm2.Button2Click(Sender: TObject);
begin
Application.Terminate;
end;

登陆窗口Onclose事件:

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if I=0 then
Application.Terminate;
end;



改完后验证有问题,不管输入什么都会显示密码错误[/quote]
你把你登录代码贴出来我看看
Liyp92 2015-11-26
  • 打赏
  • 举报
回复
if ADOQuery1.RecordCount = 0 then begin Showmessage('账号或密码出错!'); I := 0; end else beign I := 1; close; end; 突然想到是不是这个问题。RecordCount返回的是SQL查询的记录数, 所以ADOQuery1.RecordCount < 0把这句改成 =0 。平时用惯了先>0做操作,不好意思
注号帐被册 2015-11-25
  • 打赏
  • 举报
回复
引用 2 楼 u012072926 的回复:
登录判断也不要那样写,看起来很容易出错。直接
if ADOQuery1.RecordCount < 0 then begin
Showmessage('账号或密码出错!');
end else MainFrom.Show;

修改dengluuser为主窗体输入密码后会出错
doloopcn 2015-11-25
  • 打赏
  • 举报
回复
要动态创建窗口 你在登录的窗口uses MainForm; 如果登陆成功,你就MainForm:=TMainForm.Create(Application); 这样就保准没有错误了 不过这样就是,先登陆,再进入 你也可以在MainForm里面动态调用登陆窗口 前提是,你得把登陆窗口在IDE环境中的项目中移去 记得是:USES LoginForm LoginForm:=TLoginForm.Create(Application); LoginForm.ShowModal;
注号帐被册 2015-11-25
  • 打赏
  • 举报
回复
我现在脑子混乱的很,为了搞这个迷迷糊糊的。
注号帐被册 2015-11-25
  • 打赏
  • 举报
回复
我去干值日了,回来再弄。
注号帐被册 2015-11-25
  • 打赏
  • 举报
回复
引用 6 楼 u012072926 的回复:
哦。你是在main打开ADO登录的? 不过照我那样做,你dengluuser.close。整个程序都会被关了。 帮你写你个列子吧,Form1为主窗体,Form2为登陆窗体: form1的 uses添加 unit2; 在form1的OnShow 事件写代码: procedure TForm1.FormShow(Sender: TObject); begin Application.CreateForm(TForm2,Form2); Form2.ShowModal; form2.Free; end; 这个就是主窗体的代码,就这个就足够了! 下面是登陆窗口的代码: 登陆窗口设计为两个Edit组件,分别用来输入账号和密码! 两个Button组件,button1为确定 button2为取消 定义一个全局变量 例如: I: integer=0; 单击确定按钮: procedure TForm2.Button1Click(Sender: TObject); begin if (Trim(Edit1.Text)='账号')and(Trim(Edit2.Text)='密码') then begin I := 1; close; end else begin showmessage('用户名或密码错误。'); I := 0; end; end; 单击取消按钮: procedure TForm2.Button2Click(Sender: TObject); begin Application.Terminate; end; 登陆窗口Onclose事件: procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin if I=0 then Application.Terminate; end;
改完后验证有问题,不管输入什么都会显示密码错误
Liyp92 2015-11-25
  • 打赏
  • 举报
回复
怕你不够清楚。我直接帮你改吧,依旧设置你的MainFrom为主窗体。

然后在你的MainFrom的OnShow 事件写代码
procedure TMainFrom.FormShow(Sender: TObject);
begin
Application.CreateForm(Tdengluuser,dengluuser);
dengluuser.ShowModal;
dengluuser.Free;
end;
然后在你登录窗口
定义一个全局变量I

然后登陆判断里改
if ADOQuery1.RecordCount < 0 then begin
Showmessage('账号或密码出错!');
I := 0;
end else beign
I := 1;
close;
end;

单击退出按钮:
procedure Tdengluuser.Button2Click(Sender: TObject);
begin
Application.Terminate;
end;

登陆窗口Onclose事件:
procedure Tdengluuser.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if I =0 then
Application.Terminate;
end;
Liyp92 2015-11-25
  • 打赏
  • 举报
回复
哦。你是在main打开ADO登录的?
不过照我那样做,你dengluuser.close。整个程序都会被关了。
帮你写你个列子吧,Form1为主窗体,Form2为登陆窗体:

form1的 uses添加 unit2;

在form1的OnShow 事件写代码:

procedure TForm1.FormShow(Sender: TObject);
begin
Application.CreateForm(TForm2,Form2);
Form2.ShowModal;
form2.Free;
end;

这个就是主窗体的代码,就这个就足够了!

下面是登陆窗口的代码:
登陆窗口设计为两个Edit组件,分别用来输入账号和密码!
两个Button组件,button1为确定 button2为取消

定义一个全局变量 例如: I: integer=0;

单击确定按钮:

procedure TForm2.Button1Click(Sender: TObject);
begin
if (Trim(Edit1.Text)='账号')and(Trim(Edit2.Text)='密码') then
begin
I := 1;
close;
end
else
begin
showmessage('用户名或密码错误。');
I := 0;
end;
end;

单击取消按钮:

procedure TForm2.Button2Click(Sender: TObject);
begin
Application.Terminate;
end;

登陆窗口Onclose事件:

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if I=0 then
Application.Terminate;
end;

注号帐被册 2015-11-24
  • 打赏
  • 举报
回复
引用 1 楼 u012072926 的回复:
把Project1里这两段代码去掉。
dengluuser.Showmodal;
dengluuser.free;
要先运行登录窗口是要在project->options->forms标签下,Main form里进行调整。
把Main form设置为登录FROM

最近老传不了照片。

要怎么设置?
Liyp92 2015-11-24
  • 打赏
  • 举报
回复
登录判断也不要那样写,看起来很容易出错。直接
if ADOQuery1.RecordCount < 0 then begin
Showmessage('账号或密码出错!');
end else MainFrom.Show;
Liyp92 2015-11-24
  • 打赏
  • 举报
回复
把Project1里这两段代码去掉。
dengluuser.Showmodal;
dengluuser.free;
要先运行登录窗口是要在project->options->forms标签下,Main form里进行调整。
把Main form设置为登录FROM

最近老传不了照片。

828

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧