Builder 6. Проблема с TExcelApplication.
От: Аноним  
Дата: 21.08.09 09:08
Оценка:
Доброго всем времени суток!
Столкнулся с проблемой при использовании компонента 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'ке в которой содержится форма, где находятся настройки експорта и которую
загружаєт основной процес приложения. Так вот суть проблемы в следующем: После закрытия основного процесса приложения (предварительно выполнив експорт) окна форм закрываются, но процесс, при этом, не завершается (отображается в Диспечере задач).

Может кто-то уже решал даную проблему и может поделится опытом?
Или подскажет, что я делаю нетак?

Заранее благодарен,
С уважением...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.