Shift + стрілки | Змінює розмір компонента на один піксель в напрямку вибраної стрілки |
Shift + Ctrl + стрілки | Переміщує компонент на одну одиницю сітки в напрямку вибраної стрілки |
Ctrl + стрілки | Переміщує компонент на один піксель в напрямку вибраної стрілки |
Можна також вирівняти компоненти, використовуючи пункт меню View / Alignment Palette. Для цього потрібно:
Вибрати компоненти для вирівнювання.
Вибрати пункт меню View / Alignment Palette.
Вибрати потрібну кнопку.
Можна вирівняти компоненти, використовуючи пункт меню Edit / Align. Для цього потрібно:
Вибрати компоненти для вирівнювання.
Вибрати пункт меню Edit / Align. З'явиться діалогове вікно Alignment.
Вибрати потрібну опцію і натиснути на кнопку OK.
Можна змінити умови вирівнювання компонент, використовуючи пункт меню Options / Environment. Для цього потрібно:
1. Вибрати пункт меню Options / Environment. Діалогове вікно Environment з'явиться відкритим на сторінці Preferences.
2. У групі Form designer можна вибрати наступні опції:
Display grid - зробити сітку з точок на формі видимої для вирівнювальних компонентів
Snap to grid - змусити ліві і верхні боку компонентів розташуватися на лініях сітки.
3. Для того, щоб змінити відстань між вузлами сітки, потрібно ввести нові значення замість наявних. Значення за замовчуванням - 8 пікселів по осі X (по горизонталі) і по осі Y (по вертикалі).
4. Натиснути OK.
Робота з базами даних у Borland C + + Builder.
Використовуючи Borland C + + Builder, можна створити програми, що працюють як з однокористувацький базами даних (БД), так і з серверними СУБД, такими як Oracle, Sybase, Informix, Interbase, MS SQL Server, DB2, а також з ODBC-джерелами. Можливості C + + Builder, пов'язані зі створенням додатків, що використовують бази даних, досить великі для того, щоб описати їх в одній статті. Тому сьогодні ми розглянемо лише найпростіші можливості роботи з таблицями баз даних.
Набір даних в C + + Builder - це об'єкт, який складається з набору записів, кожна з яких, у свою чергу, складається з полів, і покажчика поточного запису. Набір даних може мати повну відповідність з реально існуючої таблицею або бути результатом запиту, він може бути частиною таблиці або об'єднувати між собою декілька таблиць.
Набір даних в C + + Builder є нащадком абстрактного класу TDataSet (абстрактний клас - це клас, від якого можна породжувати інші класи, але не можна створити екземпляр об'єкта даного класу). Наприклад, класи TQuery, TTable і TStoredProc, що містяться на сторінці палітри компонентів Data Access, - спадкоємці TDBDataSet, який, у свою чергу, є спадкоємцем TDataSet. TDataSet містить абстракції, необхідні для безпосереднього управління таблицями або запитами, забезпечуючи засоби для того, щоб відкрити таблицю або виконати запит і переміщатися по рядках.
Компонент TDataSource
Компонент DataSource діє як посередник між компонентами TDataSet (TTable, TQuery, TStoredProc) і компонентами Data Controls - елементами управління, що забезпечують представлення даних на формі. Компоненти TDataSet управляють зв'язками з бібліотекою Borland Database Engine (BDE), а компонент DataSource управляє зв'язками з даними в компонентах Data Controls.
У типових додатках БД компонент DataSource, як правило, пов'язаний з одним компоненом TDataSet (TTable або TQuery) і з одним або більше компонентами Data Controls (такими, як DBGrid, DBEdit та ін.) Зв'язок цього компоненту з компонентами TDataSet і DataControls здійснюється з використанням наступних властивостей і подій:
Властивість DataSet компонента DataSource ідентифікує ім'я компонента TDataSet. Можна привласнити значення властивості DataSet на етапі виконання або за допомогою інспектора об'єктів на етапі проектування.
Властивість Enabled компонента DataSource активізує або зупиняє взаємозв'язок між компонентами TDataSource і Data Controls. Якщо значення властивості Enabled одно true, то компоненти Data Controls, пов'язані з TDataSource, сприймають зміни набору даних. Використання властивості Enabled дозволяє тимчасово роз'єднувати візуальні компоненти Data Controls і TDataSource, наприклад, для того, щоб у разі пошуку в таблиці з великою кількістю записів не відображати на екрані гортання всієї таблиці.
Властивість AutoEdit компонента DataSource контролює, як ініціюється редагування для компонентів Data Controls. Якщо значення властивості AutoEdit одно true, то режим редагування починається безпосередньо при отриманні фокусу компонентом Data Controls, пов'язаних з даним компонентом TDataSet. В іншому випадку режим редагування починається, коли викликається метод Edit компонента TDataSet, наприклад, після натиснення користувачем кнопки Edit на компоненті DBNavigator. · Подія OnDataChange компонента DataSource настає, коли відбувається зміна значення поля, записи, таблиці, запиту.
Подія OnUpdateData компонента DataSource настає, коли користувач намагається змінити поточну запис у TDataSet. Оброблювач цієї події слід створювати, коли потрібно дотриматися умов посилальної цілісності або обмеження, що накладаються на значення полів змінною бази даних.
Компонент TTable
Найбільш простим способом звернення до таблиць баз даних є використання компонента TTable, що надає доступ до однієї таблиці. Для цієї мети найбільш часто використовуються наступні властивості:
Active - вказує, відкрита (true) чи ні (false) дана таблиця.
DatabaseName - ім'я каталогу, що містить шукану таблицю, або псевдонім (alias) віддаленої БД (псевдоніми встановлюються за допомогою утиліти конфігурації BDE, опис якої присутня в багатьох джерелах, присвячених продуктам Borland, або за допомогою SQL Explorer, що викликається за допомогою пункту меню Database / Explore ). Ця властивість може бути змінено тільки в разі, якщо таблиця закрита (її властивість Active одно false), наприклад:
Table1-> Active = false;
Table1-> DatabaseName = "BCDEMOS"
Table1-> Active = true;
TableName - ім'я таблиці.
Exclusive - якщо це властивість приймає значення true, то ніякий інший користувач не може відкрити таблицю, якщо вона відкрита даними додатком. Якщо це властивість одно false (значення за замовчуванням), то інші користувачі можуть відкривати цю таблицю.
IndexName - ідентифікує вторинний індекс для таблиці. Цю властивість не можна змінити, поки таблиця відкрита.
MasterFields - визначає ім'я поля для створення зв'язку з іншою таблицею.
MasterSource - ім'я компоненту TDataSource, за допомогою якого TTable буде отримувати дані з пов'язаної таблиці.
ReadOnly - якщо це властивість одно true, таблиця відкрита в режимі "тільки для читання". Не можна змінити властивість ReadOnly, поки таблиця відкрита.
Eof, Bof - ці властивості приймають значення true, коли покажчик поточного запису розташований на останній або відповідно першого запису таблиці.
Fields - масив об'єктів TField. Використовуючи цю властивість, можна звертатися до полів за номером, що зручно, коли заздалегідь невідома структура таблиці:
Edit1-> Text = Table1-> Fields [2] -> AsString;
Найбільш часто при роботі з компонентом TTable використовуються наступні методи:
Open і Close встановлюють значення властивості Active рівними True і False відповідно.
Refresh дозволяє заново вважати набір даних з БД.
First, Last, Next, Prior переміщують покажчик поточного запису на першу, останню, наступну і попередню запису відповідно, наприклад:
Table1-> First ();
while (! Table1-> Eof)
{
/ / Щось робимо ...
Table1-> Next ();
};
MoveBy переміщає покажчик на вказане число рядків (воно може бути і негативним) в межах таблиці
Insert, Edit, Delete, Append - переводять таблицю в режими вставки запису, редагування, видалення, додавання запису відповідно.
Post - здійснює фізичне збереження змінених даних. Наприклад:
Table2-> Insert ();
Table2-> Fields [0] -> AsInteger = 100;
Table2-> Fields [1] -> AsString = Edit1-> Text;
Table2-> Post ();
Cancel - відміняє внесені зміни, не збережені фізично.
FieldByName - надає можливість звернення до даних у полях на ім'я поля:
S = Table1-> FieldByName ("area") -> AsString;
SetKey перемикає таблицю в режим пошуку.
GotoKey починає пошук рядка, значення Fields [n] якої одно вибраному, де n - номер колонки таблиці, починаючи з 0:
Table1-> SetKey ();
Table1-> Fields [0] -> AsString = Edit1-> Text;
Table1-> GotoKey ();
SetRangeStart, SetRangeEnd, ApplyRange дозволяють вибрати потрібні рядки на основі діапазону значень якого-небудь поля.
Table1-> SetRangeStart ();
Table1-> Fields [0] -> AsString = Edit1-> Text;
Table1-> SetRangeEnd ();
Table1-> Fields [0] -> AsString = Edit2-> Text;
Table1-> ApplyRange ();
FreeBookmark, GetBookmark, GotoBookmark-дозволяють створити позначену рядок у таблиці і потім повернутися до неї пізніше. Методи Bookmark використовують клас TBookmark. Метод GetBookmark встановлює закладку на поточному Рядок таблиці. GotoBookmark здійснює переміщення в таблиці до рядка, раніше зазначеної закладкою. Метод FreeBookmark використовується для знищення об'єкту типу TBookmark:
TBookmark Marker = Table1-> GetBookmark ();
Table1-> GotoBookmark (Marker);
Table1-> FreeBookmark (Marker);
Події компонента TTable дозволяють будувати і контролювати поведінку додатку ий БД. Наприклад, подія BeforePost настає перед вставкою або зміною запису, подія AfterPost - після збереження вставленої або зміненої запису, подія AfterDelete - після видалення запису і т.д.
Щоб внести компонент TTable у форму, потрібно виконати наступне:
1. Використовуючи сторінку Data Access палітри компонентів, розмістити компонент TTable на формі або в модулі даних.
2. Властивості DatabaseName присвоїти ім'я каталогу, де знаходиться БД, або псевдо има БД.
3. Властивості TableName привласнити ім'я таблиці або вибрати таблицю зі списку.
4. Внести до форму компонент DataSource і встановити значення властивості DataSet рівним імені компонента TTable.
5. Внести компоненти Data Controls і пов'язати їх з компонентом DataSource для того, щоб відобразити на екрані дані з таблиці БД.
Компонент TField
Об'єкти класу TField є властивістю об'єкта TDataSet (нагадаємо, що деякі властивості об'єктів самі є об'єктами з їх власними наборами властивостей, і TField - один з них).
Властивість Fields об'єкта типу TDataSet дозволяє звертатися до окремих полів набору даних. Властивість Fields є масивом або набором об'єктів TField, динамічно створюються під час виконання програми. Елементи масиву відповідають колонкам таблиці.
Об'єкт TField не робить ніяких припущень щодо типів даних, з якими він пов'язаний. Він має кілька властивостей, що дозволяють встановити або повернути назад значення поля, наприклад, AsString, AsBoolean, AsFloat, AsInteger. Найбільш часто використовуються властивості Text (дані для тексту, що виводиться в пов'язаний з даним полем інтерфейсний елемент) і FieldName (ім'я поля бази даних).
Fields Editor дозволяє створити так званий статичний список полів таблиці, що додаються до опису класу форми. Коли вперше використовуються такі компоненти TDataSet, як компонент TTable або TQuery, список полів для них динамічно генерується в процесі виконання програми на основі наявних стовпців таблиць або результатів SQL-запиту. Fields Editor дозволяє визначити і потім модифіковані статичний список компонентів Field на етапі проектування програми. При внесенні колонок з використанням Fields Editor для кожного з полів, доданих до TDataSet, виникають об'єкти TField, після чого можна побачити ці поля в інспекторі об'єктів і використовувати у програмах їх властивості, події і методи.
Використовувати Fields Editor потрібно таким чином:
Розмістити компонент TTable або TQuery на формі.
Встановити властивість DatabaseName для TTable або TQuery.
Встановити властивість TableName компонента TTable або властивість SQL компонента TQuery.
Вибрати компонент TDataSet на формі і натиснути праву клавішу миші, після чого з'явиться контекстне меню.
З контекстного меню вибрати Fields Еditor. З'явиться порожнє вікно із заголовком, що збігається з ім'ям компонента TTable.
Знову натиснути праву клавішу миші над порожнім вікном і з контекстного меню виб ати опцію Add Fields.Імена всіх колонок таблиці або запиту з'являться в діалоговій панелі Add Fields.
Вибрати поля, які потрібно внести до списку об'єктів, і натиснути OK.
Якщо потрібно створити обчислюване поле на основі наявних полів, натиснути праву клавішу миші і з контекстного меню вибрати New Field для створення нового поля на основі існуючого або для створення обчислюваного поля (в подальшому слід створити код обробника події OnCalcFields компонента TTable, де і проводяться необхідні обчислення ).
Якщо необхідно видалити статичне поле зі списку полів в наборі даних, потрібно натиснути праву клавішу миші і з контекстного меню вибрати Delete.
Після того, як у Fields Editor додані поля, вони з'являться в інспектора об'єктів, а посилання на них - у h-файлі форми.
Якщо тепер застосувати операцію drag-and-drop до виділених в Fields Editor полях, перенісши їх на форму, то можна отримати готову форму з необхідним набором інтерфейсних елементів (у нашому випадку - DBEdit, що дозволяє відображати і редагувати рядкові, числові, грошові та інші поля , чиї значення представимо у вигляді рядка символів, і DBImage, що дозволяє відображати графічні поля і використовувати Clipboard для їх редагування). Якщо до такої форми додати компонент TDBNavigator (цей компонент реалізує основні методи TTable і TQuery, пов'язані з редагуванням даних) і пов'язати його з наявним компонентом TDataSource, а потім скомпілювати проект, отримаємо додаток для перегляду і редагування даних в таблиці.
При роботі Fields Editor створюються об'єкти, відповідні дивись в інспекторі об'єктів полях. Ці об'єкти є нащадками об'єктного типу TField. Таблиця 1 описує існуючі класи таких об'єктів:
Таблиця 1. Нащадки TField
Нащадок | Опис |
TStringField | Текстові дані фіксованої довжини до 8192 символів. |
TAutoIncField | Цілі числа від -2,147,483,648 до 2,147,483,647. Призначений для нумерації ст ок в наборі даних. Нащадок TIntegerField. |
TIntegerField | Цілі числа від -2,147,483,648 до 2,147,483,647. |
TSmallIntField | Цілі числа від -32768 до 32767. |
TWordField | Цілі числа від 0 до 65535. |
TFloatField | Дійсні числа з абсолютною величиною від 1.2x10e-324 до 1.7x10e308 з точністю до 15-16 цифри. |
TCurrencyField | Дійсні числа з абсолютною величиною від 1.2x10e-324 до 1.7x10e308 з точністю до 15-16 цифри. |
TBooleanField | Значення true або false. |
TDateTimeField | Значення дати й часу. |
TDateField | Значення дати. |
TTimeField | Значення часу. |
TBlobField | Довільне поле даних без обмежень розміру. |
TBytesField | Довільне поле даних без обмежень розміру. |
TVarBytesField | Довільне поле даних до 65535 символів з фактичною довжиною, представленої в перших двох байтах. |
TMemoField | Текст довільної довжини. |
TGraphicField | Графічне поле довільної довжини, наприклад, бітовий масив. |
Компонент TDBGrid
Компонент TDBGrid забезпечує табличний спосіб відображення на екрані рядків даних з компонентів TTable або TQuery. Програма може використовувати TDBGrid для відображення, вставки, знищення, редагування даних БД. Зазвичай DBGrid використовується в поєднанні з DBNavigator, хоча можна використовувати й інші інтерфейсні елементи, включивши до їх обробники подій методи First, Last, Next, Ptior, Insert, Delete, Edit, Append, Post, Cancel компонента TTable.
Зовнішній вигляд таблиці (наприклад, написи в заголовках стовпців) може бути змінено за допомогою редактора властивостей Columns Editor. Для виклику Columns Editor потрібно або вибрати відповідну опцію в контекстному меню компонента DBGrid або клацнути мишею в колонці значень навпаки властивості Columns в інспектора об'єктів.
Другим способом отримання контролю над характеристиками DBGrid або іншими компонентами є створення описаним вище способом статичного набору компонентів TField. Маючи компонент типу TField, створений для кожного з полів у наборі даних, можна встановити ширину, формат, маску, розташування, позначку для відображення в DBGrid та інші характеристики.
Поля Float, Integer і Date володіють властивістю DisplayMask. Цю властивість можна використовувати, щоб форматувати дані в компоненті DBGrid або іншому компоненті Data Controls. Наприклад, екранний формат mm-dd-yy може використовуватися для розміщення полів типу дата.
Деякі компоненти TField (наприклад, TStringField) мають властивість EditMask, яке можна встановити, вводячи дані в DBGrid та інші компоненти Data Controls. Для установки властивості EditMask потрібно встановити компонент Field в Object Inspector і вибрати властивість EditMask, після чого з'явиться діалогова панель Input Mask Editor,. Щоб перевірити маску редагування, потрібно ввести значення в полі Test Input.
Постачання додатків, створених за допомогою С + + Builder
Однією з найважливіших проблем при розробці замовних програмних продуктів є остаточне складання проекту і постачання додатків. Ця проблема може бути вирішена різними способами залежно від умов поставки, кількості установок, складу поставленого продукту.
Постачання виконуваних файлів
При остаточному складанні виконуваного файлу (тобто безпосередньо перед створенням дистрибутива) слід прибрати з виконуваного файлу налагоджувальну інформацію. Для цього слід з менеджера проектів викликати діалогову панель Project Options і натиснути кнопку Release.
Якщо в проекті використовуються модулі і форми Delphi, слід відключити всі опції в секції Debugging і включити опцію Optimization в секції Code Generation на сторінці Pascal.
У тій же діалогової панелі слід вибрати піктограму додатки (сторінка Application). Її можна створити за допомогою вхідного в комплект постачання С + + Builder графічного редактора, який можна запустити, вибравши пункт меню Tools / image Editor. Крім цього, слід вказати назву програми (тобто рядок, яка буде відображатися в панелі завдань Windows) і ім'я файлу довідки, в якому містяться екрани контекстно-залежної допомоги.
Якщо посилання на довідковий файл присутній в опціях проекту, можна зв'язати екрани допомоги з інтерфейсними елементами додатку. Для цієї мети слід встановити значення властивості HelpContext інтерфейсних елементів програми рівним номерами розділів відповідних екранів допомоги з секції [MAP] файлу проекту довідки. У цьому випадку після компіляції програми натискання на клавішу F1 буде виводити на екран вікно довідкової системи з розділом довідки, що описує інтерфейсний елемент, що має фокус вводу.
Встановлення та налаштування Borland Database Engine
Якщо програма не використовує бази даних, в більшості випадків буде достатньо просто скопіювати на комп'ютер користувача виконуваний файл і інші входять у комплект постачання файли (наприклад, файл довідки, файл змісту довідки та ін.)
Якщо програма використовує бази даних, слід, крім програми, встановити на комп'ютер користувача бібліотеку Borland Database Engine. Встановлення цієї бібліотеки полягає в копіюванні файлів цієї бібліотеки на комп'ютер користувача, внесення відомостей про неї до реєстру (розділ HKEY_LOCAL_MACHINE / / SOFTWARE / / Borland / / Database Engine), встановлення піктограми для утиліти конфігурації BDE, а також налаштування псевдонімів, необхідних для коректної роботи цього додатка.
У процесі установки BDE можуть виникнути такі проблеми. По-перше, у користувача на комп'ютері можуть бути встановлені інші програми, що використовують цю бібліотеку. Якщо скопіювати на такий комп'ютер файл конфігурації BDE поверх наявного, працездатність цих програм може бути порушена через те, що зникнуть описи псевдонімів, що використовуються ними. Тому при додаванні своїх псевдонімів краще користуватися опцією File / Merge утиліти конфігурації BDE або створити псевдоніми вручну.
Можна подивитися на цю проблему з іншого боку. Як уникнути втрати працездатності вашої програми, якщо інший програміст встановить свій файл конфігурації BDE поверх встановленого вами? Можливе рішення цієї проблеми - створювати псевдоніми динамічно під час роботи програми або аналізувати їх існування при запуску і створювати їх, якщо з якихось причин вони зникли. Багато розроблювачів зберігають інформацію про них в локальних ini-файлах поза IDAPI32.CFG.
Друга проблема може бути пов'язана з розбіжністю версій BDE. Якщо з моменту виходу використовуваної вами версії BDE пройшов якийсь час (а на даний момент після C + + Builder з'явилися такі продукти, як Delphi і IntraBuilder 1.5, що містять більш нову версію BDE, ніж С + + Builder), є ризик замінити старою версією BDE новішу, якщо на комп'ютері користувача встановлено ці засоби розробки або створені з їх допомогою програми, що може порушити їх працездатність.
Щоб уникнути подібних неприємностей, можна скористатися однією недокументованих особливостей BDE. Справа в тому, що час створення файлів цієї бібліотеки збігається з номером версії BDE, чим і можна скористатися. Шлях до файлів BDE слід шукати в реєстрі Windows (ключ HKEY_LOCAL_MACHINE \ SOFTWARE \ Borland \ Database Engine, параметри CONFIGFILE01 і DLLPATH).
Обов'язково слід переконатися, що ці каталоги і файли дійсно існують. На жаль, не всі користувачі грамотно деінсталює додатки. Часто буває, що став непотрібним каталог просто стирається, при цьому каталог з BDE може бути як видалений, а може, й ні. При цьому, швидше за все (виключення бувають дуже рідко) відповідний ключ реєстру збережеться, "збиваючи з пантелику" інсталяційне додаток.
Відзначимо, що слід також встановити на комп'ютер користувача необхідні драйвери SQL Links для доступу до серверних СУБД, якщо вони використовуються, а також клієнтське програмне забезпечення для роботи з відповідною серверної СУБД (наприклад, SQL * Net для Oracle). Крім того, користувач повинен володіти необхідними привілеями для доступу до використовуваних вашим застосуванням об'єктів бази даних - таблицями, збереженим процедур та ін Якщо ви готуєте і серверну частину програми, слід надати адміністратору бази даних так званий DDL-сценарій серверної частини (DDL - Data Definition Language), що представляє собою сценарій створення об'єктів бази даних, написаний на SQL або на його процедурному розширенні, характерному для даного сервера баз даних. Подібний сценарій може бути створений вручну або за допомогою якого-небудь CASE-засоби типу ERwin компанії Logic Works (CASE, що розшифровується як Computer-Aided Software / System Engineering, являє собою технологію проектування БД, засновану на графічному описі сутностей, атрибутів та зв'язків між ними).
Якщо ваш додаток використовує ODBC, слід встановити відповідний ODBC-драйвер і, можливо, 32-розрядний ODBC-адміністратор - він у загальному випадку не зобов'язаний бути присутнім на комп'ютері користувача.
Встановлення додаткових компонентів додатка
Якщо ваш додаток використовує ActiveX-компоненти, слід встановити в каталог Windows \ System відповідний файл *. OCX і внести до реєстру відповідні гілки (HKEY_CLASS_ROOT \ CLSID \ ....) для реєстрації відповідних OLE-серверів.
Якщо ваш додаток використовує будь-які продукти третіх фірм (наприклад, Run-time-версії генераторів звітів сторонніх виробників, наприклад, Crystal Reports), слід встановити їх на комп'ютер користувача у відповідності з інструкціями з поставки, наданими компанією-виробником.
Ще одна проблема, характерна для російськомовних програм, може бути пов'язана з відсутністю на комп'ютері користувача використовуваних вашим застосуванням шрифтів або відображенням їх аналогів, що містять замість російських букв діакритичні символи європейських алфавітів. Як вирішити цю проблему?
Найпростіший спосіб - не використовувати екзотичних шрифтів. Шрифти типу Arial, Courier і Times New Roman, як правило, є на всіх комп'ютерах. Якщо ж такої впевненості немає, можна або запропонувати користувачеві вибирати шрифти для застосування при його запуску та зберігати налаштування в файлах (це незручно, тому що при цьому написи можуть не вміститися на кнопках, мітки можуть "наїхати" один на одного і т.д. ), або інсталювати потрібні шрифти разом з додатком. У випадку Windows 95 достатньо скопіювати їх до каталогу Fonts. Можна також присвоїти "своїм" шрифтам унікальні нестандартні імена, щоб випадково не замінити ними шрифти, використовувані іншими додатками (замінивши в англомовній версії Windows шрифт Arial його російськомовною версією, ви в деяких випадках можете позбавити вашого користувача можливості писати в текстових процесорах по-французьки або по-німецьки цим шрифтом).
Способи створення дистрибутивів
Перш ніж описати процес створення дистрибутива, розглянемо, що саме робить інсталяційне додаток.
По-перше, воно, як випливає з вищевикладеного, копіює файли (*. exe, *. ocx, *. dll, *. hlp, шрифти, дані тощо) у відповідні каталоги.
По-друге, воно може модифікувати реєстр.
По-третє, воно може модифікувати змінну оточення PATH.
По-четверте, воно створює програмну групу і піктограми, а також модифікує меню Windows-95 або Windows NT.
По-п'яте, відповідно до загальноприйнятих стандартів, воно повинне надавати користувачеві можливість вибору параметрів установки (каталог, вибір встановлюваних частин програми), читання ліцензійної угоди і файлу readme, що містить останню інформацію про продукт.
По-шосте, вона може при необхідності перезапустити Windows.
Як створити інсталяційне додаток? Існує кілька варіантів рішення цієї проблеми. По-перше, його можна написати на C + + Builder або Delphi, використовуючи функції Windows API для модифікації реєстру згідно з алгоритмом, викладеному вище. По-друге, такий додаток можна створити з використанням генераторів дистрибутивів (InstallShield, Wise та ін.) Відзначимо, що використання цих коштів зазвичай передбачає написання спеціалізованого скрипта на мові, що нагадує С (у разі InstalShield) або Basic (у разі Wise).
Однак існує найпростіший спосіб створити інсталяційне додаток - використовувати вхідний в комплект постачання версій Borland C + + Builder версій Professional і Client / Server Suite спрощений генератор дистрибутивів Install Shield Exdivss, що дозволяє надати користувачеві можливість вибору варіанта інсталяції, додати дєїнсталлятор (точніше, файл з розширенням *. isu , використовуваний утилітою установки і видалення програм Windows 95), встановити BDE, додати псевдоніми баз даних, редагувати діалоги інсталяційного програми, створювати програмні групи, створювати дистрибутивні дискети.
Відразу ж відзначимо недоліки дистрибутивів, створених за допомогою цього продукту. По-перше, цей продукт припускає, що встановлювана (тобто наявна на комп'ютері, де створюється дистрибутив) версія BDE - найновіша, що може призвести до заміни наявної на комп'ютері користувача версії BDE на більш ранню. По-друге, деякі діалоги інсталяційного додатки виявляються англомовними.
Тим не менш, якщо перераховані недоліки не дуже важливі або можуть бути усунені в конкретному випадку (наприклад, шляхом вибору варіанта інсталяції), використання даного засобу може заощадити досить багато часу при створенні дистрибутива програми.
Створення дистрибутивів за допомогою InstallShield Exdivss
При запуску Install Shield Exdivss з'являється вікно з радіогрупою, що пропонує відкрити існуючий проект або створити новий.
При створенні нового проекту слід ввести ім'я проекту і вказати каталог, в якому розташовані файли програми.
Прапорець "Include custom setup type" слід вибрати, якщо ви плануєте надати користувачеві можливість вибору варіанта інсталяції Custom Setup для самостійного вибору варіанта інсталяції. Після цього з'явиться головний екран InstallShield, в якому перераховано послідовність кроків, які слід виконати для створення дистрибутива.
У розділі Set the Visual Design слід заповнити поля з відомостями про програму: назва програми, як воно буде виглядати в програмній групі, ім'я виконуваного файлу, каталог, в який слід встановити програму.
Відзначимо, що Install Shield містить кілька змінних, що ідентифікують диски і каталоги комп'ютера користувача, що дозволяє не знати реальну систему каталогів і дисків цього комп'ютера:
- Каталог для установки, зазначеної користувачем, - Каталог, в якому міститься Windows - Каталог Windows \ System - Диск, на якому міститься Windows - Диск, на якому міститься каталог Windows \ System - Каталог Program Files.
Клацнувши на закладці Main Window, можна встановити заголовок інсталяційного програми, колір фону і логотип.
Клацнувши на закладці Features, можна виявити одну-єдину опцію - Automatic Uninstaller. Її рекомендується залишити вибраної.
Наступний розділ - Specify InstallShield Options for Borland C + + - призначений для вибору компонентів, що часто поставляються з додатками: BDE, SQL Links та ін Вибравши потрібний компонент (у нашому випадку BDE) і натиснувши кнопку Settings, отримаємо послідовність з чотирьох діалогових вікон для вибору частин BDE, що поставляються з даними додатком, і створення псевдонімів.
При установці параметрів псевдонімів можна вибрати тип псевдоніма і місце розташування даних. Інші параметри псевдоніма (у тому числі і мовні драйвери) можна вказати в текстовому редакторі у нижній частині вікна.
Натиснувши на закладці Advanced Options, можна ознайомитися зі списком файлів додаткових компонентів (у нашому випадку BDE) та відомостями про них.
Наступний розділ - Specify Components and Files - призначений для визначення груп файлів, компонентів програми та типів установки. Клацнувши на закладці Groups, можна створити групи файлів для створення з них компонентів дистрибутива. Можна також використовувати Explorer і переносити з нього потрібні файли методом drag-and-drop (для цього потрібно натиснути кнопку Launch Explorer). Не рекомендується залишати групи порожніми.
Клацнувши на закладці Components, можна визначити компоненти дистрибутива (їх зможе вибирати користувач у разі вибору варіанта інсталяції Custom, тому можна дати їм російськомовні назви) та вказати, з яких груп файлів вони складаються. Не слід залишати компоненти, що не містять груп.
Наступна закладка - Setup Types - призначена для визначення варіантів установки. Якщо клацнути на ній, може виявитися, що варіант інсталяції його один - Typical (наприклад, ви забули відзначити прапорець "Include custom setup type"). У цьому випадку слід вибрати розділ Select User Interface Components і, клацнувши на закладці Components, у списку Dialog Boxes відзначити опції Setup Type і Custom Setup. Після цього можна повернутися до закладки Setup Types і визначити варіанти інсталяції. Як правило, варіанти Custom і Typical містять всі можливі компоненти, а варіант Compact - мінімальний набір компонентів, придатний для нормальної роботи програми.
У розділі Select User Interface Components можна вибрати діалоги, в яких користувач вводить необхідну інформацію під час інсталяції (наприклад, відомості про себе і компанії, серійний номер продукту), знайомиться з ліцензійною угодою і файлів readme, вказує каталог для інсталяції, вибирає тип установки і т.д. Можливий також попередній перегляд діалогів при натисканні кнопки Preview.
Наступний розділ - Make Registry Changes - дозволяє створювати на комп'ютері користувача нові ключі реєстру (закладка Keys) і значення ключів (Values). Це може виявитися корисним, якщо ви використовуєте у вашому додатку компоненти ActiveX або створюєте OLE-сервер. Ключі і їх значення можна копіювати з редактора реєстру, якщо він підтримує таку опреації.
Наступний розділ - Specify Folders and Icons - дозволяє визначити склад майбутньої програмної групи, а також визначити параметри командного рядка (закладка Advanced).
Нарешті, останній розділ - Run Disk Builder. Після збереження інсталяційного скрипта (за допомогою натиснення на кнопку з зображенням дискети на панелі інструментів головного вікна InstallShield) і вибору типу носіїв відбувається створення на жорсткому диску образів дистрибутивних дискет. Вибравши потім розділ Create Distribution Media, можна записати на дискети створений дистрибутив.
Опцію Test Run можна використовувати для перевірки роботи інсталяційного додатка. Проте не рекомендується робити це на комп'ютері, де виробляється розробка додатків. Краще провести тестові випробування на комп'ютері, схожому на комп'ютери ваших користувачів. Крім того, рекомендується створити на цьому комп'ютері копію Windows, щоб у випадку некоректної роботи інсталятора можна було повернути програмне забезпечення в початковий стан.
Запуск інсталяційної програми призводить до послідовного появи вибраних у розділі Select User Interface Components діалогів.
Результатом роботи інсталяційного додатка є установка додатку та необхідних для його роботи файлів на комп'ютер користувача, створення програмної групи, внесення необхідних ключів до реєстру.
Якщо при створенні дистрибутива ви вибрали опцію Automatic Uninstaller, то у випадку виникнення необхідності деінсталяції встановленого додатка треба використовувати утиліту "Установка і видалення програм" на панелі керування Windows.
Таким чином, хоча InstallShield Exdivss і не вирішує повністю всіх проблем, що виникають при постачанні додатків, з його допомогою в багатьох випадках можливе швидке створення дистрибутивів, що задовольняють сучасним вимогам до функціональності та дизайну інсталяційних додатків.
На закінчення відзначимо, що поставка додатків, створених за допомогою Delphi, здійснюється практично точно так само, як і постачання додатків, створених за допомогою C + + Builder.
Список використаної літератури
Джарод Холінгверт, Ден Баттерфілд, Боб Сворт, Джеймі Оллсоп C + + Builder 5. Керівництво розробника.
Borland C + + Builder 5. Енциклопедія програміста. Калверт Ч., Рейсдорф К., "ДіаСофт" - 2001, 944 стор
http://www.codenet.ru/