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

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

события при закрытие Excel [D7, 2003]


Xmen ©   (2014-01-10 09:52:00) 

Привет.
сделал прогу открывает Excel COM методом. В форму разместил 3 компоненты ExcelApplication, ExcelWorkbooks, ExcelSheets.  при открытие и записи программно нет проблем. Мне теперь нужно сделать так чтобы при закрытие Excel уловить это событие и обработать его. Сохранить файл и архивировать его. Этот код написал в TForm1.ExcelApplication1WorkbookBeforeClose.
begin
   wb.Close();
   ExcelApplication1.Disconnect;
end;
После первого запроса на сохранения выполняется код. После этого этот событие заново сработает. Где я сделал ошибку? Как можно правильно это сделать? спасибо за ответ.


brother   (2014-01-15 12:10:00) [1]

Ааа мой мозг! Вы это спецом?


ВладОшин   (2014-01-10 12:11:00) [2]


> После первого запроса на сохранения выполняется код. После этого этот событие заново сработает. Где я сделал ошибку? Как можно правильно этосделать?

"Это" - что? что именно?

Если нужно, что бы не срабатывало - можно сказать что ExcelApplication1.OnWorkbookBeforeClose := nil;

>> ExcelApplication1 := nil;
не всегда работает
Когда выйдет за пределы видимости - тогда и грохнется сама.


Inovet   (2014-01-10 11:12:00) [3]

> [3] ВладОшин ©   (10.01.14 10:34)
> Вы утверждаете?

Повелевает


Xmen   (2014-01-10 10:54:00) [4]

Вот код

procedure TForm1.Button1Click(Sender: TObject);
var icid:Integer;
begin
icid:=LOCALE_SYSTEM_DEFAULT;
ExcelApplication1.ConnectKind:=ckNewInstance;
ExcelApplication1.AutoQuit:=true;
ExcelApplication1.Visible[icid]:=true;
ExcelApplication1.AutoConnect:=true;
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,icid));
ExcelWorksheet1.ConnectTo(ExcelApplication1.ActiveWorkbook.ActiveSheet as ExcelWorkSheet);
end;

procedure TForm1.ExcelApplication1WorkbookBeforeClose(ASender: TObject;
 const Wb: _Workbook; var Cancel: WordBool);
begin
 if MessageBox(0,'Закрывается ворд сохранить данные в базе?','Сохранение в базе', MB_OKCANCEL or MB_TOPMOST)=IDOK  then
    begin
    ...
     //код для сохранение в базе
    ...
     ExcelApplication1.Workbooks.Close(LOCALE_USER_DEFAULT);
     ExcelApplication1.Disconnect;
     ExcelApplication1.Quit;
     ExcelApplication1:=nil;
   end;
end;


Palladin   (2014-01-10 10:44:00) [5]

вы мне своим диалогои мозг сломали


Xmen   (2014-01-10 10:41:00) [6]

Извините я не понял ваш вопрос


ВладОшин   (2014-01-10 10:34:00) [7]

э.. смотрите:

я спросил: что преследуется то?
Вы не ответили.

Наоборот, спросили:
> можете уточнить  ответ.
Хотя.. может даже и не спросили :) Может, Вы утверждаете?  :))


Xmen   (2014-01-10 10:30:00) [8]

>>.OnBeforeClose := nil;
>>.OnWorkbookBeforeClose := nil;
>>или что преследуется то?

можете уточнить  ответ. спасибо


ВладОшин   (2014-01-10 10:06:00) [9]

.OnBeforeClose := nil;
.OnWorkbookBeforeClose := nil;
или что преследуется то?


Наверх

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