在开发SDI的程序的时候遇到的Main窗口激活问题,很菜,但我急需,谢谢 ( 积分: 50 )

  • 主题发起人 主题发起人 lengcode
  • 开始时间 开始时间
L

lengcode

Unregistered / Unconfirmed
GUEST, unregistred user!
问题是这样的,我在写一个前台用于顾客查询的窗口的时候(用于顾客查询,所以不能用鼠标,按键都是快捷),(为了方便,启动程序就进入登录窗口)所以Main窗口的OnActivate事件中调用登录窗口的Show函数使登录窗口出现,但是正常登录以后,下面的Main窗口未被激活,需要用鼠标,或者其他方式才行--问题就在这里
--------------------------------
测试1:一切照上,除第一次需要手动激活以外,以后都很正常;
--------------------------------
测试2:如果在Main窗口激活的时候不调用登录窗口,而是通过用户按快捷调用登录窗口,则登录以后问题不出现,始终出于激活状态



谁能解惑,谢谢
 
问题是这样的,我在写一个前台用于顾客查询的窗口的时候(用于顾客查询,所以不能用鼠标,按键都是快捷),(为了方便,启动程序就进入登录窗口)所以Main窗口的OnActivate事件中调用登录窗口的Show函数使登录窗口出现,但是正常登录以后,下面的Main窗口未被激活,需要用鼠标,或者其他方式才行--问题就在这里
--------------------------------
测试1:一切照上,除第一次需要手动激活以外,以后都很正常;
--------------------------------
测试2:如果在Main窗口激活的时候不调用登录窗口,而是通过用户按快捷调用登录窗口,则登录以后问题不出现,始终出于激活状态



谁能解惑,谢谢
 
procedure TForm1.FormShow(Sender: TObject);
begin
form2.ShowModal;
end;
 
兄弟,你没明白我的意思吧:FrmMain窗口是主窗口,启动的时候会通过一个函数调用打开登录窗口FrmLogin,FrmLogin在正常登录以后会Close,然后这个时候FrmMain主窗口出于未激活状态
 
kinneng说的是一个比较好的方法,即在主窗体的FormShow事件里处理登录窗口的显示。
 
我明白kinneng的意思了,是比较典型的登录窗口形式,不过我这种情况有办法处理吗,原因是什么?
---------------------------------
我现在处理的方式是让启动后进入主界面,第一次登录有工作人员或者顾客解决,所以也就避免了这种情况(界面下面有广告,没法,客户要求启动就能看到)

不过我就很不爽了,为什么会出这种问题难???我菜呀,所以郁闷
 
没有什么叫做实现不了的,直走不行,咱们绕个弯, 等我看清楚楼主的题目再说!
 
请问楼主, 在退出登陆窗口后, 你是想要主窗口激活, 还是不激活? 你的表达非常含糊?

“但是正常登录以后,下面的Main窗口未被激活,需要用鼠标,或者其他方式才行--问题就在这里” 言下之意是想正常登录后Main窗口被激活,那么我给出的代码不恰好做到了吗?

“兄弟,你没明白我的意思吧:FrmMain窗口是主窗口,启动的时候会通过一个函数调用打开登录窗口FrmLogin,FrmLogin在正常登录以后会Close,然后这个时候FrmMain主窗口出于未激活状态”这又是什么意思? 到底你想FrmMain主窗口激活还是不激活?
 
是这样的,肯定希望激活三
----------------------
在onshow事件中用FrmLogin.ShowModal的时候,启动程序以后是Login窗口弹出,登录以后FrmMain窗口才出现;
在onOnActivate事件中用FrmLogin.ShowModal,Main窗口先出现以后,弹出Login窗口,这个是我需要的,问题也就在这里,正常登录以后,Main窗口未激活
 
在登陆成功登陆窗口关闭时将主窗口激活
 
我试过,这样做,窗口激活了,不过在不退出程序的情况下,反复登录,登录窗口会出现问题(比如登录成功,但登录界面还在,又在等第二次,至于怎么造成的,太菜了,还不明白)
 
原来楼主想先显示Main窗口->再弹出激活Login窗口->关闭Login窗口->要么激活Main窗口,要么退出程序,这么一个流程,onOnActivate肯定不行,因为窗口只要获得焦点就触发此事件,所以要设置标志,记住已经登录过才行,但实际不用这么复杂,很简单的,下面给你代码,如果不成功,我可以将程序放在主页给下载,如果成功我就不忙了。

//Form1是主窗口,Form2是登录窗口,
//在工程文件里面

program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Form1.Show; //显示主窗口
Application.CreateForm(TForm2, Form2);
Form2.ShowModal; //模式显示登录窗口
Application.Run;
end.

//在Form2里面,

如果登录成功,则Close关闭登录窗口
登录失败则 Application.Terminate //终止程序
 
后退
顶部