窗口总是呈现最小化状态, 无法在桌面上显示正常的窗口 ( 积分: 100 )

  • 主题发起人 主题发起人 delphizdr
  • 开始时间 开始时间
D

delphizdr

Unregistered / Unconfirmed
GUEST, unregistred user!
我用Delphi编了一个程序, 在大部份电脑上能够正常运行,但是在一台WindowsXP SP2的电脑上,在登录窗口(显示正常)中输入帐号及密码后,按确定进入主界面窗口时,却总是呈现出最小化状态,无法显示出正常的窗口,显示主界面的窗口用的是ShowModal指令。WindowsXP已经重新安装过,但是结果还是一样。不知道各位大侠是否也曾碰到过,敬请赐教,先在这里谢谢啦!
 
我用Delphi编了一个程序, 在大部份电脑上能够正常运行,但是在一台WindowsXP SP2的电脑上,在登录窗口(显示正常)中输入帐号及密码后,按确定进入主界面窗口时,却总是呈现出最小化状态,无法显示出正常的窗口,显示主界面的窗口用的是ShowModal指令。WindowsXP已经重新安装过,但是结果还是一样。不知道各位大侠是否也曾碰到过,敬请赐教,先在这里谢谢啦!
 
如果要显示的主界面是application.mainform,不要使用showmodal
 
谢谢djptony的回答,我程序的application.mainform是login窗口,供用户输入帐号及密码,这个窗口显示正常。问题是出现在当用户在该窗口中输入帐号及密码后,按确认按钮,我在该确认按钮写的代码是: Self.Hide;(隐藏登录窗口),Form1.Showmodal,以显示后续的数据录入窗口,但是这个窗口无法正常显示,总是呈现最小化状态。这个程序在许多电脑上都运行正常,仅是在一台安装有WindowsXP SP2的电脑上出现这种情况,不清楚是不是电脑中有什么软件和我的程序有冲突。
 
登陆窗口用login.Close可以么?
我的做法是,Application.MainForm设置成主窗体。然后在工程文件里面这样写。
因为你的登陆窗口暂时不用了,就释放掉它,没有必要hide着,如果需要重新登陆的话再创建并显示它。
uses
Forms,
Windows
.....
var
hMutex:HWND;
Ret:Integer;
begin
Application.Initialize;
Application.Title := '新太阳进销存系统';
{只允许运行一个程序副本}
hMutex:=CreateMutex(nil,False,PChar('新太阳进销存系统'));
Ret:=GetLastError;
if Ret<>ERROR_ALREADY_EXISTS then
begin
Application.CreateForm(TfrmMain, frmMain);
Application.CreateForm(Tfrm_Login, frm_Login);
frm_Login.ShowModal;
if frm_Login.Pass then
begin
frm_Login.Free;
Application.Run;
end else
begin
frm_Login.Free;
Application.Terminate;
end;
end
else
begin
MyMsgBox('【新太阳个体进销存系统】已经运行,请不要打开多个副本!');
ReleaseMutex(hMutex);
Application.Terminate;
end;
end.
 
后退
顶部