是不是CB的问题啊,无意中发现的,大家帮忙测试(300分)

  • 主题发起人 主题发起人 chenxz
  • 开始时间 开始时间
C

chenxz

Unregistered / Unconfirmed
GUEST, unregistred user!
问题描述:
在Form1中调出Form2,在Form2中作了一个循环,在循环过程中,如果Form1被最小化到任务
栏,则Form2不能正常close,如果不被最小化,则可以正常close。下面是form1和form的unit,如果需要demo留个mail。
Form1上放了一个timer和一个button,form2什么都没有。
unit1:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Timer1->Enabled = true;
Form2->StartProc();

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Timer1->Enabled = false;
Form2->StopProc();
}
//---------------------------------------------------------------------------

unit2:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
bool iShow;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm2::StartProc()
{
//TODO: Add your source code here
int i = 0;
this->Show();
iShow = true;
while (iShow)
{
this->Caption = IntToStr(i ++);
Application->ProcessMessages();
if (i > 100)
{
i = 0;
}
Sleep(50);
}
this->Close();
}
void __fastcall TForm2::StopProc()
{
//TODO: Add your source code here
iShow = false;
}
 
我帮你看年看。
apw@sina.com
 
是的,是关不了
 
我知道关不了,但是什么原因啊。
 
给我个Demo看看
zhongt@hi165.com
 
有趣,给我个Demo。
sealine_dfw@sina.com.cn
 
邮件都发了,怎么都没有结果啊。
 
没出现这种情况,我这里是Form1最小化时,Form2不可见
 
把你的Lib里的 .bpi文件 拷贝一个发给我。
sealine_dfw@sina.com.cn
 
Delphi也一样,呵呵,研究ing
 
to kerbcurb:
是不可见,但当form1恢复时,form2就出来了,这时form2是关闭不了的。
to SeaLine:
你要哪个啊,那么多,要来干什么呢?
 
你给的Memo在我的BC6运行不了,少了不少*.bpi文件。
 
to sealine:
手动到bpr文件中删除不用的bpi文件就行了。
to chenxz:
Form2中的Close只是隐藏窗口而已,估计是因为一级窗口(Form1)和二级窗口(Form2)的最大最小化的联动关系的影响,具体原理我也没查到。不过你可以最小化Form2再运行一次Button1,找到Form2恢复窗口就正常了。
 
记不清了,当时试验,好像是Form2恢复后,Form2可以被关闭
 
一级窗口和二级窗口是否存在主从关系,可以改进程序代码增加窗口控制函数来解决.
 
陈锡震
告诉我你的信箱
sunmh@dreamtel.com.cn
 
后退
顶部