- •Содержание
- •Лабораторная работа №1 (10 баллов)
- •Задание 5.
- •Работа с меню
- •Добавление в меню списка открытых документов
- •Лабораторная работа №5 (10 баллов). Визуализация решения задачи на плоскости
- •Лабораторная работа №6 (10 баллов).
- •Задания к самостоятельной работе
- •Создание базы данных
- •Описание работы
- •1. Интерфейс drag&drop
- •2. Автоматизация ActiveX
- •XlApp,Sheet,Colum:Variant;
- •Index,I:Integer;
- •Inc(index);
- •Inc(Index);
XlApp,Sheet,Colum:Variant;
Index,I:Integer;
begin
XLApp:= CreateOleObject('Excel.Application'); { строка создаёт объект Excel и записывает его в переменную XLApp.}
XLApp.Visible:=true; { строка заставляет запустить сам Excel.}
XLApp.Workbooks.Add(-4167); { добавляем новую рабочую книгу. Число в скобках – это константа, которая означает создание книги и её изменять нельзя. }
XLApp.Workbooks[1].WorkSheets[1].Name:='Отчёт'; { даtv название созданной книге. Это действие не обязательно, но тогда будет название по умолчанию "Лист 1".}
{ Теперь у нас Excel запущен и создана новая книга. Можно переходить к
впечатыванию данных. Но прежде чем это сделать отформатируем колонки и строки. Для этого получаем указатель на колонки рабочей книги Colum.}
Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Columns;
Colum.Columns[1].ColumnWidth:=20; { последовательно изменяем ширину колонок }
Colum.Columns[2].ColumnWidth:=20;
Colum.Columns[3].ColumnWidth:=20;
Colum.Columns[4].ColumnWidth:=20;
Colum.Columns[5].ColumnWidth:=20;
Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Rows; { в ту же переменную записываем указатель на строки рабочей книги и в следующих строках устанавливаем параметры шрифта}
Colum.Rows[2].Font.Bold:=true;
Colum.Rows[1].Font.Bold:=true;
Colum.Rows[1].Font.Color:=clBlue;
Colum.Rows[1].Font.Size:=14;
{Теперь можно выводить данные. Для этого получаем указатель на лист Sheet. Для того, чтобы вывести данные, нужно просто присвоить значение в Sheet.Cells[строка, колонки].
Sheet:=XLApp.Workbooks[1].WorkSheets['Отчёт']; {}
Sheet.Cells[1,2]:='Телефонный справочник';
Sheet.Cells[2,1]:='Фамилия';
Sheet.Cells[2,2]:='Имя';
Sheet.Cells[2,3]:='e-mail';
Sheet.Cells[2,4]:='Город';
Sheet.Cells[2,5]:='Дата рождения';
{Далее работаем с записями таблицы}I
ndex:=3;
DataModule1.BookTable.First;
for i:=0 to DataModule1.BookTable.RecordCount-1 do
begin
Sheet.Cells[index,1]:=DataModule1.BookTable.Fields.Fields[1].AsString;
Sheet.Cells[index,2]:=DataModule1.BookTable.Fields.Fields[2].AsString;
Sheet.Cells[index,3]:=DataModule1.BookTable.Fields.Fields[3].AsString;
Sheet.Cells[index,4]:=DataModule1.BookTable.Fields.Fields[5].AsString;
Sheet.Cells[index,5]:=FormatDateTime('dddddd',
DataModule1.BookTable.Fields.Fields[6].AsDateTime);
Inc(index);
DataModule1.BookTable.Next;
end;
Можно использовать следующий способ вывод данных из сетки:
for i:=1 to Table.RecordCount do
begin
for j:=1 to DBGrid.Columns.Count do
Sheet.Cells[Index, j]:=DBGrid.Fields[j-1].AsString;
Inc(Index);
Table.Next;
end;
Это просто общий пример не связанный с нашей программой. Здесь так же запускается цикл по всем строкам таблицы. Но вывод данных просходит по новому. Для этого запускается ещё один цикл от 1 до количества колонок в сетке DBGrid. А внутри этого цикла присваивается очередной колонке Excel, значение из такой же колонки сетки DBGrid.
Список литературы