首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

登录窗口的有关问题

2012-02-20 
登录窗口的问题下面是建立了一个登录窗口,然后判断是不是按了OK按钮来决定是否登录可程序在执行到第三句(f

登录窗口的问题
下面是建立了一个登录窗口,然后判断是不是按了OK按钮来决定是否登录
可程序在执行到第三句(frmLogin-> ShowModal())的时候就出2错:
Cannot   focus   a   disabled   or   invisible   window.
Cannot   make   a   visible   window   modal.


                TfrmLogin   *frmLogin;
                frmLogin   =   new   TfrmLogin(this);
                if   (frmLogin-> ShowModal()   ==   mrOk)
                {
                        delete   frmLogin;
                        bLogin   =   true;
                }
                else
                {
                        delete   frmLogin;
                        bLogin   =   false;
                        Application-> Terminate();
                }

不论我把frmLogin设置成可见还是不可见,一样出错

[解决办法]
参考以前的代码:
这是一个完整的登录的设计思路代码:
代码:

//---------------------- -----------------

#include <vcl.h>
#pragma hdrstop
#include "Unit2.h " //登录窗体类的头文件
//---------------------- -----------------
USEFORM( "Unit1.cpp ", Form1);
USEFORM( "Unit2.cpp ", Form2);
//---------------------- -----------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
  try
  {
  Application-> Initialize();
  //Application-> CreateForm(__classid(TForm1), &Form1); //这里是你的需要自动创建的窗体,如数据库连接模块、全局数据模块等。。。
  TForm2 *Form2 = new TForm2(Application); //创建登录窗体
  if(Form2-> ShowModal() == mrOk) { //只有正确返回时才开始创建主窗体等。。。
     Application-> CreateForm(__classid(TForm1), &Form1);
  }
  Application-> Run();
  }
  catch (Exception &exception)
  {
  Application-> ShowException(&exception);
  }
  catch (...)
  {
  try
  {
    throw Exception( " ");
  }
  catch (Exception &exception)
  {
    Application-> ShowException(&exception);
  }
  }
  return 0;
}
//---------------------- -----------------
[解决办法]
是你在frmLogin的创建或激活事件中放置了聚焦的方法,而它那对象恰好在建立窗口时不可见或没创建好

另外楼上的做法比较好,直接在程序流程中创建窗口要流畅和好把握,学习一下,呵呵
[解决办法]
是不是中Form的OnShow中设置了Visible或setFocus
[解决办法]
i_love_pc(杰子)(欢迎加入技术交流QQ群:23640432)
这样可以的

热点排行