Доброго всем времени суток!
Столкнулся с проблемой при использовании компонента TExcelApplication.
Попробую описать суть проблемы:
И так...Я использую класс ExcelExport как обертку вокруг методов компонента TExcelApplication, который реализует нужный
мне функционал експорта данных в документ MS Excel.
//Конструктор:
//---------------------------------------------------------------
ExcelExport::ExcelExport(TComponent* cOwner)
: ExcelApplication(NULL), Worksheet(NULL)
{
ExcelApplication = new Excel_2k::TExcelApplication(cOwner);
Worksheet = new Excel_2k::TExcelWorksheet(cOwner);
}
//ExcelExport
//Деструктор:
//---------------------------------------------------------------
ExcelExport::~ExcelExport()
{
if (Worksheet)
{
Worksheet->Disconnect();
delete Worksheet;
Worksheet = NULL;
}
if (ExcelApplication)
{
ExcelApplication->set_UserControl(1);
ExcelApplication->Disconnect();
delete ExcelApplication;
ExcelApplication = NULL;
}
}
//~ExcelExport()
// Вызывается для ексорта даных из результирующего набора (клас Table) в документ
//---------------------------------------------------------------
void ExcelExport::BuildTable(const Table& t)
{
// тут происходит сам експорт....
}
//BuildTable(const Table& t)
// Вызивается для сохранения даных после того, как таблица заполнена.
//---------------------------------------------------------------
void ExcelExport::Save(const AnsiString &_FileName)
{
Worksheet->SaveAs(TVariant(FileName));
Worksheet->Disconnect();
ExcelApplication->ActiveWorkbook->Close(TVariant(0));
}
// Save(const AnsiString &_FileName)
Создается екземпляр данного класса в модуле — DLL'ке в которой содержится форма, где находятся настройки експорта и которую
загружаєт основной процес приложения. Так вот суть проблемы в следующем: После закрытия основного процесса приложения (предварительно выполнив експорт) окна форм закрываются, но процесс, при этом, не завершается (отображается в Диспечере задач).
Может кто-то уже решал даную проблему и может поделится опытом?
Или подскажет, что я делаю нетак?
Заранее благодарен,
С уважением...
Здравствуйте, <Аноним>, Вы писали:
А>Создается екземпляр данного класса в модуле — DLL'ке в которой содержится форма, где находятся настройки експорта и которую
А>загружаєт основной процес приложения. Так вот суть проблемы в следующем: После закрытия основного процесса приложения (предварительно выполнив експорт) окна форм закрываются, но процесс, при этом, не завершается (отображается в Диспечере задач).
А>Может кто-то уже решал даную проблему и может поделится опытом?
А>Или подскажет, что я делаю нетак?
А>Заранее благодарен,
А>С уважением...
Обычно для забарывания этого вариантовскую переменную, указывающую на ексель, приравнивают к нулю (в случае Делфи nill, билдер — null). Как утверждали очевидцы, нормально отпускает.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>