程序运行是否运行所有的窗口的,如果是,怎么才可以只运行主窗口?(40分)

  • 主题发起人 zero_dot
  • 开始时间
Z

zero_dot

Unregistered / Unconfirmed
GUEST, unregistred user!
同上!
我的主窗口是输入一个用户名u_name,按ok,转如下一个页面。
我是想在下一个页面中得到主窗口的u_name,但是我在FormCreate时就要用,
我调试的时候就是得不到这个变量,所以我怀疑是程序运行顺序的问题。
 
你怎么定义的?
 
login.cpp//----------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <main.h>
#include "login.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Tlogin_on *login_on;
String c_name;
//---------------------------------------------------------------------------
__fastcall Tlogin_on::Tlogin_on(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall Tlogin_on::Button1Click(TObject *Sender)
{
if (Edit1->Text.Length()==0)
{
ShowMessage("您还没有输入妮称!");
}
else
if (Edit1->Text.Length()>0 &amp;&amp;
Edit1->Text.Length()<14)
{
for (int i=Edit1->Text.Length();i<14;i++)
{ Edit1->Text=Edit1->Text+'/20';
c_name=Edit1->Text;
}
mainfrm->Show();
login_on->Visible=false;
}
else
if(Edit1->Text.Length()==14)
{
c_name=Edit1->Text;
}
else
if (Edit1->Text.Length()>14)
{
ShowMessage(" 妮称长度不能超过14!");
Edit1->Text="";
}
}
//---------------------------------------------------------------------------
main.cpp----------------------
下面是FormCreate时的程序
void __fastcall Tmainfrm::FormCreate(TObject *Sender)
{
int i;
String sys;
if (c_name.Length()<14)
{ for (int j=c_name.Length();j<14;j++)
{ c_name=c_name+'/20';
}
}
sys="[系统公告]:欢迎"+c_name+"进入聊天室!";
i=sys.Length();
TMemoryStream *MyStream=new TMemoryStream();
MyStream->Write(&amp;sys[1],i);
NMUDP1->LocalPort=2222;
NMUDP1->RemotePort=2222;
NMUDP1->RemoteHost="210.28.33.255";
NMUDP1->ReportLevel=Status_Basic;
NMUDP1->SendStream(MyStream);
delete MyStream;
NMUDP1->ReportLevel=Status_Trace;
}
//---------------------------------------------------------------------------

 
你的mainfrm的create在Tlogin_on::Button1Click之前就执行了
把mainfrm从autocreate中移走在Tlogin_on::Button1Click创建
应该可以。
 
你是不是在程序启动时,就创建了mainfrm。你在button1.onclick中指定mainfrm中的C_name,肯定得不到值,因为在button1.onclick中并没有创建mainfrm。
你可以在button1.onclick中并创建mainfrm,或者在mainfrm的onActivate中赋值。
 
将MainForm从你的项目autocreate移去;
 
我是刚学的c++ builder ,我不知道怎么做才可以,麻烦可一说详细点吗?我本来就怀疑是这个问题,但是我不知道怎么操作啊。大哥,帮帮忙拉!
 
打开工程文件看看,或者project-》options-》forms里面看。
 
多人接受答案了。
 
顶部