**请帮忙分析一段代码?**

mjer_pan 2003-08-26 09:06:59
//Form1:封面表单
//Form2: 登录表单
//Form3:主控表单

在Form1中设一个Timer1和CSpinEdit1
Form1:OnTimer()
{
CSpinEdit1->value=0;
CSpinEdit1->value++;
if(CSpinEdit1->value >= 2){ //这里的2代表多长时间?
Form1->Hide();
Form2->Show();
Timer1->Enable=False;
}
}
用上面的代码执行后,Form1一直存在,Form2并不会显示,是何原因?
...全文
40 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
智慧明净 2003-08-27
  • 打赏
  • 举报
回复

CSpinEdit1->value=0;
问题就在这,“ CSpinEdit1->value=0”它不放在Timer内就可以了。
linjl 2003-08-27
  • 打赏
  • 举报
回复
把 CSpinEdit1->value=0; 放到 Form1:FormCreate() 里就搞定了。
lovebcb 2003-08-27
  • 打赏
  • 举报
回复
给你我写的这个吧,有登陆窗体和启动窗体的。


///////// xjglp.cpp ////////////////////////////////////////
#include <vcl.h>
#include "Logou.h"
#include "PassLogou.h"
#pragma hdrstop
USEFORM("xjglu.cpp", MainForm);
USEFORM("Logou.cpp", LogoForm);
USEFORM("PassLogou.cpp", LogoPWForm);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{

try
{

HANDLE hMutex = CreateMutex ( NULL, false, "Xjglp" ) ;
HANDLE windowhandle;
if ( WaitForSingleObject ( hMutex, 0 ) == WAIT_TIMEOUT )
{
// 说明指定的窗体已经存在,不允许程序重复运行
Application->MessageBox("学生管理系统已经启动,再次启动可能会造成数据丢失",
"错误",MB_ICONSTOP);
exit ( 0 ) ;//结束这个程序!
}
else //指定的窗体没有存在,则正常
{
LogoForm=new TLogoForm(Application);//建构
LogoForm->Show();//显示
LogoForm->Update();//调用Update强制启动是重画封面窗口
Sleep(1000);


//封面窗口析构
LogoForm->Hide();
LogoForm->Close();
delete LogoForm;

//密码登陆窗口文件弹出
TLogoPWForm *pForm=new TLogoPWForm(Application);
if(pForm->ShowModal() == IDOK ) //如果返回为IDOK,则密码为真;否则是假;
{
//显示主窗体
Application->Initialize();
Application->CreateForm(__classid(TMainForm), &MainForm);
Application->Run();
}

//密码窗口析构
pForm->Hide();
//将密码窗口的ClientDataSet1关掉
if(pForm->ClientDataSet1->Active==true)
pForm->ClientDataSet1->Close();
pForm->Close();
delete pForm;
}
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
//---------------------------------------------------------------------------

/////////////////////////////////////////////////////////////
// PassLogou.cpp //
// 登陆窗体,有一个ComboBox用来选择用户名, //
// Edit1用来输入密码口令, //
// 还有确认和放弃两个BitBtn: //
// 确认的ModalResult是mrNone ; //
// 放弃的ModalResult是mrCancel 。 //
/////////////////////////////////////////////////////////////

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

#include <vcl.h>
#pragma hdrstop

#include "PassLogou.h"
#include <inifiles.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "XPMenu"
#pragma resource "*.dfm"
TLogoPWForm *LogoPWForm;
AnsiString cPath=ExtractFilePath(Application->ExeName)+"data\\";
//---------------------------------------------------------------------------
__fastcall TLogoPWForm::TLogoPWForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TLogoPWForm::FormCreate(TObject *Sender)
{
//把密码数据库打开

ClientDataSet1->Active=true;
ClientDataSet1->First();
while(!ClientDataSet1->Eof)
{
ComboBox1->Items->Add(ClientDataSet1->FieldByName("用户ID")->Value);
ClientDataSet1->Next();
}
if(ComboBox1->Items->Count!=0)
ComboBox1->ItemIndex=0;
ClientDataSet1->RecNo=ComboBox1->ItemIndex+1;
}
//---------------------------------------------------------------------------

void __fastcall TLogoPWForm::ComboBox1Change(TObject *Sender)
{
ClientDataSet1->RecNo=ComboBox1->ItemIndex+1;
}
//---------------------------------------------------------------------------




void __fastcall TLogoPWForm::BitBtn1Click(TObject *Sender)
{

// 当点击“确认”BitBtn时
AnsiString userID,userPW;
userID=ComboBox1->Text;
userPW=Edit1->Text;
flag=-1;
if(userPW==ClientDataSet1->FieldByName("密码")->Value)
{
ModalResult = mrOk; //返回值为mrOk
flag=ClientDataSet1->FieldByName("权限")->Value;
//把DBGridEh1是否可视存到文件
TIniFile *ini;
ini = new TIniFile(ChangeFileExt( Application->ExeName, ".INI" ) );
ini->WriteInteger( "Flag", "flag", flag );
ini->WriteString( "Flag", "userID", userID );
delete ini;
}
else
{
Edit1->Clear();
MessageBox(NULL,"登陆口令错误!",
"系统信息",MB_OK+MB_ICONSTOP);
}
}
//---------------------------------------------------------------------------


lovebcb 2003-08-27
  • 打赏
  • 举报
回复
封面窗口见
http://expert.csdn.net/Expert/topic/2191/2191460.xml?temp=.1718714
toby 2003-08-26
  • 打赏
  • 举报
回复
CSpinEdit1->value=0;

这就是问题每次进来都会把value置0,再++不过也是1
后面的条件当然有问题了!
lovebcb 2003-08-26
  • 打赏
  • 举报
回复
更正
CSpinEdit1->value++;又让这个值增为1
mjer_pan 2003-08-26
  • 打赏
  • 举报
回复
能请教一下封面窗口是如何做的吗?
lovebcb 2003-08-26
  • 打赏
  • 举报
回复
Timer每自动增加一个时间段,你都让
CSpinEdit1->value=0; 这个值重置为0
CSpinEdit1->value++;又让这个值增为0
那么if(CSpinEdit1->value >= 2)//这里永远只能是1,而不会是2。

再说封面窗口也不是这么写啊?

13,824

社区成员

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

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