Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ExcelApplication1WorkbookBeforeClose не получается закрыт Excel [D7, WinXP]


Xmen ©   (2012-01-25 11:16:00) 

У меня есть прога которая открывает сжаты файл из базы и разархивирует и отображает Excel файл на экране и на обработчика закрытия файла я прописал этот код.
procedure TAnalizForm.ExcelApplication1WorkbookBeforeClose(ASender: TObject; const Wb: _Workbook; var Cancel: WordBool);
begin
 if MessageBox(0,'Закрывается Excel Сохранить данные в базе?','Сохранение в базе', MB_OKCANCEL or MB_TOPMOST)=IDOK  then
    begin
      path:= ExtractFilePath(Application.ExeName);
      //Wb.Close(False,EmptyParam,EmptyParam,1);
      ExcelWorksheet1.Disconnect;
      ExcelApplication1.Quit;
      ExcelApplication1.Quit;
      ExcelApplication1.Disconnect;
      ExcelApplication1.Free;

      ExecAndWait(path+'rar.exe',' a -r -ep1 -df aa.rar temp\*',SW_HIDE);
      DM.dtsDog.Edit;
      TBlobField(DM.dtsDog.FieldByName('prodoc')).LoadFromFile(path+'aa.rar');
      DM.dtsDog.Post;
      DM.TR.CommitRetaining;

      DeleteFile(fName);
    end
 else
    begin
      ExcelWorksheet1.Disconnect;
      ExcelApplication1.Quit;
      ExcelApplication1.Disconnect;
      ExcelApplication1.Free;
    end;
end;


Excel в процессе работы не закрывается и висит.
Как нежно правильно закрыть Excel. Если не закрыть то архивирование не правильно получается.


дикий   (2012-01-27 11:01:00) [1]

больно слышать.


Xmen   (2012-01-27 10:19:00) [2]

да но в ExcelApplication1 нет события after closing и before close.


дикий   (2012-01-27 10:02:00) [3]

Я на пямять не помню чего там есть, но, кэп говорит что:
после закрытия = after closing
а
before close = перед закрыть


Xmen   (2012-01-27 09:19:00) [4]

как определить что ExcelApplication1 закрывается?
мне нужно почистит временный каталог после закрытия ексел документа.
procedure TForm.ExcelWorkbook1Deactivate(Sender: TObject);
begin
     DeleteFile(fName);
     RemoveDir('temp\');
end;


Xmen   (2012-01-26 07:56:00) [5]

как тогда можно уловить закрытие Excel, чтобы потом архивировать документы и почистить его папки?


brother   (2012-01-25 14:46:00) [6]

ты не понял, событие у тебя BeforeClose - перед закрытием... а ты уже начинаешь архивировать, остальное - под чутким контролем доктора)


Xmen   (2012-01-25 13:02:00) [7]

То есть я сделал ошибку
>      ExcelApplication1.Quit;
>      ExcelApplication1.Quit;
>      ExcelApplication1.Disconnect;
>      ExcelApplication1.Free;
поместив его в внутр WorkbookBeforeClose


brother   (2012-01-25 11:46:00) [8]

ну и это зачем?

>      ExcelApplication1.Quit;
>      ExcelApplication1.Quit;
>      ExcelApplication1.Disconnect;
>      ExcelApplication1.Free;


>      ExcelApplication1.Quit;
>      ExcelApplication1.Disconnect;
>      ExcelApplication1.Free;


brother   (2012-01-25 11:41:00) [9]

это не смущает?
TAnalizForm.ExcelApplication1Workbook BeforeClose


Наверх

Титульная страница Поиск, карта сайта Написать письмо