Создаём приложение в среде Borland Delphi 7, иллюстрирующее работу многопоточных приложений.
Задание к лабораторной №3: В созданном в задании 1 приложении добавить формирование отчетов в Exel Формирование и вывод отчета организовать в отдельном потоке.
Результаты работы: в имеющееся приложение были добавлены код вывода таблицы в Exel отдельным потоком и кнопка (Рисунок 7).
Рисунок 7 – Многопоточное приложение |
Вначале был создан поток следующим образом:
tr:=beginthread(nil,0,addr(TForm1.axe),nil,0,id);
После этого в этот поток был внесён код для вывода таблицы в Exel c помощью следующего кода:
procedure TForm1.axe;
var
i,j,s:integer;
XL,xlb:variant;
begin
CoInitialize(nil);
XL:=CreateOleObject('Excel.Application');
XL.DisplayAlerts:= false;
xlb:=xl.workbooks.add;
xl.visible:=false;
table1.First;
for j:=1 to table1.FieldCount do
xlb.WorkSheets[1].Columns[j].ColumnWidth:= 17;
for i:=0 to table1.FieldCount-1 do
xlb.WorkSheets[1].Cells[1,i+1]:=table1.fields[i].fieldname;
s:=2;
for i:=0 to table1.RecordCount-1 do
begin
for j:=0 to table1.FieldCount-1 do
xlb.WorkSheets[1].Cells[s,j+1]:=table1.Fields[j].AsString;
inc(s);
table1.Next;
end;
xl.visible:=true;
CoUninitialize;
CloseHandle(tr);
end;
end;