找不见哪错了

joyarthur 2010-06-08 12:16:14
我现在建了两个Form Form1是主界面 Form2是登录界面 我实现了登录界面 当我在登录界面输入密码和用户名成功时 我怎么实现界面跳转到Form1 开始Form1界面的操作 Form1是主界面 但现在跳转失败 。看看我那做你的不对


form1的代码
#include <vcl.h>
#pragma hdrstop

//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
USEFORM("Unit2.cpp", Form2);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
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;
}
//---------------------------------------------------------------------------
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
TForm2 *form2 = new TForm2(this);// 实例化窗体Form2对应的类TForm2
form2->ShowModal(); // 以模态方式显示窗口

if(!form2->isLogin())
{ // 没有通过验证
Application->ShowMainForm=false; // 不显示主窗体
// Application->Terminate(); // 退出应用程序
PostQuitMessage(0);
}

delete form2; // 销毁对象
}
form2的代码
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
bool login = false;
}
//---------------------------------------------------------------------------

void __fastcall TForm2::Button1Click(TObject *Sender)
{
bool login;
if(Edit1->Text!="111" || Edit2->Text!="111")
MessageDlg("用户名或密码错!", mtWarning, TMsgDlgButtons() << mbYes, 0);
else
{
login = true;
MessageBox(NULL,"欢迎您登入维修中心信息系统","Hello!",MB_OK);
this->Close();
}
Form1 ->Show();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button2Click(TObject *Sender)
{
this->Close();
}
//---------------------------------------------------------------------------
bool TForm2::isLogin()
{
bool login;
return login;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Edit1Change(TObject *Sender)
{

} 其中login显示没有用到 在这代码中表示什么意思 还有(!form2->isLogin()这句 我怎么定义它 显示form1 我加form1-show()函数行吗
...全文
165 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
lghndyz 2010-06-10
  • 打赏
  • 举报
回复
其他的都没错的,只是login被多次定义了!!很像我以前写的代码!!呵呵!!
YeBinYe 2010-06-10
  • 打赏
  • 举报
回复
将上面2位大牛的代码整理如下:
1.修改Project1.cpp文件:

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"//添加Form2的头文件
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
USEFORM("Unit2.cpp", Form2);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
// 动态创建用户名密码输入框
TForm2 *Form2 = new TForm2(NULL);
Form2->ShowModal();
//isLogin返回是否验证成功
bool succeed = Form2->isLogin();
// 释放 Form2
delete Form2;
if (succeed == true)
{
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;
}
//---------------------------------------------------------------------------

2。Form2的头文件:

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

#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm2 : public TForm
{
__published: // IDE-managed Components
TEdit *Edit1;
TEdit *Edit2;
TButton *Button1;
TButton *Button2;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm2(TComponent* Owner);
bool __fastcall isLogin();
};
//---------------------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------------------
#endif

Form2的源文件:


#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
bool login;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
//登录
void __fastcall TForm2::Button1Click(TObject *Sender)
{
if (Edit1->Text.AnsiCompare("111") || Edit2->Text.AnsiCompare("111"))
MessageDlg("用户名或密码错!", mtWarning, TMsgDlgButtons() << mbYes, 0);
else
{
login = true;
MessageBox(NULL,"欢迎您登入维修中心信息系统","Hello!",MB_OK);
Close();
}
}
//---------------------------------------------------------------------------
bool __fastcall TForm2::isLogin()
{
return login;
}
//---------------------------------------------------------------------------
//关闭
void __fastcall TForm2::Button2Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
genii12345 2010-06-08
  • 打赏
  • 举报
回复
在WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)中,
先调用From2 ,在调用Form1就可以了。
周药师 2010-06-08
  • 打赏
  • 举报
回复
“form2->isLogin()”

你定义了isLogin() 吗?
周药师 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 ccrun 的回复:]
白辛苦了。
睡一会去先。
[/Quote]

这个兄弟,拿了一段网络的代码,使劲的q我,
我让他看会书,看看基础,他也看不见去

ccrun.com 2010-06-08
  • 打赏
  • 举报
回复
白辛苦了。
睡一会去先。
周药师 2010-06-08
  • 打赏
  • 举报
回复
最近q有人问 这里也有人问
我就顺手贴一下

Form1为主界面
Form2为登陆界面


#include <vcl.h>
#pragma hdrstop
#include "Unit2.h" //Add
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
USEFORM("Unit2.cpp", Form2);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm2), &Form2);
Form2->ShowModal();//Add
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}

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

//Form2 单元
#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)
{
if(Edit1->Text.Trim()=="123")
Close();
else
ShowMessage("输入错误,请重新输入");
}

joyarthur 2010-06-08
  • 打赏
  • 举报
回复

#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm2 : public TForm
{
__published: // IDE-managed Components
TPanel *Panel1;
TEdit *Edit1;
TEdit *Edit2;
TLabel *Label1;
TLabel *Label2;
TButton *Button1;
TButton *Button2;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall Edit1Change(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm2(TComponent* Owner);
bool isLogin();
};
//---------------------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------------------
#endif
ccrun.com 2010-06-08
  • 打赏
  • 举报
回复
Unit2.h文件内容呢?贴出来参观一下。
joyarthur 2010-06-08
  • 打赏
  • 举报
回复
知道 我看出来了 我现在主要是连接不上form1 当我在登录界面输入密码和用户名成功时 我界面跳转到Form1
joyarthur 2010-06-08
  • 打赏
  • 举报
回复
bool TForm2::isLogin()
{

return login;
}
这个定义函数 对吗 前面的代码中调用到它 连接form1的时候 好像是这的错误
ccrun.com 2010-06-08
  • 打赏
  • 举报
回复
真服了你了。去掉this->只是顺手,重点是login变量的定义。你居然没有看不出来?
joyarthur 2010-06-08
  • 打赏
  • 举报
回复
大哥 你上面改的主要是去掉了 this-> 什么理由 我现在还是不能实现由登陆界面跳到原先的主界面form1上 帮个忙看看
ccrun.com 2010-06-08
  • 打赏
  • 举报
回复
啊。。。。,果然不出我所料。

还是我改给你看吧。仅修改Form2的cpp文件:
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
bool login;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
login = false;
}
//---------------------------------------------------------------------------

void __fastcall TForm2::Button1Click(TObject *Sender)
{
if (Edit1->Text != "111" || Edit2->Text != "111")
MessageDlg("用户名或密码错!", mtWarning, TMsgDlgButtons() << mbYes, 0);
else
{
login = true;
MessageBox(NULL,"欢迎您登入维修中心信息系统","Hello!",MB_OK);
Close();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button2Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
bool TForm2::isLogin()
{
return login;
}
joyarthur 2010-06-08
  • 打赏
  • 举报
回复
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <jpeg.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TPanel *Panel1;
TButton *Button1;
void __fastcall FormCreate(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

#include <vcl.h>
#pragma hdrstop

//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
USEFORM("Unit2.cpp", Form2);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
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;
}
//---------------------------------------------------------------------------
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
TForm2 *form2 = new TForm2(this);// 实例化窗体Form2对应的类TForm2
form2->ShowModal(); // 以模态方式显示窗口

if(!form2->isLogin())
{ // 没有通过验证
Application->ShowMainForm=false; // 不显示主窗体
// Application->Terminate(); // 退出应用程序
PostQuitMessage(0);
}

delete form2; // 销毁对象
}
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <jpeg.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TPanel *Panel1;
TButton *Button1;
void __fastcall FormCreate(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
bool login;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
bool login = false;
}
//---------------------------------------------------------------------------

void __fastcall TForm2::Button1Click(TObject *Sender)
{
bool login;
if(Edit1->Text!="111" || Edit2->Text!="111")
MessageDlg("用户名或密码错!", mtWarning, TMsgDlgButtons() << mbYes, 0);
else
{
login = true;
MessageBox(NULL,"欢迎您登入维修中心信息系统","Hello!",MB_OK);
this->Close();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button2Click(TObject *Sender)
{
this->Close();
}
//---------------------------------------------------------------------------
bool TForm2::isLogin()
{

return login;
}
//----------------------------------------------------大哥 你看看 我是新手
ccrun.com 2010-06-08
  • 打赏
  • 举报
回复
你把你改后的代码再贴出来。
joyarthur 2010-06-08
  • 打赏
  • 举报
回复
bool TForm2::isLogin()
{
return login;
}
定义是这么 看到了 谢谢 我改了 但现在还是连接不到form1
ccrun.com 2010-06-08
  • 打赏
  • 举报
回复
你没有看到我在3楼给你的回复?
joyarthur 2010-06-08
  • 打赏
  • 举报
回复
form2->isLogin() 没有定义主要是不知道什么意思 大家帮改下
ccrun.com 2010-06-08
  • 打赏
  • 举报
回复
你这代码从哪弄来的?

form2中,你需要将 bool login; 定义成全局变量,Button1Click函数和isLogin函数中的login应该用同一个变量才有意义。

13,825

社区成员

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

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