
- •1. Основні терміни технології програмування
- •2. Класифікація програмного забезпечення
- •Поняття життєвого циклу розробки програмного забезпечення.
- •Етапи розробки
- •Базові моделі розробки програмних продуктів.
- •Вимоги до методології та технології розробки пп
- •Каскадна модель
- •3. Модель прототипування програмного продукту
- •4. Спіральна модель
- •5. Модель rad
- •6. Модель екстремального програмування (xp)
- •7. Модель msf (Microsoft Solutions Framework)
- •Принципи й види налагодження.
- •Аксіоми налагодження.
- •Автономне налагодження модуля.
- •Комплексне налагодження програмного засобу.
- •Інструменти розробки програмних засобів.
- •Інструментальні середовища розробки й супроводу програмних засобів.
- •Інструментальні середовища програмування.
- •Поняття комп'ютерної технології розробки програмних засобів і її робочі місця.
- •Інструментальні системи технології програмування.
- •Приклад реалізації класу Log.
- •Розробка програмного продукту з двома потоками
- •Визначення крапок контролю програмного продукту.
- •Визначення кількості викликів
- •Визначення ступеня покриття
- •Фундаментальні проблеми профілювання.
- •Причини рефакторингу
- •Підстави для проведення рефакторингу
- •Прийоми рефакторингу
- •Автоматизований рефакторинг
- •1. Принципи повторного використання елементів програм
- •2. Створення шаблонів форм у вигляді файлів
- •3. Використання шаблонів форм у новому проекті
- •4. Збереження шаблонів форм в депозитарії
- •5. Використання шаблонів форм із депозитарію
- •Шаблони класів на мові програмування с#.
- •Приклади шаблонів (класів шаблонів).
- •1. Використання підпрограм в оброблювачах подій
- •2. Звертання до активного компонента не за ім’ям
- •2. Обробка групи компонентів
- •4. Обробка компонентів як масиву
- •5. Сортування даних у компонентах
- •1. Принципи модульного програмування
- •2. Принцип «приховання даних»
- •3. Поняття модуля в Object Pascal
- •4. Структура модульного файлу
- •5. Створення модуля в Object Pascal
- •6. Створення модуля з переліком стандартних діалогів
- •7. Використання текстових констант у модулях
- •8. Створення підпрограм для обробки компонентів
- •1. Поняття dll
- •2. Створення dll бібліотеки в Delphi
- •3. Внесення форм в dll
- •4. Використання dll бібліотеки
- •Питання для самоконтролю
- •Використання регулярних виразів у програмах.
- •1. Призначення зовнішніх компонентів
- •2. Установка й видалення зовнішніх компонентів
- •3. Установка й видалення бібліотек компонентів
- •4. Запуск зовнішніх програм і файлів
- •Питання для самоконтролю
- •1. Загальні принципи технології com
- •2. Робота з com-сервером Microsoft Word
- •Робота з документами в Microsoft Word
- •Використання шаблону для формування документів
- •Робота з таблицями
- •Вставка малюнків і їх форматування
- •1. Операції з Com-Сервером Microsoft Excel
- •Робота із книгами в Microsoft Excel
- •Робота з аркушами книги в Microsoft Excel
- •Використання шаблону для формування книги
- •Формування таблиці
- •6. Форматування чарунок
- •Види довідкових систем
- •Інші засоби підтримки користувача
- •2.Формати довідників
- •3.Створення довідки у форматі html Help
- •4.Створення контекстної довідки
- •5.Інтеграція довідкового файлу в додаток
- •Перелік шаблонів, що породжують
- •Перелік структурних шаблонів
- •Перелік шаблонів поведінки
- •Призначення патерну Singleton
- •Реалізація патерну Singleton
- •Результати застосування патерну Singleton
- •Призначення патерна Observer
- •Постановка проблеми, що вирішується за допомогою патерна
- •Структура патерна Observer
- •Приклад патерна Observer
- •Реалізація патерна Observer
- •Реалізація патерну Observer: до та після
- •Призначення патерну Strategy
- •Опис патерну Strategy
- •Реалізація патерну Strategy
- •Призначення патерна Factory Method
- •Опис патерну Factory Method
- •Реалізація патерна Factory Method
6. Форматування чарунок
Для форматування чарунок використовують такі властивості:
//задає колір тла в чарунках діапазону
e.activeworkbook.sheets.item[i].range['діапазон'].interior.colorindex:=колір;
//задає товщину границі. Може приймати значення 1, 2, 4, -4138
e.activeworkbook.sheets.item[i].range['діапазон'].borders.weight:=число;
//задає тип лінії границі. Може приймати значення 1, 4, 5, 13, -4115, -4118, -4119, -4142
e.activeworkbook.sheets.item[i].range['діапазон'].border.linestyle:=тип;
//задає колір лінії границі
e.activeworkbook.sheets.item[i].range['діапазон'].border.color:=колір;
Приклад класу роботи з Excel на мові С#.
using System;
using System.Drawing;
using System.Globalization;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
namespace SaturnRep
{
public class RepExcel : IDisposable
{
public Excel.Application excelapp;
Excel.Workbooks excelappworkbooks;
Excel.Workbook excelappworkbook;
private Excel.Sheets excelsheets; // лист в екселе
private Excel.Worksheet excelworksheet; // ячейка
private Excel.Range excelcells; // диапазон ячеек
// Конструктор
public RepExcel()
{
excelapp = new Excel.Application();
excelapp.Visible = false;
}
// Деструктор
public void Dispose()
{
// Release COM objects (very important!)
if (excelapp != null)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelapp);
if (excelappworkbooks != null)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelappworkbooks);
if (excelappworkbook != null)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelappworkbook);
if (excelsheets != null)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelsheets);
if (excelworksheet != null)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelworksheet);
if (excelcells != null)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelcells);
excelapp = null;
excelappworkbooks = null;
excelappworkbook = null;
excelsheets = null;
excelworksheet = null;
excelcells = null;
GC.Collect();
ClassReportLog.error("RepExcel", "Dispose OK", 3, true );
// GC.GetTotalMemory(true);
}
//************************************************************************************************************************************************
// Coхранение книги с заданным именем
public void CreateNewBook(string fullPathAndFilename)
{
try
{
excelapp.SheetsInNewWorkbook = 5;
excelapp.Workbooks.Add(Type.Missing);
excelapp.DisplayAlerts = false;
//Получаем набор ссылок на объекты Workbook (на созданные книги)
excelappworkbooks = excelapp.Workbooks;
//Получаем ссылку на книгу 1 - нумерация от 1
excelappworkbook = excelappworkbooks[1];
excelsheets = excelappworkbook.Worksheets;
//Получаем ссылку на лист 1
excelworksheet = (Excel.Worksheet)excelsheets.get_Item(1);
excelworksheet.Name = "Saturn Data";
excelappworkbook.Saved = true;
excelappworkbook.SaveAs(fullPathAndFilename, Excel.XlFileFormat.xlExcel7, //object FileFormat
Type.Missing, //object Password
Type.Missing, //object WriteResPassword
Type.Missing, //object ReadOnlyRecommended
Type.Missing, //object CreateBackup
Excel.XlSaveAsAccessMode.xlNoChange,//XlSaveAsAccessMode AccessMode
Type.Missing, //object ConflictResolution
Type.Missing, //object AddToMru
Type.Missing, //object TextCodepage
Type.Missing, //object TextVisualLayout
Type.Missing);
excelapp.Workbooks.Close();
excelapp.Quit();
ClassReportLog.info("CreateNewBook " + fullPathAndFilename, "OK", 3, true);
}
catch (Exception ex)
{
ClassReportLog.error("CreateNewBook " + fullPathAndFilename, ex.Message, 3, true);
excelapp.Quit();
Dispose();
}
}
public void OpenBook(string fullPathAndFilename)
{
try
{
excelapp.Workbooks.Open(fullPathAndFilename,
Type.Missing, false, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
ClassReportLog.info( "OpenBook " + fullPathAndFilename, "OK",3,true);
}
catch(Exception ex) { ClassReportLog.error( "OpenBook", ex.Message,3, true);}
}
public void CloseBook()
{
try
{
excelapp.Workbooks.Close();
excelapp.Quit();
ClassReportLog.error( "CloseBook", "OK", 3, true);
}
catch (Exception ex)
{
ClassReportLog.error("CloseBook", ex.Message, 3, true);
}
}
public void Save(string fullPathAndFilename)
{
try
{
excelappworkbooks = excelapp.Workbooks;
//Получаем ссылку на книгу 1 - нумерация от 1
excelappworkbook = excelappworkbooks[1];
excelappworkbook.Saved = false;
excelappworkbook.Save(); /*As(fullPathAndFilename, Excel.XlFileFormat.xlExcel8, //object FileFormat
Type.Missing, //object Password
Type.Missing, //object WriteResPassword
false, //object ReadOnlyRecommended
Type.Missing, //object CreateBackup
Excel.XlSaveAsAccessMode.xlNoChange,//XlSaveAsAccessMode AccessMode
Type.Missing, //object ConflictResolution
Type.Missing, //object AddToMru
Type.Missing, //object TextCodepage
Type.Missing, //object TextVisualLayout
Type.Missing);
* */
}
catch(Exception ex) {
ClassReportLog.error("Save", ex.Message, 3, true);
// MessageBox.Show("Возникла проблема при сохранении файла. " + ex.Message);
}
}
public void SaveAs(string fullPathAndFilename)
{
try
{
excelappworkbooks = excelapp.Workbooks;
//Получаем ссылку на книгу 1 - нумерация от 1
excelappworkbook = excelappworkbooks[1];
excelappworkbook.Saved = true;
excelappworkbook.SaveAs(fullPathAndFilename, Excel.XlFileFormat.xlExcel7, //object FileFormat
Type.Missing, //object Password
Type.Missing, //object WriteResPassword
false, //object ReadOnlyRecommended
Type.Missing, //object CreateBackup
Excel.XlSaveAsAccessMode.xlNoChange,//XlSaveAsAccessMode AccessMode
Type.Missing, //object ConflictResolution
Type.Missing, //object AddToMru
Type.Missing, //object TextCodepage
Type.Missing, //object TextVisualLayout
Type.Missing);
ClassReportLog.info("SaveAs " + fullPathAndFilename, "OK", 3, true);
}
catch(Exception ex)
{
ClassReportLog.error("SaveAs " + fullPathAndFilename, ex.Message, 3, true);
// MessageBox.Show("Возникла проблема при сохранении файла. " + ex.Message);
}
}
public void SetValue(string pageName, string address, string StrValues, string typeValue, bool isBold = false) // "A10", "значение"
{
excelappworkbooks = excelapp.Workbooks;
//Получаем ссылку на книгу 1 - нумерация от 1
excelappworkbook = excelappworkbooks[1];
excelsheets = excelappworkbook.Worksheets;
try
{
excelworksheet = (Excel.Worksheet)excelsheets[pageName];
//MessageBox.Show("Страница найдена");
}
catch(Exception ex) {
ClassReportLog.error("SetValue page - " + pageName + " address - " + address + " Value - " + StrValues, ex.Message, 3, true);
// MessageBox.Show("Страница не найдена");
excelsheets.Add();
excelworksheet = (Excel.Worksheet)excelsheets.get_Item(excelsheets.Count);
excelworksheet.Name = pageName;
}
try
{
excelcells = excelworksheet.get_Range(address, address);
if (typeValue == "double") excelcells.Value2 = Convert.ToDouble(StrValues, CultureInfo.GetCultureInfo("en-US").NumberFormat); //Convert.ToDouble(StrValues);
if (typeValue == "string") excelcells.Value2 = StrValues;
if (isBold) excelcells.EntireRow.Font.Bold = true;
ClassReportLog.info("SetValue page - " + pageName + " address - " + address + " Value - " + StrValues, " OK",3, true);
}
catch (Exception ex)
{
ClassReportLog.error("SetValue page - " + pageName + " address - " + address + " Value - " + StrValues, ex.Message, 3, true);
}
}
public string GetValue(string pageName, string address)
{
excelappworkbooks = excelapp.Workbooks;
//Получаем ссылку на книгу 1 - нумерация от 1
excelappworkbook = excelappworkbooks[1];
excelsheets = excelappworkbook.Worksheets;
excelworksheet = (Excel.Worksheet)excelsheets[pageName];
excelcells = excelworksheet.get_Range(address, address);
return Convert.ToString(excelcells.Value2);
}
public void HidenRow(string pageName, int indexRow)
{
excelappworkbooks = excelapp.Workbooks;
//Получаем ссылку на книгу 1 - нумерация от 1
excelappworkbook = excelappworkbooks[1];
excelsheets = excelappworkbook.Worksheets;
//Получаем ссылку на лист
excelworksheet = (Excel.Worksheet)excelsheets[pageName];
excelworksheet.Range["A"+Convert.ToString(indexRow),"A"+Convert.ToString(indexRow)].Rows.Hidden = true;
}
public void DisplayLine(string pageName, int indexRow)
{
excelappworkbooks = excelapp.Workbooks;
//Получаем ссылку на книгу 1 - нумерация от 1
excelappworkbook = excelappworkbooks[1];
excelsheets = excelappworkbook.Worksheets;
//Получаем ссылку на лист
excelworksheet = (Excel.Worksheet)excelsheets[pageName];
excelworksheet.Range["A" + Convert.ToString(indexRow), "A" + Convert.ToString(indexRow)].Rows.Hidden = false;
}
}
}
Питання для самоконтролю
1. Опишіть принципи запуску Excel із проектів Delphi
2. Опишіть принципи створення книги Excel на основі шаблону.
3. Опишіть принципи збереження і відкриття книг Excel в проектах Delphi.
4. Опишіть принципи закриття книг Excel та закриття програми Excel в проектах Delphi.
5. Опишіть принцип роботи з аркушами Microsoft Excel. Приклад.
6. Яка команда дозволяє замінити старий текст на аркуші Excel на новий текст? Приклад.
7. Які властивості й методи гнізд ви знаєте для роботи з діапазоном гнізд Excel?
8. Яка властивість дозволяє вводити у чарунку аркуша Excel текст формули? Приклад.
9. Які особливості треба враховувати при введенні формули в чарунку Excel при створенні програм в Delphi?
10. Які властивості використовуються для форматування гнізд на аркуші Excel при створенні програм в Delphi?
Лекція №17
Тема: Документування програмних продуктів. Розробка систем допомоги та підказок у програмах.
Мета: Придбати знання у строренні довідникових систем при розробці програмного забезпечення.
Перелік питань, що розглядаються на лекції:
1. Види довідкових систем
2. Формати довідників
3. Створення довідки у форматі HTML Help
4. Створення контекстної довідки
5. Інтеграція довідкового файлу в додаток