Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 590

Раздел: Delphi » Прочее
/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Добрый день.У меня такой вопрос:ниже приведена процедура экспорта данных в Excel.
Нужно ее запустить в отдельном потоке.

Приложение:
  1. procedure TForm10.SpeedButton8Click(Sender: TObject);
  2.  
  3. var
  4. exl:OleVariant;
  5. i,j:integer;
  6.  
  7. begin
  8. StatusBar1.Panels[2].Text:='Âûïîëíÿåòñÿ ýêñïîðò â Excel. Ïîæàëóéñòà ïîäîæäèòå.';
  9. exl:=CreateOleObject('Excel.Application');
  10. exl.Application.WorkBooks.Add;
  11. ADOQuery1.First;
  12. for i:=1 to ADOQuery1.RecordCount do
  13. begin
  14. for j:= 1 to DBGrid1.Columns.Count do
  15. begin
  16. exl.Application.WorkSheets.Item['Ëèñò1'].Cells.Item[1,j].FormulaR1C1:= DBGrid1.Columns[j-1].Title.Caption;
  17. exl.Application.WorkSheets.Item['Ëèñò1'].Cells.Item[i+1,j].FormulaR1C1:= DBGrid1.Fields[j-1].AsString;
  18. end;
  19. StatusBar1.Panels[3].Text:=Format('%3.2f', [100*(i*DBGrid1.Columns.Count)/(ADOQuery1.RecordCount*DBGrid1.Columns.Count)])+'%';
  20. ADOQuery1.Next;
  21. Application.ProcessMessages;
  22. end;
  23. ADOQuery1.First;
  24. StatusBar1.Panels[2].Text:='';
  25. StatusBar1.Panels[3].Text:='';
  26. exl.Visible:=True;
  27.  
  28. end;
  29.  


KilkaMS Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: KilkaMS (статус: Посетитель)
Вопрос отправлен: 22 мая 2007, 11:50
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 22 мая 2007, 12:55; участников в обсуждении: 1.
Venom

Venom (статус: 1-ый класс), 22 мая 2007, 12:55 [#1]:

Вообще, поток задается следующим образом:

procedure TCountObj.Execute;
begin
//тело исполняемой процедуры
...
//Если поток остановлен, то выйти.
if terminated then exit;
end;

создание потока:
File->New->Other->Thread Object
запускается с главной формы:
co:=TCountObj.Create(true);
co.Resume;
co.Priority:=tpLower;//приоритет
//остановка выполнения
co.Terminate;

TCountObj - название потока.
со - объект потока

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:55
Выполнено за 0.02 сек.