进度条问题,达人入!

codestorm 2004-12-14 10:15:02
小弟在一个form中利用进度条表示进度。
可是为什么form中的事件无法正常响应?
向高手求教。。
cancel按钮必须点击两次才能关闭窗口,点击[关闭],进度条稍作停顿,然后继续前进。
代码我贴出来,麻烦看看怎么回事?
TCsvOutForm *CsvOutForm;
//---------------------------------------------------------------------------
__fastcall TCsvOutForm::TCsvOutForm(TComponent* Owner)
: TForm(Owner)
{
flag = false;
}
__fastcall TCsvOutForm::~TCsvOutForm(void)
{
if( stream != NULL )
{
fclose( stream );
stream = NULL;
}
if( csvstream != NULL )
{
fclose( csvstream );
csvstream = NULL;
}
if( filename != NULL)
{
delete [] filename;
filename = NULL;
}
}
//---------------------------------------------------------------------------
void __fastcall TCsvOutForm::m_btn_cancelClick(TObject *Sender)
{
flag = true;
CsvOutForm->ModalResult = mrOk;
}
//---------------------------------------------------------------------------
void __fastcall TCsvOutForm::FormActivate(TObject *Sender)
{
m_progressbar_csv->Position = 0;
convert();
CsvOutForm->ModalResult = mrOk;
}
//---------------------------------------------------------------------------

void __fastcall TCsvOutForm::onclose(TObject *Sender, TCloseAction &Action)
{
flag = true;
}
//---------------------------------------------------------------------------
void __fastcall TCsvOutForm::convert(void)
{

//进度条表示文件转换进度
for( position = 0 ; position <= max ; position ++ )
{
Application->ProcessMessages();
if(flag)
{
return;
}
Application->ProcessMessages();
.
.
workplace
.
}
}
谢谢了
...全文
108 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjy1001 2004-12-15
  • 打赏
  • 举报
回复
代码(似乎)没有问题

或修改如下:
void __fastcall TCsvOutForm::m_btn_cancelClick(TObject *Sender)
{
flag = true;
Application->ProcessMessages();//这句或许可以不要
Sleep(500); //增加
Application->ProcessMessages();//增加
CsvOutForm->ModalResult = mrOk;
Close();//这句或许可以不要
}
glassegg 2004-12-15
  • 打赏
  • 举报
回复
GZ
glassegg 2004-12-15
  • 打赏
  • 举报
回复
试试~

13,825

社区成员

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

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