在打开主 窗口的时候就显示另外一个子窗口,怎么做?在线等待!

pobosskey 2003-08-18 01:59:10
我现在有个个mdifrom类型的窗口formmain,我现在要实现在这个主窗口出现后,就显示一 个登陆窗口formlogin,要先登陆,这个登陆窗口是不先登陆的话是运行不了的,

请问在主窗口的那个事件中写“fromlogin->showmodel()”这个语句才能实现?我现在把他写在formshow中, 但是出现错误提示说在主窗口没激活的时候是不能创建这个窗口的,请问怎么实现这个功能?
...全文
62 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Behard 2003-08-20
  • 打赏
  • 举报
回复
在 Project.cpp 中在 MainForm 前显示的不能是 MDIChildForm 的窗体
pobosskey 2003-08-19
  • 打赏
  • 举报
回复
有没有人回答的啊
FenixMeng 2003-08-19
  • 打赏
  • 举报
回复
可以写在主创体的OnShow事件中
sjjf 2003-08-19
  • 打赏
  • 举报
回复
如果采用---
动态的生成fromlogin,
在oncreate事件中,
Tformlogin *ch;

ch=new Tformlogin();
ch->showmodel();

那么请保证 formlogin已经定义好了
并在主窗口的那个文件中把formlogin所在的头文件,包含进去。
行的,我用过。
如果你想调用formlogin像调用messagebox那样的话,最好不要在winmain中
创建。
当然还有一种方案是创建了,隐藏,然后等主窗体显示后再showmodal,
sjjf 2003-08-19
  • 打赏
  • 举报
回复
你都没有说是采用什么样的方式做的,怎么回答阿?
pobosskey 2003-08-18
  • 打赏
  • 举报
回复
有人回答吗?
pobosskey 2003-08-18
  • 打赏
  • 举报
回复
不行的啊,出现这样的错误提示

Project DMS_CNC.exe raised exception class EInvalidOperation with message 'Cannot create form. No MDI forms are currently active'. Process stopped. Use Step or Run to continue.

这是怎么回事情啊?
sjjf 2003-08-18
  • 打赏
  • 举报
回复
动态的生成fromlogin,
在oncreate事件中,
Tformlogin *ch;

ch=new Tformlogin();
ch->showmodel();

starstargao 2003-08-18
  • 打赏
  • 举报
回复
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
/*
if (FindWindow(NULL,"银行卡消费积分系统") != NULL)
{
MessageBox(NULL,"银行卡消费积分系统已经在运行","警告",MB_OK|MB_ICONWARNING);
return 0;
}
*/
String SServer,SUserName,SPassword;
TRegistry *Reg = new TRegistry;
try
{
Application->Initialize();
Application->Title = "CCIS";
Reg->RootKey = HKEY_LOCAL_MACHINE;
if(Reg->OpenKey("SOFTWARE\\ccis",false)){
SServer = Reg->ReadString("Server");
SUserName = Reg->ReadString("UserName");
SPassword = Reg->ReadString("Password");
Reg->CloseKey();
}else{
Application->MessageBoxA("配置参数还没有生成或者已遭到损坏!\n请使用参数配置程序配置","错误",MB_OK|MB_ICONSTOP);
Application->Terminate();
}
delete Reg;
comm = new TComm(SServer,SUserName,SPassword,"ccis_db");
comm->ConnectToDB();
Application->CreateForm(__classid(TfrmMainMenu), &frmMainMenu);
&frmDayEofSearchReport);
frmLogin->ShowModal();
Application->Run();
}
catch (Exception &exception)
{
//Application->ShowException(&exception);
delete Reg;
String ErrCaption;
ErrCaption = "运行程序的时候发生了异常错误!请稍后重试或者联系数据库管理员\n错误信息为:";
ErrCaption += exception.Message;
Application->MessageBoxA(ErrCaption.c_str(),"错误",MB_OK|MB_ICONSTOP);
}
delete comm;
return 0;
}
柯本 2003-08-18
  • 打赏
  • 举报
回复
我记得我已回答过此问题:
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
fromlogin = new Tfromlogin(NULL); //
fromlogin->ShowModal(); //
delete fromlogin; //
Application->Run();
}
.....
alenwelkin 2003-08-18
  • 打赏
  • 举报
回复
应该是在OnShow中的,此时的主窗口已经构建完毕了

问题可能是:
1.在Project Option中看看formlogin是autocreate的吗?
2.若不是应该把窗口new出来
formlogin = new Tformlogin(this);
formlogin->ShowModal()

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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