Форум: "Начинающим";
Текущий архив: 2015.02.15;
Скачать: [xml.tar.bz2];
Внизсобытия при закрытие 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.019 c