问题变化了,大家帮忙看看,如解决高分相赠。form1为登陆窗体 。mdimain为父窗体。如何通过form1判定正确登陆后,进入mdimain的主窗体呢? 现在通过 Application.CreateForm(Tmdimain, mdimain); 或mdimain.Show;可实现调用,但出错“cannot creat form. no mdi forms are currently active”
试试: 首先在项目文件是: {$R *.res}begin Application.Initialize; Application.CreateForm(Tmain, main); Application.CreateForm(Tcover, cover); //没有封面就把这两句去掉 cover.ShowModal; // Application.CreateForm(Tlogin, login); if login.ShowModal = mrOK then Application.Run else Application.Terminate; end.然后在登录表单login的“确定”按钮中写入: begin //你的一样诸如判断密码之类的条件 modalresult:=mrOK; end;
你好! 刚看到,失礼了,没想到你回复那麽早!如上个时间。哈哈……其实按理我们的登陆过程应该一样吧!我的一些数据控件如ADOCONNECT之类也只是放在了数据模块中。但在登陆后,调用主窗体可以显示,但点击菜单本应出现的子窗体出错,如取消登陆功能,都正常。顺便问一下,你的登陆窗体和封面都是普通Form,还是都是Mdi的子窗体呀?这个在项目文件里就这麽写是吗? Application.CreateForm(Tlogin, login); if login.ShowModal = mrOK then Application.Run else Application.Terminate; 登陆窗体正确登陆后,是用什麽调用的主窗体界面呢? Application.CreateForm(Tmain, main); //? main.show //? main.ShowModal //?
登陆窗体和封面都是普通Form,主窗体 Tmain是mdi窗体, 项目文件中写的应该是: begin Application.Initialize; Application.CreateForm(Tmain, main);//主窗口要在这里创建,而不是在LOGIN后 Application.CreateForm(Tlogin, login); if login.ShowModal = mrOK then Application.Run else Application.Terminate; end.然后你在登录表单login的“确定”按钮中写入: begin if 密码<>pass then exit; modalresult:=mrOK; //表示当密码正确时就关闭这个表单,主窗口就会出来了 end;
你的意思主窗体显示不用在login窗中写如:main.show 的语句;只要 if login.ShowModal = mrOK then Application.Run; 成立便可自动运行起来是吗?还有 modalresult 是不是不能直接用?定义在uses中还是var?用什麽呢? 如:uses SysUtils, Classes; 期待回复……
modalresult可以直接用啊,不需要定义的,应该是属于系统级变量吧,呵呵,我还学了十来天,道理是说不清楚的:P 我那里反正是: if login.ShowModal = mrOK then Application.Run; 就可以了,你试试不就知道了:)
现在通过 Application.CreateForm(Tmdimain, mdimain);
或mdimain.Show;可实现调用,但出错“cannot creat form. no mdi forms are currently active”
首先在项目文件是:
{$R *.res}begin
Application.Initialize;
Application.CreateForm(Tmain, main);
Application.CreateForm(Tcover, cover); //没有封面就把这两句去掉
cover.ShowModal; //
Application.CreateForm(Tlogin, login);
if login.ShowModal = mrOK then
Application.Run
else
Application.Terminate;
end.然后在登录表单login的“确定”按钮中写入:
begin
//你的一样诸如判断密码之类的条件
modalresult:=mrOK;
end;
项目文件是:
{$R *.res}begin
Application.Initialize;
Application.CreateForm(Tmain, main); //---->是mdi吗?
Application.CreateForm(Twhdata, whdata); //--->数据模块
Application.CreateForm(Tcover, cover); //没有封面就把这两句去掉
cover.ShowModal; // ---->如有停留也在这里处理吗?
Application.CreateForm(Tlogin, login);
if login.ShowModal = mrOK then
Application.Run
else
Application.Terminate;
end.
在封面COVER里,我加了一个TIMER控件,
并在ONTIMER中写了: cover.close;
刚看到,失礼了,没想到你回复那麽早!如上个时间。哈哈……其实按理我们的登陆过程应该一样吧!我的一些数据控件如ADOCONNECT之类也只是放在了数据模块中。但在登陆后,调用主窗体可以显示,但点击菜单本应出现的子窗体出错,如取消登陆功能,都正常。顺便问一下,你的登陆窗体和封面都是普通Form,还是都是Mdi的子窗体呀?这个在项目文件里就这麽写是吗?
Application.CreateForm(Tlogin, login);
if login.ShowModal = mrOK then
Application.Run
else
Application.Terminate;
登陆窗体正确登陆后,是用什麽调用的主窗体界面呢?
Application.CreateForm(Tmain, main); //?
main.show //?
main.ShowModal //?
项目文件中写的应该是:
begin
Application.Initialize;
Application.CreateForm(Tmain, main);//主窗口要在这里创建,而不是在LOGIN后
Application.CreateForm(Tlogin, login);
if login.ShowModal = mrOK then
Application.Run
else
Application.Terminate;
end.然后你在登录表单login的“确定”按钮中写入:
begin
if 密码<>pass then exit;
modalresult:=mrOK; //表示当密码正确时就关闭这个表单,主窗口就会出来了
end;
的语句;只要
if login.ShowModal = mrOK then
Application.Run;
成立便可自动运行起来是吗?还有
modalresult 是不是不能直接用?定义在uses中还是var?用什麽呢?
如:uses
SysUtils, Classes;
期待回复……
我那里反正是:
if login.ShowModal = mrOK then
Application.Run;
就可以了,你试试不就知道了:)
我的主窗体中有太多的东西,牵一发动全身,调试起来很慢。该问的差不多都问了!我慢慢调吧!总不该让你这样的好人等的太久,中午饭后来领分吧!