Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2017.08.06;
Скачать: [xml.tar.bz2];

Вниз

Excell как OLE Object   Найти похожие ветки 

 
harisma ©   (2012-11-12 17:21) [0]

Работаю с Excell как с OLE Object. Создаю его так:

var
 ex, wb, ws, sb: oleVariant;
begin
   Ex := CreateOleObject("Excel.Application");
   SB := Ex.DisplayStatusBar;
   Ex.Interactive := False;
   Ex.ScreenUpdating := False;
   Ex.DisplayStatusBar := False;
   WB := Ex.Workbooks.Add(-4167);                
   WS := WB.WorkSheets[1];                        
........

Далее идет заполнение сетки листа данными, включая форматирование, формулы, данные и т. д.
То есть, в цикле бегается по исходным данным, также оформленным в виде сетки, и заполняется страница книги в Excell.
Сам процесс сбрасывания данных отображается на прогрессбаре в программе.
Приложение Excell запущено в фоновом режиме. Когда все данные сброшены, только тогда делаем Excell видимым пользователю.
Вот финальная часть кода:

   Ex.Visible := True; // Только теперь делаем приложение видимым
   Ex.Interactive := True;
   Ex.ScreenUpdating := True;
   Ex.DisplayStatusBar := SB;

И все бы тут хорошо, но на форме с прогресссбаром есть кнопка "Прервать". При нажатии на нее сброс данных в книгу Excell прекращается, но само приложение так и остается запущеным в фоновом режиме (это видно в диспетчере задач).
Поэтому вопрос: как программно "убить" именно этот процесс Excell, если была нажата кнопка "Прервать", причем чтобы случайно не был "убит" чужой процесс.


 
Ega23 ©   (2012-11-12 17:49) [1]

if Нажата_кнопка_прервать then
begin
 Ex.Quit;
 Ex := null;
end;


 
harisma ©   (2012-11-12 18:06) [2]


> if Нажата_кнопка_прервать then
> begin
>  Ex.Quit;
>  Ex := null;
> end;

Так уже пробовал - не срабатывает :( Все равно остается в памяти процесс.
А если написать 2 раза quit (как советуют на одном из форумов), тогда ругается что так делать нельзя :(


 
Anatoly Podgoretsky ©   (2012-11-12 18:27) [3]

> harisma  (12.11.2012 18:06:02)  [2]

Ну так использую не Ole, а COM объект


 
harisma ©   (2012-11-12 18:32) [4]

Нашел решение :)!!!
Надо перед Ex.Quit еще выставить Ex.DisplayAlerts := False. Тогда все классно закрывается.



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

Форум: "Основная";
Текущий архив: 2017.08.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.001 c
15-1461214250
KilkennyCat
2016-04-21 07:50
2017.08.06
А не планируется ли в начале июня встреча в Москве?


2-1442083956
vegarulez
2015-09-12 21:52
2017.08.06
Как подружить scrollbar + scrollbox.


15-1464595253
ВладОшин
2016-05-30 11:00
2017.08.06
Или в TwebBrowser из Tservice сделать Form.Submit .. или ?


15-1464348284
ttUser
2016-05-27 14:24
2017.08.06
Что такое fb_lock_xxx в Process Explorer в загруженных DLL?


3-1314350077
tomkat
2011-08-26 13:14
2017.08.06
FireBird 2.0 потерял свою базу с паролями





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский