Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб.раб.12, 13, 14(лит-ра.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
628 Кб
Скачать
☆

Упражнение 1. Работа с процессором

Для начала создадим библиотеку, файл с расширением MyExcel.pas, и все функции для удобства будем размещать в ней. Определимся с набором необходимых функций. Самыми простыми и необходимыми являются следующие: активизация Excel, создание новой книги, открытие ранее созданной книги, отображение книги (книг) и приложения Excel, запись информации в ячейку, запись книги на диск и выход (закрытие книги и приложения). Для создания объекта Excel.Application используем переменную E типа variant и библиотеку ComObj.

Рассмотрим следующий фрагмент кода:

uses ComObj, Classes;

var E:variant;

Function CreateExcel:boolean;

begin

CreateExcel:=true;

try

E:=CreateOleObject('Excel.Application');

except

CreateExcel:=false;

end;

end;

End;

Доступ к объекту Excel.Application в нашей функции CreateExcel получаем, используя процедуру CreateOleObject ('Excel.Application') стандартной библиотеки ComObj. Если редактор Excel не установлен в системе, то будет сгенерирована ошибка, и мы получим значение функции = false; если Excel установлен и объект будет создан, то получим значение функции = true. Эта функция создает объект E, свойства и методы которого мы будем использовать в дальнейшем. Если выполнить нашу функцию CreateExcel, то Excel будет запущен, но не будет отображен, потому что по умолчанию он запускается в фоновом режиме. Чтобы его активизировать (сделать видимым) или деактивировать (сделать невидимым), используем свойство visible объекта E. Оформим это в виде функции VisibleExcel. Скобки try except везде используются для обработки исключительных ситуаций.

Function VisibleExcel(visible:boolean): boolean;

begin

VisibleExcel:=true;

try

E.visible:=visible;

except

VisibleExcel:=false;

end;

End;

Используя эту функцию, мы можем показывать или скрывать Excel с документами.

Следующим шагом будет создание рабочей книги. Для этого используем метод Add, коллекции Workbooks объекта E.

Function AddWorkBook:boolean;

begin

AddWorkBook:=true;

try

E.Workbooks.Add;

except

AddWorkBook:=false;

end;

End;

Чтобы открыть ранее созданную рабочую книгу, используем ту же коллекцию Workbooks объекта E и метод Open. Смотрите нижеописанный оператор, с помощью которого мы открываем рабочую книгу и получаем на нее ссылку: book_:= Workbooks. Open(file_). Функция OpenWorkBook открывает книгу и возвращает True в случае успешного выполнения.

Function OpenWorkBook(file_: string):boolean;

begin

OpenWorkBook:=true;

try

E.Workbooks.Open(file_);

except

OpenWorkBook:=false;

end;

End;

Работая с книгой, мы должны иметь возможность добавлять или удалять в ней листы и присваивать им имена. Для работы с листами книги используется коллекция Sheets. Добавить новый лист можно, используя метод Add этой коллекции. Функция AddSheet реализует эту возможность и присваивает новому листу выбранное пользователем имя.

Function AddSheet(newsheet:string):boolean;

begin

AddSheet:=true;

try

E.Sheets.Add;

E.ActiveSheet.Name:=newsheet;

except

AddSheet:=false;

end;

End;

Создавая новые листы, мы должны иметь возможность и удалять их. Метод Delete, коллекции Sheets дает такую возможность. При удалении возможно появление диалогового окна Excel, которое потребует подтверждения операции. Чтобы отключить диалоговое окно Excel, необходимо использовать оператор E.DisplayAlerts:=False.

Function DeleteSheet(sheet:variant):boolean;

begin

DeleteSheet:=true;

try

E.DisplayAlerts:=False;

E.Sheets[sheet].Delete;

E.DisplayAlerts:=True;

except

DeleteSheet:=false;

end;

End;

Обычно книга Excel содержит более одного листа. Их количество содержится в свойстве Count коллекции Sheets.

Получаем количество листов книги

Function CountSheets:integer;

begin

try

CountSheets:=E.ActiveWorkbook.Sheets.Count;

except

CountSheets:=-1;

end;

End;

Записываем листы книги в value

Function GetSheets(value:TStrings):boolean; //

var a_:integer;

begin

GetSheets:=true;

value.Clear;

try

for a_:=1 to E.ActiveWorkbook.Sheets.Count do

value.Add(E.ActiveWorkbook.Sheets.Item[a_].Name);

except

GetSheets:=false;

value.Clear;

end;

End;

Выбираем лист

Function SelectSheet (sheet:variant):boolean;

begin

SelectSheet:=true;

try

E.ActiveWorkbook.Sheets.Item[sheet].Select;

except

SelectSheet:=false;

end;

End;

После внесения изменений необходимо сохранить рабочую книгу. Для этого используем метод SaveAs коллекции Workbooks или объекта ActiveWorkbook. Функция SaveWorkBookAs реализует эту возможность на Delphi. Используем E.DisplayAlerts:=False(True) для отключения (включения) диалогового окна подтверждения записи.

Function SaveWorkBookAs(file_:string): boolean;

begin

SaveWorkBookAs:=true;

try

E.DisplayAlerts:=False;

E.ActiveWorkbook.SaveAs(file_);

E.DisplayAlerts:=True;

except

SaveWorkBookAs:=false;

end;

End;

Одновременно может быть открыто несколько книг, в которые вносится или из которых получается информация. Их количество содержится в свойстве Count коллекции WorkBooks.

Для закрытия книги используется метод Close коллекции Workbooks или объекта ActiveWorkbook. Функция CloseWorkBook закрывает активный документ.

Function CloseWorkBook:boolean;

begin

CloseWorkBook:=true;

try

E.ActiveWorkbook.Close;

except

CloseWorkBook:=false;

end;

End;

Excel закрывается методом Quit объекта Application.

Function CloseExcel:boolean;

begin

CloseExcel:=true;

try

E.Quit;

except

CloseExcel:=false;

end;

End;

После того, как создан минимальный набор функций, можно переходить к демонстрации возможностей программирования Excel. Для этого создадим форму и разместим на ней кнопки, прописываем обработчик нажатия кнопки:

«Открыть приложение»:

begin

if not CreateExcel then exit;

messagebox(handle,'','Запускаем Excel.',0);

VisibleExcel(true);

«открыть книгу»:

OpenWorkBook(Edit1.text);

«создать книгу»:

AddWorkBook

«добавить лист»:

AddSheet('Новый лист');

«удалить лист»:

DeleteSheet(Edit3.text);

«выбрать лист»:

for a_:=1 to CountSheets do begin

ListBox1.ItemIndex:=a_-1;

SelectSheet(ListBox1. Items.Strings[a_-1]);

«сохранить книгу»:

SaveWorkBookAs('c:\1.xls');

«закрыть книгу»:

CloseWorkBook;

«закрыть приложение»:

CloseExcel;