![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
события при закрытие 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;
или что преследуется то?