Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2015.02.15;
Скачать: CL | DM;

Вниз

события при закрытие Excel   Найти похожие ветки 

 
Xmen   (2014-01-10 09:52) [0]

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


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

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


 
Xmen   (2014-01-10 10:30) [2]

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

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


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

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

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

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


 
Xmen   (2014-01-10 10:41) [4]

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


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

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


 
Xmen   (2014-01-10 10:54) [6]

Вот код

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;


 
Inovet ©   (2014-01-10 11:12) [7]

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

Повелевает


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


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

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

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

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


 
brother ©   (2014-01-15 12:10) [9]

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



Страницы: 1 вся ветка

Текущий архив: 2015.02.15;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.006 c
2-1388863635
ghostdelvonte
2014-01-04 23:27
2015.02.15
Стрелки


11-1258454605
Dy1
2009-11-17 13:43
2015.02.15
GroupBox


15-1405339413
KSergey
2014-07-14 16:03
2015.02.15
Проблема: неожиданная реакция на клик мыши в открывшемся окне


2-1389285810
SKIPtr
2014-01-09 20:43
2015.02.15
узнать об изминении значения RadioButton


15-1404230456
0xdeadc0de
2014-07-01 20:00
2015.02.15
REST Client Library (XE)