Дослідження об’єктної моделі та методів створення контролерів автоматизації MS Office

Розробка гнучкої довідкової системи, яка дозволяє наочно проілюструвати можливості управління додатками MS Office за допомогою програм, створених у середовищі Delphi. Система базується на використанні технології COM і об'єктних моделей MS Word і MS Excel.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык украинский
Дата добавления 25.10.2012
Размер файла 2,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Метод Add колекції WorkBooks дозволяє створити нову робочу книгу. При цьому якщо аргументом методу буде рядок, що вказує на файл шаблона, то нова книга буде створена на основі цього шаблона. Якщо аргументів немає, то буде створена звичайна книга в режимі "за умовчанням".

Використання методів колекції WorkBooks дозволяє не тільки створювати, але і відкривати наявні робочі книги, які зберігаються у файлах. Для цієї мети призначені методи Open і OpenText. Перший метод відкриває файл формату XLS, а другий - звичайні текстові файли. Частіше за все використовується метод Open з одним аргументом - рядком-покажчиком на файл.

Повна специфікація виклику методу Open має наступний вигляд:

Open(FileName, UpdateLinks, Readonly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMRU);

Обов'язковим є перший аргумент. Для завдання специфічних режимів відкриття файлу можна використовувати і інші аргументи.

Об'єкти Item(i:integer) містять посилання на всі робочі книги колекції WorkBooks (i:integer - індекс книги в колекції). Як аргумент при зверненні до Item може виступати і строкова змінна, що містить ім'я книги. Властивість Count колекції містить кількість відкритих документів колекції. Використовуючи ці властивості колекції ми можемо вивести список всіх робочих книг і взятися до роботи з будь-якою з них.

Одержання списку робочих книг і посилання на обрану робочу книгу:

procedure TOKBottomDlg2.FormCreate(Sender: TObject);

var a_:integer;

begin

WorkBooks:=Forml.E.WorkBooks;

for a_:=l to WorkBooks.count do begin

ListBoxl.Items.Add(WorkBooks.Item[a_].name+

1; '+Workbooks.Item[a_].FullName);

end;

end;

procedure TOKBottomDlg2.ListBoxlClick(Sender: TObject);

begin

WorkBooks.item[ListBoxl.Itemlndex+l].Activate;

WorkBook:=WorkBooks.item[ListBoxl.Itemlndex+l];

end;

Для активізації робочої книги із списку відкритих використовується метод Activate об'єкту Item(i:integer), де i - індекс відкритої робочої книги, а об'єкт Item(i:integer) є посиланням на робочу книгу.

Після того, як робоча книга вибрана, її можна редагувати, зберегти під колишнім або іншим ім'ям і закрити. Для цього використовуємо методи Save, SaveAs і Close.

Збереження робочої книги:

procedure TOKBottomDlg2.Button2Click(Sender: TObject);

begin

WorkBook.Save;

end;

procedure TOKBottomDlg2.Button3Click(Sender: TObject);

begin

if not SaveDialogl.Execute then exit;

WorkBook.SaveAs(SaveDialogl.FileName);

end;

Закриття робочої книги:

procedure TOKBottomDlg2.Button6Click(Sender: TObject);

begin

Workbook.Close;

end;

4.3.2 Робота з аркушами робочої книги

Аркуш, комірки якого безпосередньо зберігають інформацію, є приналежністю книги. В робочій книзі може бути більше одного аркуша. Доступ до списку аркушів або до будь-якого аркуша робочої книги можна отримати за допомогою колекції Sheets. Як і будь-яка колекція, вона містить властивість Count:integer (кількість елементів колекції) і набір об'єктів Item(i:integer) - власне аркуши, де i - індекс вибраного аркуша (від 1 до Count). Деякі методи колекції Sheets: Select - виділення всіх аркушів робочої книги, Copy - копіювання всіх аркушів в нову робочу книгу, PrintPreview - попередній перегляд друку, Printout - вивід на друк, Add - додавання нового аркушу в робочу книгу.

Розглянемо метод Add докладніше. Його можна використовувати як без аргументів, так і з аргументами, що визначають місце, куди будуть додані аркуші (аркуш), їх кількість і тип. Якщо використовувати метод Add так, як показано в наступному прикладі, то буде додано аркуш перед аркушем Sheet:

procedure TOKBottomDlg3.ButtonlClick(Sender: TObject);

begin

Sheets.Add(Before:=Sheet);

end;

Додавши аркуші або просто відкривши або створивши робочу книгу, ми можемо отримати список аркушів і доступ до будь-якого аркуша робочої книги.

Отримання списку аркушів робочої книги:

procedure TOKBottomDlg3.FormCreate(Sender: TObject);

var a_:integer;

begin

for a_:=l to Sheets.count do ListBoxl.Items.Add(Sheets.Item[a_].name);

end;

Отримання доступу до аркуша робочої книги:

var Sheet:variant;

procedure TOKBottomDlg3.ListBoxlClick(Sender: TObject);

begin

Sheet :=Sheets . item[List.Boxl. ItemІndex+l];

end;

Для того, щоб перейменувати вибраний робочий аркуш, у властивість Name записується нове значення імені аркуша, наприклад:

Sheet.Name: = 'Новий аркуш';

За допомогою методу Сору об'єкту Sheet можна скопіювати аркуш і його зміст. Цей метод дозволяє копіювати аркуш і вставляти копію або до, або після оригіналу - це залежить від значення аргументу методу Сору:

Sheet.Copy(before:=Sheet);

або

Sheet.Copy(after:=Sheet);

Після роботи з книгою може знадобитися видалити деякі аркуші. Для цього призначений метод Delete об'єкту Sheet:

Sheet.Delete;

Для доступу до комірок можна використовувати два різні об'єкти - об'єкт типа Range, який асоціюється з областю комірок, або безпосередньо об'єкт Cell (комірка аркуша робочої книги). Якщо перший об'єкт зручний для роботи з цілими областями комірок, то другий більше підходить для роботи з окремо взятою коміркою. Ці об'єкти належать об'єкту "аркуш" і вимагають завдання координат комірки або області комірок при зверненні до них. Наприклад, для завдання об'єкту, асоційованого з областю комірок A1:D5 використовуємо наступний оператор:

MyRange:=Sheet.Range[Al:D5];

де Sheet - посилання на аркуш робочої книги. Після вдалого виконання даного оператора змінна MyRange:variant містить посилання на об'єкт, асоційований з вибраною областю комірок.

Забезпечити доступ до окремої комірки можна з допомогою як об'єкту Range, так і об'єкту Cell. Використання останнього в операторі отримання доступу до комірки може виглядати так:

MyCell:=Sheet.Cells[1,1];

При виконанні даного оператора змінна MyCell зберігатиме посилання на комірку А1.

Запис інформації в комірки аркуша робочої книги:

procedure T0KBottomDlg4.ButtonlClick(Sender: TObject);

var a_:integer;

begin

randomize;

for a_:=l to 100 do Sheet.Cells(a_,1):=random(10000);

end;

Якщо для запису в комірки об'єкту Cells(row, column) привласнюється значення, то для зчитування даних використовується оператор, в якому строковій змінній привласнюється значення об'єкту Cells(row, column).

4.3.3 Робота з комірками

Основа введення і відображення інформації в робочих книгах Excel - робота з комірками аркуша. Кожна комірка є об'єктом з безліччю властивостей, необхідних для відображення інформації. Основною властивістю кожної комірки є її зміст або значення. Але часто буває недостатньо просто відобразити яке-небудь значення, будь то рядок або число, тому для кращого сприйняття інформації використовується таке поняття, як спосіб відображення. На спосіб відображення впливають такі чинники, як формат уявлення, різні способи розміщення значення щодо меж комірки, шрифт, товщина і колір ліній меж, а також колір і стиль заливки комірки.

Для доступу до всіх властивостей і вмісту комірок в Excel використовуються два об'єкти - Range і Cells. Між ними є тільки одна відмінність - перший об'єкт забезпечує доступ до області комірок, а другий - тільки до однієї комірки. Для завдання адреси комірок, на які потрібно отримати посилання, використовуються аргументи цих методів. Для Range аргументом є рядок адреси, а для Cells - номери рядка і стовпця.

Так, наприклад, для отримання посилання на об'єкт-область можна використовувати наступний оператор:

MyRange: =Е. ActiveSheet. Range [' В2 ' ] ;

Оператор з використанням об'єкту Cells:

MyRange:=E.ActiveSheet.Cells[2,2];

Змінна, яку відображає комірка, зберігається у властивостях Text і Value об'єкту Range (Cells), тому для того, щоб її отримати, достатньо зчитати значення однієї з цих властивостей. Якщо тип даних (формат) значення комірки невідомий використовуємо властивість Text, щоб отримати його у вигляді рядка. Коли тип даних відомий, можна спробувати використовувати властивість Value.

Висота і ширина комірки

Використовуючи властивості ColumnWidth і RowHeight об'єктів Range або Cells, можна змінити ширину і висоту комірки. Очевидно, що ці зміни спричинять зміни ширини стовпця і висоти рядка. Як приклад використання цих властивостей розглянемо процедури, що дозволяють змінити розміри заданої комірки:

procedure TOKBottomDlg5.ColumnWidthChange(Sender: TObject);

begin

Columns.Item(col).ColumnWidth:=StrToFloat(ColumnWidth.Text);

end;

procedure TOKBottomDlg5.RowHeightChange(Sender: TObject);

begin

Rows.Item(row).RowHeight:=StrToFloat(RowHeight.Text);

end;

Вирівнювання тексту в комірці

Значення, що відображається, можна розмістити в комірці Excel по-різному. Звичайно спосіб розміщення відповідає типу і величині значення комірки. Для числових даних текст зміщений до правої межі, а для строкових - до лівої межі комірки, але бувають виключення. Виключення з правил визначаються вимогами, що припускають ефективне відображення інформації для більш повного її сприйняття. В таких випадках і використовують властивості комірки, що дозволяють задати режими горизонтального і вертикального вирівнювання, встановити режим переносу по словах і вибрати кут повороту тексту.

Розглянемо ці властивості. Наступний програмний код задає режими горизонтального і вертикального вирівнювання тексту по центру.

Вирівнювання тексту в комірці:

const

xlHAlignCenter = -4108;

xlVAlignCenter = -4108;

procedure TOKBottomDlg8.HorizontalAlignmentChange(Sender: TObject);

begin

range.HorizontalAlignment:=xlHAlignCenter;

end;

procedure TOKBottomDlg8.VerticalAlignmentChange(Sender: TObject);

begin

range.VerticalAlignment:=xlVAlignCenter;

end;

Якщо довжина тексту перевершує ширину комірки, то це може спричинити за собою спотворення відображення значення комірки. Для вирішення цієї проблеми можна скористатися режимом переносу по словах. Він включається коли властивість комірки WrapText встановлена в значення True, і відключається, коли властивість WrapText встановлена в значення False.

Перенос по словах:

procedure TOKBottomDlg8.WrapTextClick(Sender: TObject);

begin

Range.WrapText:=WrapText.Checked;

end;

Ще один спосіб зміни розташування тексту в комірці - його поворот. Поворот тексту, що відображає значення комірки, визначається властивістю Orientation і може бути заданий величиною від -90 до +90 градусів.

Поворот тексту в комірці:

procedure TOKBottomDlg8.OrientationChange(Sender: TObject);

begin

Range.Orientation:=Orientat ion.Value;

end;

Якщо довжина тексту, розміщуваного в комірці, настільки велика, що він не може бути розміщений там без істотних змін розмірів комірки, а за конкретних умов задачі розміри рядків і стовпців змінювати не можна, то слід використовувати режим об'єднання комірок. Об'єднання комірок здійснюється установкою в значення True властивості MergeCells об'єкту Range, асоційованого з областю комірок:

procedure T0KBottomDlg9.MergeCellsClick(Sender: TObject);

begin

Range.MergeCells:=MergeCells.Checked;

end;

Межі комірки

Комірка є прямокутною областю. Ця область, окрім значень, які відображаються в ній, має такі властивості, як заливка і межа. Як заливка осередку, так і межа мають відповідні властивості (колір, товщину, тип, узор, колір узору). Розглянемо ці властивості докладніше. Межі комірки є лініями, що обмежують її з чотирьох сторін. Лінії з'єднані в колекцію Borders, доступ до будь-якої з них здійснюється через елементи цієї колекції. Кожний елемент колекції надає доступ до відрізка прямій, прилеглому до тієї або іншої сторони комірки. Діагоналі комірки також є елементами цієї колекції. Кожний елемент колекції Borders є об'єктом і має свої індивідуальні властивості, що дозволяє задати тип лінії і колір окремо для кожної лінії межі комірки. Наступні процедури дозволяють встановити товщину, тип і колір лінії межі вибраної комірки:

// Встановлюємо товщину лінії межі комірки

procedure TOKBottomDlg6.WeightChange(Sender: TObject);

begin

Border.Weight:=Weight.Itemlndex;

end;

// Встановлюємо тип лінії межі комірки

procedure T0KBottomDlg6.LineStyleChange(Sender: TObject);

begin

Border.LineStyle:=xlDouble;

end;

// Встановлюємо колір лінії межі комірки

procedure T0KBottomDlg6.ButtonlClick(Sender: TObject);

begin

if not ColorDialogl.Execute then exit;

Border. Color: =ColorDialogl. Color;

end;

Заливка комірки

Заливка комірки визначається комбінацією наступних складових - кольору, узору і кольору узору, що заповнює простір комірки. Програмний доступ до параметрів заливки забезпечує властивість Interior об'єкту Range, де Range - посилання на комірку або область. Властивість Interior представляє собою об'єкт, властивості якого пов'язані з візуальними властивостями внутрішнього простору комірки.

Колір заливки визначається властивістю Color об'єкту Interior і задається як комбінація трьох кольорів: Color:=RGB(R, G, В); де R, G, В - числові значення, відповідні червоному, зеленому і синьому кольорам. Колір заливки можна також задати як вибраний на палітрі кольорів - для цього використовується властивість ColorІndex об'єкту Interior.

Узор заливки області комірки визначається властивістю Pattern, а її колір - властивістю PatternColor об'єкту Interior. Колір також можна вибрати на палітрі кольорів Excel шляхом запису у властивість PatternColorІndex індексу вибраного кольору.

4.3.4 Пошук і заміна тексту

Пошук тексту виконується шляхом виклику методу Find.

Повна специфікація виклику методу Find:

Find(What, After, Lookln, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte);

В найпростішому випадку метод Find повинен містити один аргумент - шуканий текст. Якщо вимагається уточнити режим пошуку, то використовуються додаткові необов'язкові аргументи цього методу, які дозволяють визначити напрям пошуку, область пошуку і інші параметри.

Після успішного пошуку тексту метод Find повертає посилання на об'єкт-комірку, використовуючи який можна змінити зміст комірки. Повторюючи пошук і заміну багато разів, можна сформувати необхідний документ, але для цього є більш ефективний спосіб - використання функції пошуку і заміни. Ця функція в Excel реалізується методом Replace, який має два обов'язкові аргументи - шуканий текст і текст для заміни. Повна специфікація методу Replace:

Replace(What, Replacement, LookAt, SearchOrder, MatchCase, MatchByte);

4.3.5 Формули

Формула є математичним виразом, що складається з констант, адрес комірок, стандартних функцій Excel, призначених для користувача функцій і математичних символів, записаних у вигляді рядка. Для надання комірці таких властивостей використовують запис рядка, що представляє формулу, у властивість Formula об'єкту Range. Для зчитування формули також використовується властивість Formula.

Можливо також використання майстра функцій, що є послідовністю діалогових вікон, які дозволяють конструювати формулу для даної комірки по кроках. Для активізації даного способу необхідно викликати метод FunctionWizard об'єкту Range:

procedure TOKBottomDlg2.ButtonlOClick(Sender: TObject);

begin

Range.FunctionWizard;

end;

Іноді вимагається перевірити, що знаходиться в комірці - значення, записане користувачем, або сформоване в результаті виконання формули. Для цього можна аналізувати вміст властивості Formula об'єкту Range, але краще використовувати властивість HasFormula. Якщо воно має значення True, то комірка містить формулу, якщо False - то ні.

Перевірка наявності формули в комірці:

procedure TOKBottomDlg2.Button9Click(Sender: TObject);

begin

if Range.HasFormula

then messagebox(handle, 'Дана комірка містить формулу!','Увага!',0)

else messagebox(handle,'Дана комірка не містить формулу!','Увага!',0)

end;

Визначивши, що потрібна комірка містить формулу, ми можемо прочитати цю формулу з метою коректування або аналізу її вмісту.

Процедура читання формули може бути такою:

procedure TOKBottomDlg2.Button8Click(Sender: TObject);

begin

valuel.Text:=Range.Formula;

end;

4.3.6 Діаграми

Всі діаграми робочої книги по'єднані в колекцію Charts, властивості і методи якої дозволяють додавати нові діаграми, зберігати, видаляти і забезпечувати доступ до будь-якої діаграми колекції. Колекція Charts має такі ж властивості як і будь-яка інша колекція об'єктів Excel, але є і деякі відмінності, обумовлені властивостями діаграми, оскільки діаграма може знаходитися на аркуші разом з іншими даними або займати окремий аркуш. Тому діаграма і аркуш робочої книги, а також колекції, яким вони належать, можуть мати загальні властивості і методи, які потрібно враховувати при програмуванні додатків.

Для того, щоб створити нову діаграму, а потім маніпулювати загальним списком діаграм і діставати доступ до окремої діаграми, достатньо скористатися однією властивістю і двома методами колекції Charts. Властивість Count має тип Integer, його значення дорівнює кількості діаграм в робочій книзі. Метод Add створює нову діаграму і повертає посилання на неї. Метод Item() повертає посилання на створену раніше діаграму, що належить колекції Charts. Аргументом методу Item() є порядковий номер (індекс) або ім'я діаграми в колекції. В другому випадку аргументом методу Item є рядок, що містить ім'я діаграми. Індексом може бути ціле число із значенням в діапазоні від 1 до Charts.Count.

Наступна процедур демонструє як можна створити діаграму, отримавши посилання на неї:

procedure TForml.ButtonlClick(Sender: TObject);

begin

Chart:=E.Charts.Add;

Chart.ChartType:=xl3DColumn;

Chart.SetSourceData(Source:=E.ActiveWorkbook.Sheets.Item[2].

Range['Al:F5'],PlotBy:=xlColumns);

end;

Процедура складається з трьох операторів: перший створює діаграму і повертає посилання на неї, два інших, використовуючи отримане посилання, визначають область значень для побудови діаграми і її тип. Без цих двох операторів ми отримали б тільки порожню область діаграми. Тип діаграми визначається значенням властивості ChartType об'єкту Chart, що має цілий тип і обирається з декількох десятків констант. Метод SetSourceData визначає діапазон даних (область комірок) аркуша робочої книги, за яким будуватиметься діаграма. Перший аргумент цього методу визначає адресу області, другий - порядок використання комірок в заданій області.

Важливою характеристикою діаграми також є місце, де розташована сама діаграма, що визначається за допомогою методу Location об'єкту Chart. У цього методу два аргументи. Перший аргумент (типу Integer) визначає, діаграма знаходитиметься на окремому аркуші або на звичайному аркуші з даними. Якщо вибраний другий варіант, то другий аргумент методу Location визначає ім'я аркуша, на якому розташовуватиметься діаграма.

Тип діаграми зазвичай задається відразу після її створення, але в процесі роботи додатку іноді потрібно змінити зовнішній вигляд діаграми. Для цього використовується властивість ChartType об'єкту Chart, яка дозволяє змінювати тип діаграми шляхом запису в нього значення константи із заданого списку можливих значень.

Наступна процедура демонструє спосіб застосування властивості ChartType:

procedure TForml.ChartTypeClick(Sender: TObject);

begin

Chart.ChartType:=ChartType.Itemlndex+51;

end;

Зчитування і зміна властивостей заголовка діаграми проводяться за допомогою об'єкту ChartTitle, але для доступу до цього об'єкту необхідно активізувати заголовок, інакше об'єкт ChartTitle і сам заголовок будуть недоступні. Це робиться шляхом установки властивості Chart.HasTitle в значення True. Отримавши доступ до заголовка, ми можемо змінити і його зміст і параметри області, в якій він розміщений. Для цього використовуємо властивості Font (шрифт), Border (лінія межі), Interior і Fill (властивості заливки), Shadow (наявність тіні), Left і Тор (координати розташування заголовка) об'єкту ChartTitle.

Доступ до властивостей легенди діаграми здійснюється за допомогою об'єкту Legend, що є властивістю діаграми Chart. Для відкриття доступу до об'єкту Legend необхідно привласнити властивості HasLegend об'єкту Chart значення True, після чого легенда діаграми відобразиться в області діаграми і буде доступна для змін.

Легенда є прямокутною областю, для якої можна змінити візуальні властивості заливки і лінії межі. Оператор Legend:=Chart.Legend; повертає в змінну Legend:variant посилання на об'єкт "легенда". Після цього можна безпосередньо звертатися до цієї легенди.

Доступ до лінії межі легенди забезпечує властивість Border, до заливки - властивість Interior або Fill.

Осі діаграми є лініями з мітками. Двомірні діаграми мають вісь значень і вісь категорій, а тривимірні - ще і вісь ряду даних. Осі призначені для більш наочного віддзеркалення вмісту діаграми. Вся інформація про осі міститься в колекції Axes об'єкту Chart. Зрозуміло, що ця колекція може містити не більше трьох елементів-осей.

Елемент колекції Axes є об'єктом Axis, об'єднуючим в собі всі властивості вибраної осі. Для вибору об'єкту Axis з колекції осей використовується метод Item(i). Аргумент i методу є числовою константою, вибраною з трьох можливих (xlCategory=l, xlValue=2, xlSeriesAxis=3). Відповідно можна отримати посилання на один з об'єктів: вісь категорій, вісь значень або вісь ряду даних.

Розглянемо властивості вибраної осі. Кожна вісь може містити заголовок (назва), мітки осі, основні і проміжні лінії сітки. Всі ці елементи мають такі властивості, як колір, тип і товщина ліній, заливка, ширина міток і шрифт тексту. Крім того, можна видалити або відобразити вибрану вісь. Для цього використовується властивість HasAxis(i) об'єкту Chart. Наприклад, оператор Chart.HasAxis(xlValue):=True; відобразить, а оператор Chart.HasAxis(xlValue):=False; приховає вісь значень. Сама вісь значень має такі ж властивості, як звичайна лінія, їх можна настроювати; доступ до її властивостей здійснюється за допомогою об'єкту Axis. Border.

Доступ до заголовка осі здійснюється за допомогою об'єкту Axis.AxisTitle. Заголовок осі складається з лінії межі, заливки і тексту. Тому у об'єкту AxisTitle є властивості Border, Interior, Fill, Caption і Font пов'язані з відповідними візуальними елементами заголовка.

Мітки осі є текстом, що відображає відповідне значення. Доступ до властивостей міток здійснюється за допомогою об'єкту TickLabels, що належить об'єкту Axis. Властивості NumberFormat, Orientation Font об'єкту TickLabels дозволяють задавати формат, напрям і шрифт тексту міток.

Лінія осі також може містити лінії основних і проміжних міток. Тип цих ліній визначається шляхом запису числових констант у властивості MajorTickMark і MinorTickMark об'єкту Axis.

5. ПРОГРАМНА РЕАЛІЗАЦІЯ І ОПИС ФУНКЦІОНАЛЬНИХ МОЖЛИВОСТЕЙ ПРОЕКТОВАНОЇ СИСТЕМИ

5.1 Функціональне призначення та технологічні особливості розробки

Розроблена система призначена для управління MS Word і MS Excel за допомогою додатків створених у середовищі Delphi. В ході виконання роботи були дослідженні об'єктні моделі MS Word і MS Excel та методи створення контролерів автоматизації MS Office.

В роботі розглядаються питання роботи з текстом документа Word, таблицями, основними параметрами сторінки. Також були розглянуті об'єкти та методи, призначені для роботи з книгами, аркушами та комірками додатку Excel.

В розробленій системі приведений докладний опис як самих команд, так і методів, які їм відповідають. Інформація зберігається в зовнішніх html-файлах, що повинні знаходитися в директорії HTML у тому ж каталозі, де зберігається виконавчий файл системи.

Оптимальний склад технічних засобів, при яких працює система:

· IBM-сумісний комп'ютер, не нижче Pentium-ІІІ продуктивністю не менше 1,7 ГГц;

· Оперативна пам'ять не менше 256 МГбайт;

· Монітор із SVGA адаптером;

· Вільний простір на жорсткому диску не менш 5 Мб;

· Компакт-дисковий носій (CD);

· Клавіатура, маніпулятор типу "миша".

Система повинна функціонувати під керуванням операційної системи Windows ХР. Програмна оболонка повинна мати інтуїтивно зрозумілий інтерфейс. Додаткове програмне забезпечення: інсталяція MS Office 2003 або наступних версій.

5.2 Розробка логіко-функціональної схеми системи

Логіко-функціональна схема системи наведена на рис. 5.1.

Рис. 5.1 Логіко-функціональна схема роботи системи

5.3 Опис інтерфейсу користувача

Після запуску системи на екрані з'являється вікно, яке має наступний вигляд:

Рис.5.2 Загальний вигляд вікна системи із стартовою сторінкою

В залежності від обраної об'єктної моделі у верхній частині вікна за допомогою компоненту WebBrowser завантажується інформація із зовнішнього html-файлу.

Крім того, користувач може обрати роботу з додатком Word або додатком Excel. Якщо обрано додаток Word, на екрані з'являється вікно, в якому можна обрати необхідний напрямок роботи з додатком:

Для кожного пункту у верхній частині також відображається інформація із зовнішнього html-файлу і є кнопка для виклику вікна, яке реалізовує відповідні функції роботи з додатком.

Так після натискання кнопки «Демонстрація» для пункту «Настройка сторінки і друк» на екрані з'являється форма, зображена на рис.5.4:

Рис.5.3 Вікно для роботи з Word

Рис.5.4 Вікно для настройки сторінки і друку

З допомогою компонентів розміщених на цій формі можна змінювати деякі параметри сторінки і друкувати документ Word.

Після натискання кнопки «Демонстрація» для пункту «Работа з таблицями» на екрані з'являється форма, яка містить компоненти для управління таблицями у документі:

Рис.5.5 Вікно для роботи з таблицями

Для роботи з панелями управління додатку Word призначене вікно, зображене на рис.5.6:

Рис.5.6 Вікно для роботи з панелями управління

Якщо була вибрана робота з додатком Excel, на екрані з'явиться вікно аналогічне за структурою вікну для роботи з Word:

Рис.5.7 Вікно для роботи з додатком Excel

Для роботи з книгами, аркушами і комірками у додатку створені наступні модулі:

Рис.5.8 Вікно для роботи з книгами і аркушами

Рис.5.9 Вікно для форматування комірок робочої книги

Рис.5.10 вікно для роботи з формулами та діаграмами

5.4. Програмна реалізація та опис основних процедур і функцій розробленої системи

Система створена засобами середовища Delphi 6.0 і відповідає всім необхідним вимогам, які пред'явлені в постановці завдання до дипломної роботи.

Система містить 11 форм, за допомогою яких користувач може працювати з додатками Word I Excel. Ієрархія форм наведена на рис.5.11:

Рис.5.11 Ієрархія форм розробленої системи

5.4.1 Настройка сторінки і друк документа MS Word

Для запуску і візуалізації додатку Word та створення нового документу в обробник події OnClick для BitButton1 записується наступна процедура:

Uses ComObj; // підключаємо модуль ComObj;

Var w, pagesetup: variant; // визначаємо глобальні змінні

procedure TForm4.BitBtn1Click(Sender: TObject);

begin

try

// підключаємося до запущеного додатку Word

w:=GetActiveOleObject('word.application');

except

// якщо немає запущених екземплярів додатку, то запускаємо новий

w:=CreateOleObject('word.Application');

end;

w.Visible:=true; // візуалізуємо вікно додатку

w.Documents.add; // створюємо документ

end;

end;

Вставка нової сторінки у кінець існуючого документа реалізовується таким чином:

procedure TForm4.BitBtn2Click(Sender: TObject);

begin

w.activedocument.Range(w.activedocument.range.end-1).

insertBreak(Type:=wdPageBreak);

end;

Зміна орієнтації сторінки:

// книжна орієнтація

procedure TForm4.RadioButton1Click(Sender: TObject);

begin

if RadioButton1.Checked then

w.activedocument.pagesetup.orientation:=wdOrientPortrait;

end;

// альбомна орієнтація

procedure TForm4.RadioButton2Click(Sender: TObject);

begin

if radioButton2.Checked then

w.Activedocument.pagesetup.Orientation:=wdOrientLandscape;

end;

В обробник події OnClick компонента SpinEdit1 (зміна масштабу) записано наступну процедуру:

procedure TForm4.SpinEdit1Change(Sender: TObject);

begin

w.ActiveWindow.ActivePane.View.Zoom.Percentage:=spinedit1.value;

end;

Вставка номера сторінки реалізована за допомогою наступної процедури:

procedure TForm4.BitBtn5Click(Sender: TObject);

var mysection, mypagenumbers, mypagenumber: variant;

begin

// якщо CheckBox2 вибрано, то номер вверху сторінки, інакше - внизу

if CheckBox2.Checked then

begin

mysection:=w.ActiveDocument.Range.Sections.item(1);

mypagenumbers:=mysection.headers.item(1).PageNumbers;

mypagenumber:=mysection.headers.item(1).PageNumbers.add

(pagenumberalignment:=ComboBox2.ItemIndex,

FirstPage:=CheckBox1.Checked);

End

else

begin

mysection:=w.ActiveDocument.Range.Sections.item(1);

mypagenumbers:=mysection.footers.item(1).PageNumbers;

mypagenumber:=mysection.footers.item(1).PageNumbers.add

(pagenumberalignment:=ComboBox2.ItemIndex,

FirstPage:=CheckBox1.Checked);

end;

end;

Зміна значень полів і палітурки відбувається за допомогою компонентів SpinEdit:

// ліве поле

procedure TForm4.SpinEdit2Change(Sender: TObject);

begin

w.activedocument.pagesetup.LeftMargin:=SpinEdit2.Value;

end;

// праве поле

procedure TForm4.SpinEdit3Change(Sender: TObject);

begin

w.activeDocument.PageSetup.RightMargin:=SpinEdit3.Value;

end;

// нижнє поле

procedure TForm4.SpinEdit4Change(Sender: TObject);

begin

w.activeDocument.PageSetup.BottomMargin:=SpinEdit4.Value;

end;

// верхнє поле

procedure TForm4.SpinEdit5Change(Sender: TObject);

begin

w.activeDocument.PageSetup.TopMargin:=SpinEdit5.Value;

end;

// палітурка

procedure TForm4.SpinEdit6Change(Sender: TObject);

begin

w.activeDocument.PageSetup.Gutter:=SpinEdit6.Value;

end;

Для попереднього перегляду сторінки перед друком напишемо для обробника події OnClick кнопки «Перегляд»:

procedure TForm4.BitBtn3Click(Sender: TObject);

begin

w.activeDocument.PrintPreview;

end;

Для обробника події OnClick кнопки «Друк»:

// у SpinEdit7 вказано кількість копій для друку

procedure TForm4.BitBtn4Click(Sender: TObject);

begin

w.activeDocument.PrintOut(copies:=SpinEdit7.Value);

end;

5.4.2 Робота з таблицями документу

При натисканні кнопки «Створити таблицю», у щойно створений документ вставляється таблиця:

procedure TForm5.BitBtn2Click(Sender: TObject);

var my_range: variant;

i: integer;

begin

my_range:=w.activedocument.range;

w.activedocument.tables.add

(range:=my_range, numrows:=2, numcolumns:=3);

w.activedocument.range.InsertAfter(' ');

i:=i+1;

ListBox1.Items.Add('Таблиця'+IntToStr(i));

end;

У компонент ListBox1 виводиться список таблиць у поточному документі, у компоненти ListBox2 і ListBox3 виводиться список стовпців і рядків обраної таблиці:

procedure TForm5.ListBox1Click(Sender: TObject);

var i: integer;

begin

table:= w.activedocument.tables.Item(ListBox1.ItemIndex+1);

ListBox2.clear;

ListBox3.clear;

for i:=1 to table.columns.count do

ListBox2.Items.add(IntToStr(i));

for i:=1 to table.rows.count do

ListBox3.Items.add(IntToStr(i));

end;

Вставка стовпця та строки у обрану таблицю:

// вставка стовпця

procedure TForm5.BitBtn3Click(Sender: TObject);

begin

table.columns.add;

end;

// вставка рядка

procedure TForm5.BitBtn4Click(Sender: TObject);

begin

table.rows.add;

end;

Видалення стовпця або рядка з обраної таблиці:

// видалення останнього стовпця

procedure TForm5.BitBtn5Click(Sender: TObject);

begin

table.columns.Item(table.columns.count).delete;

end;

// видалення останнього рядка

procedure TForm5.BitBtn6Click(Sender: TObject);

begin

table.rows.Item(table.rows.count).delete;

end;

Зміна значення ширини стовпця виконується за допомогою компоненту SpinEdit1:

procedure TForm5.SpinEdit1Change(Sender: TObject);

begin

table.columns.width:=SpinEdit1.value;

end;

Запис тесту з компоненту Edit1 у комірку таблиці:

procedure TForm5.BitBtn9Click(Sender: TObject);

begin

table.cell(ListBox3.ItemIndex+1,

ListBox2.ItemIndex+1).Range.Text:=Edit1.Text;

end;

Шрифт обраної комірки змінюється натисканням відповідної кнопки:

procedure TForm5.BitBtn10Click(Sender: TObject);

begin

table.cell(ListBox3.ItemIndex+1,

ListBox2.ItemIndex+1).Range.Select;

w.selection.Font.Color:=clRed;

w.selection.Font.size:=16;

w.selection.Font.Italic:=1;

end;

Вирівнювання тексту у комірці:

// по горизонталі

procedure TForm5.Button11Click(Sender: TObject);

begin

table.cell(ListBox3.ItemIndex+1,

ListBox2.ItemIndex+1).Range.ParagraphFormat.alignment:=

ComboBox1.ItemIndex;

end;

// по вертикалі

procedure TForm5.Button12Click(Sender: TObject);

begin

table.cell(ListBox3.ItemIndex+1,

ListBox2.ItemIndex+1).VerticalAlignment:=

ComboBox2.ItemIndex;

end;

Колір заливки комірки обирається у компоненті ComboBox3:

procedure TForm5.BitBtn11Click(Sender: TObject);

begin

table.cell(ListBox3.ItemIndex+1, ListBox2.ItemIndex+1).Shading.BackGroundpatterncolorindex:=ComboBox3.ItemIndex;

end;

Зміна напрямку тексту:

procedure TForm5.BitBtn12Click(Sender: TObject);

begin

table.cell(ListBox3.ItemIndex+1,ListBox2.ItemIndex+1).Range.Orientation:=ComboBox4.ItemIndex;

end;

Для експорту даних з бази даних, розміщуємо на формі компоненти ADOConnection і ADOTable. Підключаємо ADOConnection1 до database.mdb, а ADOTable1 - до ADOConnection1. Для обробника події OnClick кнопки «Експорт даних у Word» записуємо:

procedure TForm5.BitBtn13Click(Sender: TObject);

var i: integer;

begin

w.activedocument.tables.add(Range:=w.activedocument.range,numrows:=1,numcolumns:=1);

table:=w.activedocument.tables.Item(1);

ADOtable1.First;

while not ADOtable1.Eof do

begin

table.rows.add;

i:=i+1;

table.cell(i,1).Range.text:=ADOtable1Amount_goods.AsString;

ADOTable1.Next;

end;

end;

Напишемо функцію, яка використовуватиметься для процедури створення рахунку-фактури:

Function FindRowColumnInTable(FindText:string;var tab:variant; var Row,Column:integer):boolean;

begin

FindRowColumnInTable:=false;

try

w.Selection.Find.Text:=FindText;

if w.Selection.Find.Execute then

begin

Column:=w.Selection.Cells.Item(1).ColumnIndex;

Row:=w.Selection.Cells.Item(1).RowIndex;

tab:=w.Selection.Tables.Item(1);

FindRowColumnInTable:=true;

end;

except

FindRowColumnInTable:=false;

end;

End;

Для обробника події OnClick кнопки «Створення рахунку-фактури» запишемо:

procedure TForm5.BitBtn7Click(Sender: TObject);

var table_:variant;

Row_,Column_:integer;

begin

W.documents.Add(ExtractFileDir(Application.ExeName)+'\Шаблон счета-фактуры.dot');

messagebox(handle, 'Шаблон создан! Переходим к заполнению.', 'Внимание!',0);

// Підставляємо текст в заголовок документа

FindAndInsert('###НОМЕР&','1');

FindAndInsert('###Дата',datetostr(date));

FindAndInsert('###ПРОДАВЕЦ&','Domoтроника');

FindAndInsert('###АДРЕС_ПРОДАВЦА&','г.Кривой Рог, ул. ХХ партсъезда, 4');

FindAndInsert('###ИНН_ПРОДАВЦА&','1234567890');

FindAndInsert('###ГРУЗООТПРАВИТЕЛЬ&',' Domoтроника');

FindAndInsert('###ГРУЗОПОЛУЧАТЕЛЬ&','ООО "ДиосБуд"');

FindAndInsert('###ДОКУМЕНТ&','1');

FindAndInsert('###ДАТА_ДОКУМЕНТА&',datetostr(date));

FindAndInsert('###ПОКУПАТЕЛЬ&', 'ООО "ДиосБуд"');

FindAndInsert('###АДРЕС_ПОКУПАТЕЛЯ&','г.Кривой Рог, ул. Землячки, 1');

FindAndInsert('###ИНН_ПОКУПАТЕЛЯ&','0987654321');

// Якщо знайшли текстову константу, то починаємо формування табличної частини

if FindRowColumnInTable('###ТАБЛИЦА&',table_,Row_,Column_) then

begin

W.Selection.InsertRows(2-1);

// Формуємо перший рядок табличної частини

table_.Cell(Row_,Column_+0).Range.Text:='Котел THESI 23 e';

table_.Cell(Row_,Column_+1).Range.Text:='шт';

table_.Cell(Row_,Column_+2).Range.Text:='1';

table_.Cell(Row_,Column_+3).Range.Text:='EUR 547.45';

table_.Cell(Row_,Column_+4).Range.Text:='EUR 547.45';

table_.Cell(Row_,Column_+6).Range.Text:='EUR 47.95';

table_.Cell(Row_,Column_+7).Range.Text:='EUR 80,00';

table_.Cell(Row_,Column_+8).Range.Text:='EUR 675,4';

Inc(Row_);

// Формуємо другий рядок табличної частини

table_.Cell(Row_,Column_+0).Range.Text:='Радиатор Radel TYPE 33 H500 L=700';

table_.Cell(Row_,Column_+1).Range.Text:='шт';

table_.Cell(Row_,Column_+2).Range.Text:='5';

table_.Cell(Row_,Column_+3).Range.Text:=' EUR 96.45';

table_.Cell(Row_,Column_+4).Range.Text:='EUR 482,25';

table_.Cell(Row_,Column_+6).Range.Text:='EUR 12,30';

table_.Cell(Row_,Column_+7).Range.Text:='EUR 38,63';

table_.Cell(Row_,Column_+8).Range.Text:='EUR 533,18';

// Формуємо підпис табличної частини

if FindRowColumnInTable('###ИТОГ&',table_,Row_,Column_)then begin

table_.Cell(Row_,Column_+0).Range.Text:='EUR 1029,97';

table_.Cell(Row_,Column_+1).Range.Text:='EUR 60,25';

table_.Cell(Row_,Column_+2).Range.Text:='EUR 1208,58';

end;

end;

// Заповнюємо текст в кінці документа

FindAndInsert('###ВСЕГО_К_ОПЛАТЕ&','Одна тысяча двести восемь евро 58 евроцентов');

end;

5.4.3 Робота з панелями управління додатку Word

При виборі прапорця «Великі кнопки» змінюється розмір кнопок панелей інструментів:

procedure TForm6.CheckBox1Click(Sender: TObject);

begin

w.commandbars.LargeButtons:=CheckBox1.Checked;

end;

Спливаючі підказки включаються або виключаються за допомогою компонентів CheckBox2 і CheckBox3:

procedure TForm6.CheckBox2Click(Sender: TObject);

begin

w.commandbars.DisplayTooltips:=Checkbox2.Checked;

end;

procedure TForm6.CheckBox3Click(Sender: TObject);

begin

w.commandbars.DisplayKeysInTooltips:=CheckBox3.Checked;

end;

Після натискання кнопки «Створення панелі», з'являється нова панель, на якій можна розмістити всі необхідні кнопки:

procedure TForm6.BitBtn3Click(Sender: TObject);

begin

mycommandbar:=w.commandbars.add('Моя панель',1, false, true);

mycommandbar.visible:=true;

end;

Розміщення кнопки на щойно створеній панелі:

procedure TForm6.BitBtn4Click(Sender: TObject);

begin

button:=mycommandbar.controls.add(type:=1, Id:=3);

end;

Список всіх панелей інструментів виводиться у компонент CheckListBox1 після натискання кнопки «Список панелей управління»:

procedure TForm6.BitBtn2Click(Sender: TObject);

var i: integer;

begin

for i:=1 to w.Commandbars.Count do begin

CheckListBox1.Items.Add(w.commandbars.Item[i].name+' = '+w.commandbars.Item[i].NameLocal);

CheckListBox1.Checked[i-1]:=w.commandbars.Item[i].Visible;

end;

end;

Обираючи значення за списку ComboBox1, можна змінити розташування обраної панелі інструментів:

procedure TForm6.ComboBox1Change(Sender: TObject);

begin

try

w.commandbars.item[checklistbox1.itemindex+1].position:=

Combobox1.ItemIndex;

except

showmessage('Невозможно изменить расположение');

end;

end;

Доступність панелей управління змінюється встановленням або зняттям відповідного прапорця:

procedure TForm6.CheckBox4Click(Sender: TObject);

var i: integer;

begin

for i:=1 to w.commandbars.count do

w.commandbars.item[i].Enabled:=checkbox4.checked;

end;

При натисканні кнопки «Список кнопок» з'являється нове вікно, у якому виводиться список кнопок обраної панелі і їх опис:

procedure TForm6.BitBtn5Click(Sender: TObject);

begin

panel:=w.commandbars.item[checklistbox1.itemindex+1];

Form7.ShowModal;

end;

Для компонента ListBox1 нової форми у обробник події OnClick запишемо:

procedure TForm7.ListBox1Click(Sender: TObject);

begin

button:=panel.controls.item[ListBox1.ItemIndex+1];

memo1.Text:=button.descriptionText;

end;

Видимість або невидимість обраної кнопки:

procedure TForm7.CheckBox1Click(Sender: TObject);

begin

button.Visible:=checkbox1.Checked;

end;

Для обробника події OnClick кнопки «Виконати операцію»:

procedure TForm7.BitBtn1Click(Sender: TObject);

begin

button.execute;

end;

5.4.4 Робота з книгами і аркушами додатку Excel

Напишемо для обробника події OnClick кнопки «Запуск Excel»:

Uses ComObj, Unit5;

var e, w_book, m_sheet: variant;

procedure TForm9.BitBtn1Click(Sender: TObject);

begin

try

e:=getactiveoleobject('excel.application');

except

e:=CreateOleObject('excel.application');

end;

e.visible:=true;

end;

Створюємо нову книгу, натискаючи кнопку «Створити книгу»:

procedure TForm9.BitBtn2Click(Sender: TObject);

begin

w_book:=e.workbooks.add;

end;

Щоб створити книгу на основі шаблону натискаємо кнопку «Створити книгу на основі шаблону»:

procedure TForm9.BitBtn3Click(Sender: TObject);

begin

w_book:=e.workbooks.add(extractFileDir(application.ExeName)+ '\Шаблон.xlt');

end;

Відкриття існуючої книги:

procedure TForm9.BitBtn4Click(Sender: TObject);

begin

if OpenDialog1.execute then

w_book:=e.workbooks.add(OpenDialog1.FileName);

end;

Збереження нової або зміненої книги:

procedure TForm9.BitBtn5Click(Sender: TObject);

begin

if SaveDialog1.execute then

w_book:=e.workbooks.saveAs(SaveDialog1.FileName);

end;

Список аркушів робочої книги виводиться у компонент ListBox1 після натискання кнопки «Список аркушів»

procedure TForm9.BitBtn7Click(Sender: TObject);

var i:integer;

begin

ListBox1.Clear;

for i:=1 to w_book.sheets.count do

ListBox1.Items.Add(w_book.sheets.Item[i].Name);

end;

Процедура для отримання доступу до аркушів робочої книги:

procedure TForm9.ListBox1Click(Sender: TObject);

begin

m_sheet:=w_book.sheets.Item[ListBox1.ItemIndex+1];

end;

Натискання кнопки «Додати аркуш» вставляє новий аркуш у поточну робочу книгу:

procedure TForm9.BitBtn6Click(Sender: TObject);

begin

try

w_book.sheets.add;

BitBtn7Click (sender);

except

showmessage('Невозможно добавить лист');

end;

end;

Натискання кнопки «Видалити вибраний аркуш» видаляє вибраний аркуш з поточної робочої книги:

procedure TForm9.BitBtn10Click(Sender: TObject);

begin

try

m_sheet.delete;

BitBtn7Click (sender);

except

showmessage('Невозможно удалить лист');

end;

end;

Для обробника події OnClick кнопки «Перейменувати аркуш»:

procedure TForm9.Button8Click(Sender: TObject);

begin

try

m_sheet.name:=Edit1.Text;

BitBtn7Click(Sender);

except

showmessage('Невозможно переименовать лист');

end;

end;

За допомогою кнопок «Скопіювати аркуш в кінець книги» і «Скопіювати аркуш в початок книги» ми маємо змогу скопіювати вибраний аркуш у кінець або початок робочої книги, відповідно:

procedure TForm9.BitBtn8Click(Sender: TObject);

begin

try

m_sheet.copy(after:=w_book.sheets.item[w_book.sheets.count]);

BitBtn7Click (sender);

except

showmessage('Невозможно скопировать лист');

end;

end;

procedure TForm9.BitBtn9Click(Sender: TObject);

begin

try

m_sheet.copy(before:=w_book.sheets.item[1]);

BitBtn7Click (sender);

except

showmessage('Невозможно скопировать лист');

end;

end;

Функція пошуку та заміни тексту:

Function FindAndReplace(find, rep: string): boolean;

var range: variant;

begin

try

range:= e.range['A1:EL1000'].Replace(what:=find, replacement:=rep);

FindAndReplace:=true;

except

FindAndreplace:=false;

end;

end;

Обробник події OnClick кнопки «Пошук і заміна тексту»:

procedure TForm9.BitBtn11Click(Sender: TObject);

begin

FindAndReplace('Поиск', 'Замена');

end;

Для обробника події OnClick кнопки «Запис випадкових чисел у комірки»:

procedure TForm9.Button12Click(Sender: TObject);

var i:integer;

begin

Randomize;

for i:=1 to 10 do

m_sheet.cells[2,i]:=Random(100);

end;

Після натискання кнопки «Експорт із БД» у комірки робочої книги записуються данні з бази даних:

procedure TForm9.BitBtn12Click(Sender: TObject);

begin

ADOTable1.Active:=true;

while not ADOTable1.Eof do

begin

m_sheet.cells[ADOtable1.RecNo,1]:=ADOTable1Amount_goods.AsString;

ADOTable1.Next;

end;

end;

Закриття робочих книг та додатку Excel:

// закриття активної робочої книги

procedure TForm9.BitBtn13Click(Sender: TObject);

begin

e.activeworkbook.close;

end;

// закриття всіх робочих книг

procedure TForm9.BitBtn14Click(Sender: TObject);

begin

e.workbooks.close;

end;

// закриття додатку Excel

procedure TForm9.BitBtn15Click(Sender: TObject);

begin

e.quit;

end;

5.4.5 Форматування комірок

Для реалізації заливки комірки, напишемо для обробника події OnClick кнопки «Заливка» наступну процедуру:

procedure TForm10.BitBtn2Click(Sender: TObject);

begin

with ColorDialog1 do

if execute then

my_range.Interior.color:= color; // колір обирається з панелі кольорів

end;

Для обробника події OnClick кнопки «Межі комірки»:

procedure TForm10.Button3Click(Sender: TObject);

begin

my_range.borders.linestyle:=1; // тип лінії межі комірки

my_range.borders.weight:=3; // ширина лінії межі комірки

with ColorDialog1 do

if execute then

my_range.borders.Color:= color; // колір лінії межі комірки

end;

Вставка тексту у комірку:

procedure TForm10.BitBtn3Click(Sender: TObject);

begin

my_range.value:=Edit3.Text;

end;

Для зміни розмірів комірки напишемо для обробника події OnClick кнопки BitBtn4:

procedure TForm10.BitBtn4Click(Sender: TObject);

begin

my_range.rowheight:=SpinEdit2.value; // висота комірки

my_range.columnwidth:=SpinEdit3.Value; // ширина комірки

end;

Зміна шрифту обраної комірки:

procedure TForm10.BitBtn7Click(Sender: TObject);

begin

my_range.Font.bold:=SpeedButton1.Down; // напівжирний

my_range.Font.italic:=SpeedButton2.Down; // курсив

my_range.Font.Underline:=SpeedButton3.Down; //підкреслений

my_range.Font.Name:=ComboBox3.Text; // шрифт

end;

Для кнопки BitBtn5 напишемо наступну процедуру:

procedure TForm10.BitBtn5Click(Sender: TObject);

begin

// вирівнювання тексту в комірці по горизонталі

case ComboBox1.ItemIndex of

0: my_range.horizontalalignment:=-4131;

1: my_range.horizontalalignment:=-4108;

2: my_range.horizontalalignment:=-4152;

end;

// вирівнювання тексту в комірці по вертикалі

case ComboBox2.ItemIndex of

0: my_range.verticalalignment:=-4160;

1: my_range.verticalalignment:=-4117;

2: my_range.verticalalignment:=-4107;

end;

my_range.Wraptext:=CheckBox1.Checked; // перенос тексту по словах

my_range.Mergecells:=CheckBox2.Checked; // об'єднання комірок

my_range.orientation:=SpinEdit1.Value; // поворот тексту

end;

Для обробника події OnClick кнопки «Декларація НДС» напишемо:

procedure TForm10.BitBtn8Click(Sender: TObject);

begin

form8.showmodal;

end;

Для обробника події OnCreate форми «Заповнення податкової декларації», яка з'являється після натискання кнопки «Декларація НДС», напишемо:

procedure TForm8.FormCreate(Sender: TObject);

begin

randomize;

summa.Text:=currtostr(1000+random(1000));

DATA.Text:=datetostr(date);

end;

Д

Напишемо функцію пошуку і заміни, яка буде використовуватися для процедури заповнення декларації:

Function FindAndReplace(find_,rep_:string):boolean;

var range:variant;

begin

FindAndReplace:=false;

if find_<>'' then begin

try

range:=E.Range['A1:EL230'].Replace(What:=find_,Replacement:=rep_);

FindAndReplace:=true;

except

FindAndReplace:=false;

end;

end;

End;

Для обробника події OnClick кнопки «Створення документу по шаблону»:

procedure TForm8.BitBtn2Click(Sender: TObject);

begin

E.WorkBooks.Add(ExtractFileDir(application.ExeName)+'\Декларация НДС.xlt');

end;

Для обробника події OnClick кнопки «Заповнення шаблону»:

procedure TForm8.Button3Click(Sender: TObject);

var a_:integer;

begin

FindAndReplace('#ИНСПЕКЦИЯ&',inspekcia.Text);

FindAndReplace('#ОРГАНИЗАЦИЯ&',organizacia.Text);

for a_:=1 to 12 do FindAndReplace('И+inttostr(a_)+'&',INN.Text[a_]);

for a_:=1 to 9 do FindAndReplace('К'+inttostr(a_)+'&',KPP.Text[a_]);

for a_:=1 to 15 do FindAndReplace('C'+inttostr(a_)+'&',(SUMMA.Text+' ')[a_]);

for a_:=1 to 2 do FindAndReplace('Д'+inttostr(a_)+'&',DATA.Text[a_]);

for a_:=1 to 2 do FindAndReplace('М'+inttostr(a_)+'&',DATA.Text[a_+3]);

for a_:=1 to 4 do FindAndReplace('Г'+inttostr(a_)+'&',DATA.Text[a_+6]);

end;

5.4.6 Робота з формулами і діаграмами

Для вставки готової формули в обрану комірку використовується наступна процедура:

procedure TForm11.BitBtn3Click(Sender: TObject);

var i: integer;

begin

for i:=1 to ADOTable1.RecordCount do

begin

result:=m_sheet.range['C'+IntToStr(i)];

result.formula:='=A'+inttostr(i)+'+B'+inttostr(i);

end;

end;

Для виклику майстра функцій використовують таку процедуру:

procedure TForm11.BitBtn4Click(Sender: TObject);

begin

result:=m_sheet.range['C1'];

result.functionwizard;

end;

Для обробника події OnClick кнопки «Побудувати діаграму» напишемо:

procedure TForm11.BitBtn6Click(Sender: TObject);

begin

m_chart:=e.charts.add;

// область побудови діаграми

myrange:=m_sheet.range['A1:B1'+IntToStr(ADOTable1.RecordCount)]; m_chart.SetSourceData(Source:=myrange,PlotBy:=2); // дані для побудови діаграми

m_chart.hastitle:=true; // доступність заголовку

m_chart.Charttitle.text:=edit1.Text; // назва (заголовок) діаграми

m_chart.haslegend:=Checkbox2.Checked; // наявність легенди

m_chart.hasdatatable:=CheckBox3.Checked; // відображається таблиця даних чи ні

// вибираємо тип діаграми

case combobox1.ItemIndex of

0: m_chart.ChartType:=51;

1: m_chart.ChartType:=54;

end;

// якщо CheckBox1 вибрано, то діаграма будується на окремому аркуші, інакше - на аркуші з даними

if CheckBox1.Checked then

begin

m_chart.location(where:=1)

end

else

begin

m_chart.location(where:=2, name:=m_sheet.name);

end;

end;

6. ЕКОНОМІЧНЕ ОБҐРУНТУВАННЯ ДОЦІЛЬНОСТІ РОЗРОБКИ ПРОГРАМНОГО ПРОДУКТУ

Важливим фактором, що впливає на процес формування ціни, є конкуренція на ринку, необхідність брати до уваги яку є очевидною. З метою підвищення конкурентноздатності продукту може виникнути необхідність зниження його ціни на ринку. Важливо відмітити, що цілям підвищення конкурентноздатності служить не тільки зниження ціни, але, також, і якість товару і його вигідні ознаки в порівнянні з аналогічним товаром конкурентів.

Найбільш важливим моментом для розроблювача, з економічної точки зору, є процес формування ціни. Програмні продукти являють собою досить специфічний товар з безліччю властивих їм особливостей. Багато їхніх особливостей проявляються й у методах розрахунків ціни на них. На розробку програмного продукту середньої складності звичайно потрібні досить незначні засоби. Однак, при цьому він може дати економічний ефект, що значно перевищує ефект від використання досить дорогих систем.

Варто підкреслити, що у програмних продуктів практично відсутній процес фізичного старіння й зношування. Для них основні витрати приводяться на розробку зразка, тоді як процес тиражування являє собою, звичайно, порівняно нескладну й недорогу процедуру копіювання магнітних носіїв і супровідної документації.

В розробці користуємося мовою програмування Borland Delphi v.6.0.

Необхідні для розробки програмного продукту засоби обчислювальної техніки:

· IBM-сумісний комп'ютер, не нижче Pentium IІ, RAM-1024Mb;

· Монітор із SVGA адаптером;

· НЖМД 80 Гбайт;

· НГМД 3,5 дюйми;

· Компакт-дисковий носій (CD);

· Клавіатура, маніпулятор типу "миша".

6.1 Визначення витрат на створення програмного продукту

Для визначення витрат на створення програмного продукту необхідно розрахувати:

- витрати на оплату праці розроблювачів програми й відрахування на соціальне забезпечення.

Таблиця 6.1

Календарний план виконання робіт по створенню програми

Найменування етапів виконання робіт

Кількість затрачених годин

Знайомство з проблемою і визначення шляхів її вирішення

2

Розробка структури інформаційної системи

5

Розробка моделі дослідження контролерів MS Office

5

Розробка програмного продукту

10

Налагодження програми на ПК

1

Підготовка документації по програмному забезпеченню

5

Таким чином, користуючись календарним планом виконання робіт, можемо розрахувати сумарну трудомісткість.

tрозр.= tпробл.+ tстр..+ tмод.+ tпрогр.+ tнал.+ ttдок , де

tпробл. - час на знайомство з проблемою й визначення шляхів її вирішення,

tстр. - час на розробку структури інформаційної системи,

tмод. - час на розробку моделі бази даних;

tпрогр... - час на розробку програмного продукту,

tнал..- час на налагодження програми на ПК,

ttдок...- час на підготовку документації по задачі,

tрозр. = 2+5+5+10+1+5 = 28 [люд./годин]

Для визначення середньої годинної оплати програміста необхідно спочатку визначити його річний фонд грошового забезпечення. Це можна зробити, знаючи місячне грошове забезпечення програміста. Воно складає приблизно 1200,00 гривень. Крім того він отримує раз на рік матеріальну допомогу на оздоровлення в розмірі 360 гривень та щомісячну премію в розмірі 420 гривень.


Подобные документы

  • База даних як складова частина інформаційної системи. Загальні принципи створення контролерів автоматизації MS Office. Розробка гнучкої комп'ютеризованої системи, призначеної для автоматизації розрахунку учбового навантаження. Моделі представлення даних.

    дипломная работа [4,7 M], добавлен 26.10.2012

  • Об'єктна модель MS Excel. Загальні принципи створення контролерів автоматизації MS Office. Створення об'єкту Excel. Application, запуск і візуалізація вікна додатку. Загальні характеристики середовища Delphi. Високопродуктивний компілятор у машинний код.

    дипломная работа [1,2 M], добавлен 26.10.2012

  • Дослідження технології com та принципи створення контролерів автоматизації Ms Office і Ms Excel. Розробка програмного забезпечення для збору статистичного ряду показників в умовах неврологічного відділення Криворізького інституту професійних захворювань.

    дипломная работа [2,8 M], добавлен 22.10.2012

  • Реалізація гнучкої спеціалізованої системи підприємництва в середовищі Delphi 6.0 за допомогою технології доступу до баз даних ADO. Розробка елементів системи, її призначення для накопичення і обробки інформації про обіг товарів приватного підприємства.

    дипломная работа [1,3 M], добавлен 26.10.2012

  • Delphi як візуальне середовище розробки програмного забезпечення. Створення автоматизованої системи відстеження дзвінків з мобільних телефонів працівниками правоохоронних органів. Основи технології ACTIVEX DATA OBJECTS. Функціональні можливості системи.

    дипломная работа [5,0 M], добавлен 26.10.2012

  • Общая характеристика приложения Microsoft Office system 2007. Особенности форматов Microsoft Office Open XML. Технологии управления миграцией на новую версию. Возможности приложений Office Word, Excel, Access и Office PowerPoint 2007, их интеграция.

    реферат [1,0 M], добавлен 13.09.2011

  • Изменение пользовательского интерфейса приложения Microsoft Office system 2007. Увеличение функциональности приложений для поддержки совместной работы (Office Word 2007, Office Excel 2007, Office PowerPoint 2007, Office Access 2007 и Office Outlook 2007).

    контрольная работа [1,5 M], добавлен 13.12.2009

  • Види інформаційних систем. Програмна реалізація гнучкої системи для автоматизованої реєстрації та обліку руху імунобіологічних препаратів в середовищі Delphi 6.0 з використанням технології доступу до баз даних ADO. Розрахунок витрат на розробку програми.

    дипломная работа [3,2 M], добавлен 25.10.2012

  • Аналіз особливостей конвертації файлів графічних форматів з використанням технології dotNet і створення системи, яка дозволяє наочно проілюструвати принципи програмування з використанням особливостей цієї платформи. Етапи створення windows-додатків.

    дипломная работа [3,1 M], добавлен 22.10.2012

  • Підстава для створення системи Компас-3D. Характеристика розробленого програмного забезпечення. Призначення і характеристики систем автоматизації конструкторської документації. Дослідження методів створення динамічних бібліотек в середовищі Delphi.

    дипломная работа [3,3 M], добавлен 22.10.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.