Главная страница | назад





Article #19370: Printing Quick Reports in a thread

 Question and Answer Database
FAQ4370C.txt :Printing Quick Reports in a thread
Category :VCL
Platform :Win95/NT
Product :C++Builder1.0, C++Builder3.x, C++Builder4.x,
Question:
When I attempt to pring a Quick report in a thread the
application hangs. Is there any way to fix this?
Answer:
Yes, as it says in the TThread that is generated by the
File -> New ... -> Thread Object wizard, Methods and properties
in the VCL need to be called using Synchronize().
The following code show how:
//---------------------------------------------------------------------------
#include 
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// Important: Methods and properties of objects in VCL can only be
// used in a method called using Synchronize, for example:
//
// Synchronize(UpdateCaption);
//
// where UpdateCaption could look like:
//
// void __fastcall PrintQReport::UpdateCaption()
// {
// Form1->Caption = "Updated in a thread";
// }
//---------------------------------------------------------------------------
__fastcall PrintQReport::PrintQReport(bool CreateSuspended)
: TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
void __fastcall PrintQReport::Execute()
{
//---- Place thread code here ----
Synchronize(Print);
}
//---------------------------------------------------------------------------
void __fastcall PrintQReport::Print()
{
Form1->QuickRep1->Print();
}
//---------------------------------------------------------------------------
2/11/1999 10:50:10 AM

Last Modified: 01-SEP-99