如何登陆窗口显示在主窗口上面? 请问如何实现登陆窗口显示在主窗口之上,我试了试,只能实现在登陆窗口关闭后主窗口才显示。 如何让登陆窗口显示,并且是当前窗口,在它背后是显示主窗口。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 主窗体启动以后,启动登陆窗体,然后设置主窗体enable=false;登陆窗体的fmstyle为allontop fmstryle:=fsstayontop;--------------------------------------------------------------------看尽悲伤,庸人自扰不平事。叹尽荒凉,海阔天空谁人知。狂风劲兮,百花飘扬乱舞香。捏花一笑,海不扬波断肠心!广告:http://delphicode.yeah.net 登录窗口用ShowModal的方式显示就肯定没问题了 主窗体启动以后,启动登陆窗体,然后在主创体执行 fLogin.ShowModal就行 我是这样实现的:在主窗体中定义一个变量Islogin:Boolean;初值为false在主窗体的OnPaint事件中写代码:if not IsLogin then begin frmLogin.ShowModal; IsLogin:=True; end;就搞定了。 TO楼主: 登录窗口关闭后主窗体才显示出来,这说明你ShowModal登录窗口的代码是放在主窗体的OnCreate事件里,这个时候主窗体还没有被显示出来,就进入了登录窗口的ShowModal循环了,当然主窗体不能被显示。 解决方法,一是用楼上的在OnPaint里事件里,这种方法需要一个静态变量来确保代码只执行一次(因为OnPaint事件不断地被激发),二是在主窗体的OnCreate里事件里发送一个自定义消息,等到主窗体成功创建并显示出来后,这个自定义消息才会被处理,当然处理这个自定义消息的代码要你自己来写。第一种方法:{$WRITEABLECONST ON}procedure TFormMain.FormPaint(Sender: TObject)const FirstTime: Boolean = True;begin if FirstTime then begin FirstTime := False; with TFormLogin.Create(Self) do try ShowModal; finally Free; end; end;end;{$WRITEABLECONST OFF}第二种方法:const WM_MY_MSG = (WM_USER+100)type TFormMain = class(TForm) .... private procedure WMMyMsg(var Msg: TMessage); message WM_MY_MSG; ... end;procedure TFormMain.FormCreate(Sender: TObject);begin PostMessage(Handle, WM_MY_MSG, 0, 0);end;procedure TFormMain.WMMyMsg(var Msg: TMessage);begin inherited; with TFormLogin.Create(Self) do try ShowModal; finally Free; end;end; 哪有那么麻烦啊?在主窗体的OnShow事件里让登录窗体创建并ShowModal就搞定了。 将javascript改成delphi要怎么写? c#写的COM在DELPHI里用,C#的类型和DELPHI类型不匹配,怎么办?谢谢!!!!!!!!! 新换工作,希望有个好的发展! 我用ADOQuery来操作数据,用DBGrid来显示结果,一个简单的统计怎么解决? VCD,DVD软件能自动识别其原唱,伴唱声道吗? 如何从绝域网上 下载资料。 非常简单,关于连接SQL数据库的问题! 大家帮我看看这个怎么解决,解决了,另开帖送分!急! 右键按下的事件是什么? 如何用delphi实现编辑器的脚本加亮显示??? 请高手帮忙解决一个系统提示问题,在线等… 怎么将excel数据导入access数据库
--------------------------------------------------------------------
看尽悲伤,庸人自扰不平事。叹尽荒凉,海阔天空谁人知。狂风劲兮,百花飘
扬乱舞香。捏花一笑,海不扬波断肠心!
广告:http://delphicode.yeah.net
然后在主创体执行
fLogin.ShowModal
就行
初值为false
在主窗体的OnPaint事件中写代码:if not IsLogin then
begin
frmLogin.ShowModal;
IsLogin:=True;
end;就搞定了。
登录窗口关闭后主窗体才显示出来,这说明你ShowModal登录窗口的代码是放在主窗体的OnCreate事件里,这个时候主窗体还没有被显示出来,就进入了登录窗口的ShowModal循环了,当然主窗体不能被显示。
解决方法,一是用楼上的在OnPaint里事件里,这种方法需要一个静态变量来确保代码只执行一次(因为OnPaint事件不断地被激发),二是在主窗体的OnCreate里事件里发送一个自定义消息,等到主窗体成功创建并显示出来后,这个自定义消息才会被处理,当然处理这个自定义消息的代码要你自己来写。第一种方法:{$WRITEABLECONST ON}
procedure TFormMain.FormPaint(Sender: TObject)
const
FirstTime: Boolean = True;
begin
if FirstTime then
begin
FirstTime := False;
with TFormLogin.Create(Self) do
try
ShowModal;
finally
Free;
end;
end;
end;
{$WRITEABLECONST OFF}第二种方法:const
WM_MY_MSG = (WM_USER+100)type
TFormMain = class(TForm)
....
private
procedure WMMyMsg(var Msg: TMessage); message WM_MY_MSG;
...
end;procedure TFormMain.FormCreate(Sender: TObject);
begin
PostMessage(Handle, WM_MY_MSG, 0, 0);
end;procedure TFormMain.WMMyMsg(var Msg: TMessage);
begin
inherited;
with TFormLogin.Create(Self) do
try
ShowModal;
finally
Free;
end;
end;