有关窗体的问题简单问题

xdyanzg 2002-08-30 05:08:55
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TLoginForm), &LoginForm);
Application->CreateForm(__classid(TMainForm), &MainForm);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
TLoginForm是一个登录窗体,TMainForm是主窗体。
void __fastcall TLoginForm::Button1Click(TObject *Sender)
{
if(password)
{//登录密码输入正确,显示住窗体,同时关闭登录窗体。
代码该如何写?
}
else
{//登录密码输入错误,结束程序
Close();
}
}
...全文
52 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohu9711 2002-08-30
  • 打赏
  • 举报
回复
对不起,上面的第六、七行应该删除!
xiaohu9711 2002-08-30
  • 打赏
  • 举报
回复
在OK按钮中:(试用次数自己设计)
if(Edit1->Text == "12345")
{
this->Hide();
Form1->Show();
}
else
{
MessageBox(NULL,"The Code is not true!",NULL,MB_OK);
Edit1->Text = "";
}
在WINMAIN中:

#include <vcl.h>
#include <Unit1.h>
#include "Unit2.h"
#pragma hdrstop
USERES("Project1.res");
USEFORM("C:\Program Files\LEAD Technologies, Inc\LEADTOOLS 12.1 Win32\lib\VCL\builder5\Unit1.cpp", Form1);
USEFORM("Unit2.cpp", LoginForm);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
//Application->CreateForm(__classid(TLoginForm), &LoginForm);
TLoginForm * loginform;
loginform = new TLoginForm(LoginForm); //动态生成LogonForm
loginform->ShowModal();
delete loginform;
//Application->Run();
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
JamesJiang 2002-08-30
  • 打赏
  • 举报
回复
让工程在启动时不要创建LoginForm窗体
在TMainForm的OnCreate事件中加入如下代码:
TLoginForm LoginForm =new TLoginForm(this);
LoginForm->ShowModal();
if(LoginForm ->m_bLoginSucceed==false)//登录条件验证
{
delete LoginForm;
exit(0);
}
delete LoginForm;

hailulu_wang 2002-08-30
  • 打赏
  • 举报
回复
这样写:
工程文件:
//-----------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
USERES("Project1.res");
USEFORM("Unit1.cpp", Form1);
USEFORM("Unit2.cpp", Form2);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
TForm2 *PasswordForm=new TForm2(NULL);
if(PasswordForm->ShowModal()!=1)
{
delete PasswordForm;
return 1;
}
delete PasswordForm;
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
//------------------------------------------------------------------
登录窗口:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//----------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
Close();
}
//----------------------------------------------------------------
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
if(Edit1->Text=="a")
{
ModalResult=1;
}
else
{
ShowMessage("密码错误!");
ModalResult=2;
}
}
//---------------------------------------------------------------
wetrust 2002-08-30
  • 打赏
  • 举报
回复
实在不好意思:
//设this->ModalResult=mrNone;
void __fastcall TLoginForm::Button1Click(TObject *Sender)
{
if(password)
{
this->ModalResult=mrOk;
}
else
{
this->ModalResult=mrCancel;
}
}
wetrust 2002-08-30
  • 打赏
  • 举报
回复
实在不好意思:
//设Button1->ModalResult=mrNone;
void __fastcall TLoginForm::Button1Click(TObject *Sender)
{
if(password)
{
this->ModalResult=mrOk;
}
else
{
this->ModalResult=mrCancel;
}
}
wetrust 2002-08-30
  • 打赏
  • 举报
回复
Sorry.
loginform = new TLoginForm(Application);
设Button1->ModalResult=mrNone;
void __fastcall TLoginForm::Button1Click(TObject *Sender)
{
if(password)
{
Button1->ModalResult=mrOk;
}
else
{
Button1->ModalResult=mrCancel;
}
}
hnwlk 2002-08-30
  • 打赏
  • 举报
回复
void __fastcall TLoginForm::Button1Click(TObject *Sender)
{
if(password)
{//登录密码输入正确,显示住窗体,同时关闭登录窗体。
LoginForm->Hide();
MainForm->Show();
}
else
{//登录密码输入错误,结束程序
Close();
}
}
wetrust 2002-08-30
  • 打赏
  • 举报
回复
WinMain这样写:
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
TLoginForm * loginform;
loginform = new TLoginForm(); //动态生成LogonForm
if(loginform->ShowModal()==mrOk)
{
Application->CreateForm(__classid(TMainForm), &MainForm);
Application->Run();
}
delete loginform;
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
nibani 2002-08-30
  • 打赏
  • 举报
回复
if(password)
{
Hide();//藏着看不见就可以了
MainForm->Show();
}
else
{
...
}
bluebird97073 2002-08-30
  • 打赏
  • 举报
回复
你需要在loginform的单元文件中 Include mainform的单元文件

void __fastcall TLoginForm::Button1Click(TObject *Sender)
{
if(password)
{
this->Hide();
MainForm->Show()
}

else
{//登录密码输入错误,结束程序
Close();
}
}
advanced 2002-08-30
  • 打赏
  • 举报
回复
loginform = new TLoginForm();
好像不对,可能是:

loginform = new TLoginForm(TForm);
advanced 2002-08-30
  • 打赏
  • 举报
回复
Application->Initialize();
Application->CreateForm(__classid(TLoginForm), &LoginForm);
Application->CreateForm(__classid(TMainForm), &MainForm);

这样是不行的,主窗口必须放在Application->Initialize();
之后第一个。
这样写:
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TMainForm), &MainForm);
TLoginForm * loginform;
loginform = new TLoginForm(); //动态生成LogonForm
loginform->ShowModal();
delete loginform;
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
就是这样好长时间没用BCB可能有点错误,但是思路没问题。

13,873

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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