我在form2里面做了几个Radiobutton 当点在相应的 点上的时候会跳到对应的form上去。可问题是,当我在编译的时候,出现
[C++ Error] Unit2.cpp(44): E2451 Undefined symbol 'Form4'
[C++ Error] Unit2.cpp(47): E2451 Undefined symbol 'Form5'
[C++ Error] Unit2.cpp(50): E2451 Undefined symbol 'Form6'
我想知道这是怎么回事? 我在头文件上定义了它们了的,而且 为什么只显示 Form4,Form5,Form6有问题呢Form3
没有显示有问题? 我看过了,Form4,5,6和Form3的没什么差别呀.大侠指教
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#include "Unit3.h"
#include "Unit4.h"
#include "Unit5.h"
#include "Unit6.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
if (rdbt1->Checked==true)
Form2->Hide();
Form3->Show();
if (rdbt2->Checked==true)
Form2->Hide();
Form4->Show();
if (rdbt3->Checked==true)
Form2->Hide();
Form5->Show();
if (rdbt4->Checked==true)
Form2->Hide();
Form6->Show();
}
12 个解决方案
#1
检查 4 5 6窗体名称是否与使用的一样
void __fastcall TForm2::Button1Click(TObject *Sender)
{
if (rdbt1->Checked==true)
{
Form2->Hide();
Form3->Show();
}
if (rdbt2->Checked==true)
{
Form2->Hide();
Form4->Show();
}
if (rdbt3->Checked==true)
{
Form2->Hide();
Form5->Show();
}
if (rdbt4->Checked==true)
{
Form2->Hide();
Form6->Show();
}
}
void __fastcall TForm2::Button1Click(TObject *Sender)
{
if (rdbt1->Checked==true)
{
Form2->Hide();
Form3->Show();
}
if (rdbt2->Checked==true)
{
Form2->Hide();
Form4->Show();
}
if (rdbt3->Checked==true)
{
Form2->Hide();
Form5->Show();
}
if (rdbt4->Checked==true)
{
Form2->Hide();
Form6->Show();
}
}
#2
应该是头文件引起的。
#3
呵呵~有意思。试了下没有问题啊。
帮顶一下。
帮顶一下。
#4
建议你把unit4.h也帖上来看看吧
#5
楼上大哥要的 Unit4.h
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit4.h"
#include "math.h"
#include "math.hpp"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm4 *Form4;
//---------------------------------------------------------------------------
float Un,Nn,Mn,Pn; //额定电压,额定转速,额定转矩 ,额定功率
float D1,L1; //电枢直径,电枢铁心长度
float Pa; //电动机的计算功率
__fastcall TForm4::TForm4(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm4::Button1Click(TObject *Sender)
{
int i=0;
try
{
Un=StrToFloat(Edit1->Text);
i++;
Mn=StrToFloat(Edit2->Text);
Pn=StrToFloat(Edit3->Text);
Pa=(1+1.16)/(3*0.58)*Pn;
D1=3670*Pa/1.1/3000;
D1=Power(D1,(float)1/3);
Label2->Caption=D1;
L1=1.1*D1;
Label3->Caption=L1;
}
catch(EConvertError &e)
{
if(i==0)
ShowMessage("额定电压输入错误");
else
ShowMessage("额定转速或额定功率输入错误");
}
}
//---------------------------------------------------------------------------
void __fastcall TForm4::Button2Click(TObject *Sender)
{
Close();
}
还是 不行,不知道为什么 谢了 ~~
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit4.h"
#include "math.h"
#include "math.hpp"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm4 *Form4;
//---------------------------------------------------------------------------
float Un,Nn,Mn,Pn; //额定电压,额定转速,额定转矩 ,额定功率
float D1,L1; //电枢直径,电枢铁心长度
float Pa; //电动机的计算功率
__fastcall TForm4::TForm4(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm4::Button1Click(TObject *Sender)
{
int i=0;
try
{
Un=StrToFloat(Edit1->Text);
i++;
Mn=StrToFloat(Edit2->Text);
Pn=StrToFloat(Edit3->Text);
Pa=(1+1.16)/(3*0.58)*Pn;
D1=3670*Pa/1.1/3000;
D1=Power(D1,(float)1/3);
Label2->Caption=D1;
L1=1.1*D1;
Label3->Caption=L1;
}
catch(EConvertError &e)
{
if(i==0)
ShowMessage("额定电压输入错误");
else
ShowMessage("额定转速或额定功率输入错误");
}
}
//---------------------------------------------------------------------------
void __fastcall TForm4::Button2Click(TObject *Sender)
{
Close();
}
还是 不行,不知道为什么 谢了 ~~
#6
试一下把头文件放到最上面, 变成这样:
#include <vcl.h>
#include <Unit2.h>
#include <Unit3.h>
#include <Unit4.h>
#include <Unit5.h>
#include <Unit6.h>
#pragma hdrstop
这个问题我也不是很清楚, 我用的CBC是网上下载的, 699MB的那个ISO,安装的时候提示我插入第2张盘, 我直接点了取消
然后我最近在用它做毕业设计, 我的第一个程序就是把头文件放到最开始的, 然后能调用其它窗体中的内容; 但第二个程序的时候, 就不行了, 我又改放到下面, 就好像楼主你的那样子, 就行了
具体原因为什么会这样我也不清楚
#include <vcl.h>
#include <Unit2.h>
#include <Unit3.h>
#include <Unit4.h>
#include <Unit5.h>
#include <Unit6.h>
#pragma hdrstop
这个问题我也不是很清楚, 我用的CBC是网上下载的, 699MB的那个ISO,安装的时候提示我插入第2张盘, 我直接点了取消
然后我最近在用它做毕业设计, 我的第一个程序就是把头文件放到最开始的, 然后能调用其它窗体中的内容; 但第二个程序的时候, 就不行了, 我又改放到下面, 就好像楼主你的那样子, 就行了
具体原因为什么会这样我也不清楚
#7
头文件问题
#8
你有没有在unit2.h这个文件里说明Form的这几个类型啊.
#9
有意思,还没见过这样的问题, 关注!
#10
看下你的unit4.h,unit5.h,unit6.h是否在当前工程里,再不行就新建form把原来form上的东西都拷过来。
bcb经常会出现这样的错误。
bcb经常会出现这样的错误。
#11
很有可能是名字问题。窗口都有两个名字可供设置,第一个储存窗口时要设置,默认为Unit1,这个名字用来调头文件时用,另一个在属性里设置Name,这个名字用来对窗体操作时引用,默认为Form?。
严格地说,还有一个,在Caption里,是将来窗体运行时显示的。
出现那样的问题应该是三个名字搞混了吧?
严格地说,还有一个,在Caption里,是将来窗体运行时显示的。
出现那样的问题应该是三个名字搞混了吧?
#12
错误提示是因为没定义Tform,那就定义一下啊,在具有切换功能的控件界面如在Tform2,就在头文件下边TForm2 *Form2后边接着添加*Form4,*Form5
#1
检查 4 5 6窗体名称是否与使用的一样
void __fastcall TForm2::Button1Click(TObject *Sender)
{
if (rdbt1->Checked==true)
{
Form2->Hide();
Form3->Show();
}
if (rdbt2->Checked==true)
{
Form2->Hide();
Form4->Show();
}
if (rdbt3->Checked==true)
{
Form2->Hide();
Form5->Show();
}
if (rdbt4->Checked==true)
{
Form2->Hide();
Form6->Show();
}
}
void __fastcall TForm2::Button1Click(TObject *Sender)
{
if (rdbt1->Checked==true)
{
Form2->Hide();
Form3->Show();
}
if (rdbt2->Checked==true)
{
Form2->Hide();
Form4->Show();
}
if (rdbt3->Checked==true)
{
Form2->Hide();
Form5->Show();
}
if (rdbt4->Checked==true)
{
Form2->Hide();
Form6->Show();
}
}
#2
应该是头文件引起的。
#3
呵呵~有意思。试了下没有问题啊。
帮顶一下。
帮顶一下。
#4
建议你把unit4.h也帖上来看看吧
#5
楼上大哥要的 Unit4.h
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit4.h"
#include "math.h"
#include "math.hpp"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm4 *Form4;
//---------------------------------------------------------------------------
float Un,Nn,Mn,Pn; //额定电压,额定转速,额定转矩 ,额定功率
float D1,L1; //电枢直径,电枢铁心长度
float Pa; //电动机的计算功率
__fastcall TForm4::TForm4(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm4::Button1Click(TObject *Sender)
{
int i=0;
try
{
Un=StrToFloat(Edit1->Text);
i++;
Mn=StrToFloat(Edit2->Text);
Pn=StrToFloat(Edit3->Text);
Pa=(1+1.16)/(3*0.58)*Pn;
D1=3670*Pa/1.1/3000;
D1=Power(D1,(float)1/3);
Label2->Caption=D1;
L1=1.1*D1;
Label3->Caption=L1;
}
catch(EConvertError &e)
{
if(i==0)
ShowMessage("额定电压输入错误");
else
ShowMessage("额定转速或额定功率输入错误");
}
}
//---------------------------------------------------------------------------
void __fastcall TForm4::Button2Click(TObject *Sender)
{
Close();
}
还是 不行,不知道为什么 谢了 ~~
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit4.h"
#include "math.h"
#include "math.hpp"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm4 *Form4;
//---------------------------------------------------------------------------
float Un,Nn,Mn,Pn; //额定电压,额定转速,额定转矩 ,额定功率
float D1,L1; //电枢直径,电枢铁心长度
float Pa; //电动机的计算功率
__fastcall TForm4::TForm4(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm4::Button1Click(TObject *Sender)
{
int i=0;
try
{
Un=StrToFloat(Edit1->Text);
i++;
Mn=StrToFloat(Edit2->Text);
Pn=StrToFloat(Edit3->Text);
Pa=(1+1.16)/(3*0.58)*Pn;
D1=3670*Pa/1.1/3000;
D1=Power(D1,(float)1/3);
Label2->Caption=D1;
L1=1.1*D1;
Label3->Caption=L1;
}
catch(EConvertError &e)
{
if(i==0)
ShowMessage("额定电压输入错误");
else
ShowMessage("额定转速或额定功率输入错误");
}
}
//---------------------------------------------------------------------------
void __fastcall TForm4::Button2Click(TObject *Sender)
{
Close();
}
还是 不行,不知道为什么 谢了 ~~
#6
试一下把头文件放到最上面, 变成这样:
#include <vcl.h>
#include <Unit2.h>
#include <Unit3.h>
#include <Unit4.h>
#include <Unit5.h>
#include <Unit6.h>
#pragma hdrstop
这个问题我也不是很清楚, 我用的CBC是网上下载的, 699MB的那个ISO,安装的时候提示我插入第2张盘, 我直接点了取消
然后我最近在用它做毕业设计, 我的第一个程序就是把头文件放到最开始的, 然后能调用其它窗体中的内容; 但第二个程序的时候, 就不行了, 我又改放到下面, 就好像楼主你的那样子, 就行了
具体原因为什么会这样我也不清楚
#include <vcl.h>
#include <Unit2.h>
#include <Unit3.h>
#include <Unit4.h>
#include <Unit5.h>
#include <Unit6.h>
#pragma hdrstop
这个问题我也不是很清楚, 我用的CBC是网上下载的, 699MB的那个ISO,安装的时候提示我插入第2张盘, 我直接点了取消
然后我最近在用它做毕业设计, 我的第一个程序就是把头文件放到最开始的, 然后能调用其它窗体中的内容; 但第二个程序的时候, 就不行了, 我又改放到下面, 就好像楼主你的那样子, 就行了
具体原因为什么会这样我也不清楚
#7
头文件问题
#8
你有没有在unit2.h这个文件里说明Form的这几个类型啊.
#9
有意思,还没见过这样的问题, 关注!
#10
看下你的unit4.h,unit5.h,unit6.h是否在当前工程里,再不行就新建form把原来form上的东西都拷过来。
bcb经常会出现这样的错误。
bcb经常会出现这样的错误。
#11
很有可能是名字问题。窗口都有两个名字可供设置,第一个储存窗口时要设置,默认为Unit1,这个名字用来调头文件时用,另一个在属性里设置Name,这个名字用来对窗体操作时引用,默认为Form?。
严格地说,还有一个,在Caption里,是将来窗体运行时显示的。
出现那样的问题应该是三个名字搞混了吧?
严格地说,还有一个,在Caption里,是将来窗体运行时显示的。
出现那样的问题应该是三个名字搞混了吧?
#12
错误提示是因为没定义Tform,那就定义一下啊,在具有切换功能的控件界面如在Tform2,就在头文件下边TForm2 *Form2后边接着添加*Form4,*Form5