...
...

От Delphi 4 к Delphi 5 часть 39

От Delphi 4 к Delphi 5 Настройка репозитория.
Чтобы настроить репозиторий по своему вкусу и переместить его элементы на другие страницы (а также добавить в него новые элементы), вы можете воспользоваться меню Tools, далее необходимо выбрать команду Repository, которая откроет панель Object Repository. Эта панель очень проста в использовании.
Обратите внимание на то, что она разделена на две части: Pages и Objects. Левая часть Pages включает шесть страниц: Forms, Dialogs, Projects, Data Modules, Business, (Object Repository). Таким образом, в хранилище находится пять групп элементов. Object Repository объединяет все группы в одну.
Три кнопки, связанные со страницами, и две кнопки со стрелками, расположенные под списком страниц, помогут вам перегруппировать структуру Object Repository: добавить новые страницы, переименовать или удалить их, а также изменить их порядок. Все эти операции воздействуют также и на ярлычки самого репозитория.
Важным элементом настройки Object Repository является использование умолчаний. Так, вы можете работать с расположенным под списком объектов компонентом CheckBox, имеющим имя New Form, чтобы указать ту форму или эксперт, которые будут использоваться по умолчанию при создании новой формы. Данную опцию можно применить только к одному объекту во всем репозитории.
Он помечается специальным символом. В свою очередь чекбокс Main Form используется для указания формы или эксперта, которые будут применены по умолчанию при создании нового стандартного проекта. Такая форма помечается другим специальным символом.
Когда вы выбираете проект, эти два чекбокса заменяются чекбоксом New Project.
С его помощью можно указать предопределенный шаблон или эксперт проекта, который используется при выдаче команды File/New Project, он также помечается своим специальным символом. Если проект, обозначенный как New Project, отсутствует, Delphi по умолчанию создает проект с формой, отмеченной как Main Form. Если такой формы тоже нет, Delphi создает предопределенную пустую форму.
Работая с репозиторием объектов, вы имеете дело с формами и модулями, которые хранятся в подкаталоге OBJREPOS основного каталога Delphi.
Когда вы добавляете новый проект или форму, объекты сохраняются именно в этом каталоге.
В то же время, если форму или любой другой объект репозитория вы используете напрямую, не копируя, то в итоге часть файлов этого каталога окажется занятой в вашем проекте. Данный принцип работы репозитория очень важен, и его необходимо понять, поскольку, если вы захотите модифицировать хранящийся в нем проект или объект, лучше всего будет обрабатывать непосредственно оригинальные файлы, не копируя их из репозитория и обратно.
Вы можете использовать один из предопределенных шаблонов приложений или объектов форм, запустить эксперт Database Form Expert или применить какие-либо другие эксперты, которые ускоряют создание первых версий для приложений, форм или других объектов.
Для пользователей эксперты и шаблоны предоставляют возможность быстро начать разработку кода.
Рассмотрим, как можно организовать свою страницу в хранилище Object Repository. Произведите щелчок по команде меню Delphi Tools, в раскрывшемся списке выберите команду Repository... Произведите щелчок по кнопке Add Page — откроется диалоговое окно, в котором вы можете ввести имя страницы, например MyForms. Произведите щелчок по кнопке Ok. Новая страница появится в разделе Page.
Настройка Object Repository чаще всего состоит в добавлении новых проектов, форм и модулей данных. Кроме того, вы также можете добавить новые страницы и в некоторых из них изменить расположение элементов (кроме страниц New и текущего проекта).

Добавление новых шаблонов приложений в репозиторий.
Добавить в Object Repository Delphi новый шаблон так же легко, как и использовать для построения приложения существующий. Если у вас есть рабочее приложение, которое вы хотите использовать в качестве отправной точки для дальнейшей разработки, то можете сохранить текущее состояние в шаблоне, а впоследствии выбрать из Object Repository и использовать в дальнейшей работе.
Все, что помещается в репозиторий, фирма Borland называет теперь объектами, хотя с точки зрения объектно-ориентированного программирования это не верно. Лучше их называть шаблонами. В частности, это касается шаблонов приложений, которые никоим образом не связаны с объектами или классами и копируются в каталог с вашим новым проектом.
Добавить проект в репозиторий можно с помощью команды Project/Add to Repository или с помощью соответствующей команды всплывающего меню окна Project Manager. Чтобы выполнить эту работу, проделайте шаги, описанные ниже.
1. Откройте любой проект, над которым вы работаете и который предполагаете использовать неоднократно.
2. Выберите команду меню Project / Add to Repository (или команду Add Project to Repository из всплывающего меню диалогового окна Project Manager).
3. В диалоговом окне Add to Repository введите заголовок и описание нового шаблона проекта, а также имя его автора. Кроме того, вы можете выбрать пиктограмму, обозначающую новый шаблон (или принять предопределенный рисунок), а также указать страницу репозитория, на которую вы хотите поместить проект.
4. Нажмите кнопку ОК — и новый шаблон будет добавлен в Object Repository Delphi.
Теперь каждый раз, открывая Object Repository, вы будете видеть ваш персональный шаблон. Если позже вы решите, что он больше не нужен, можете его удалить.
Шаблон можно использовать для создания копии существующего проекта, чтобы продолжить работу над ним после сохранения первоначальной версии.

Элемент репозитория Console Application страницы New.
Рассмотрим подробнее элементы репозитория.
Элемент Console Application позволяет создавать консольное приложение. Консоль представляет собой совокупность клавиатуры и монитора. Вы можете создавать приложения, в которых пользователь использует ввод данных в программу с клавиатуры, а результат отображается на экране.
Консольная модель ввода-вывода, при которой данные представляются потоком символов, не позволяет использовать графические средства Windows и используется лишь для совместимости с текстовым режимом DOS.
После выбора меню File, выполнения команды New и выбора элемента Console Application появляется диалоговое окно с исходным текстом консольного приложения.
Произведите компиляцию программы, выполнив команду Run в меню Delphi Run. На экране промелькнет черное окно, но не появится. Вам необходимо ввести два оператора в раздел uses после ключевого слова begin:
Writeln ('Press Enter to exit...');
Readln;
Произведите компиляцию вновь. На экране появится черное окно с текстом в левом верхнем углу, который вы набрали. После появления окна консольного приложения видно, что инспектор объектов закрыт для доступа.
Созданное консольное приложение имеет пиктограммы команд, которые позволяют изменять шрифт текста. Имеется возможность в приложении производить выделение, копирование, вставку текста. А также есть пиктограммы полноэкранного режима, свойств, фонового режима.
Синтаксически программа состоит из заголовка, списка подключаемых модулей и программного блока.
Заголовок программы должен совпадать с именем программного файла. Он формируется автоматически после сохранения приложения. Например, для нашего случая заголовок имеет вид:
program MyConsole;

После заголовка размещается директива компилятора, которая всегда включается в текст консольного приложения:
{$APPTYPE CONSOLE}

Далее следует секция подключения модулей, которые предназначены для встраивания в программу стандартных и разработанных пользователями библиотек подпрограмм и классов. Она состоит из зарезервированного слова uses и списка подключаемых библиотечных модулей.
В консольном приложении используется модуль SysUtils. После того как данный модуль подключен, все его ресурсы (а это переменные, константы, типы данных, процедуры и функции) становятся доступными для приложения.
Для работы с консольным приложением применяются инструкции консольного ввода и вывода. К ним относятся Write, Writeln, Read, Readln.
Рассмотрим, каким образом эти инструкции используются.
Инструкции Write и Writeln служат для вывода чисел, символов, строк и булевских значений на экран. Формат инструкций имеет вид:
Write(Y1, Y2, ..., Yn);
Writeln(Y1, Y2, ..., Yn);
где Y1, Y2, ..., Yn — константы, переменные и результаты выражений. Инструкция Writeln аналогична инструкции Write, но после своего выполнения переводит курсор в начало следующей строки. Если инструкции записаны без параметров, то это приводит к пропуску на экране соответственно одной позиции и одной строки.

Инструкции ввода Read и Readln обеспечивают ввод числовых данных, символов, строк для последующей обработки в программе. Их формат следующий:
Read(X1, X2, ..., Xn);
Radln (X1, X2, ..., Xn);
где X1, X2, ..., Xn); X1, X2, ..., Xn — переменные, для которых осуществляется ввод значений.
Инструкция Readln отличается от инструкции Read только одним свойством: каждое выполнение инструкции Readln переводит курсор в начало новой строки, а после выполнения инструкции Read курсор остается в той же строке, где и был.
Инструкции допускают их использование без параметров. Оба эти оператора останавливают выполнение программы до нажатия клавиши Enter.
Программный блок начинается зарезервированным словом begin, далее располагаются операторы языка, отделяемые друг от друга точкой с запятой. Завершается раздел зарезервированным словом end.
Рассмотрим пример, позволяющий использовать консольное приложение.
С помощью элемента Console Application запишите программный код, позволяющий производить следующие вычисления:
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;
var
X,Y:Integer;
begin
// Insert user code here
X:=12;
Y:=25;
Writeln(X*Y/2*3/5);
Writeln('Press Enter to exit...');
Readln;
end.
После запуска программы на компиляцию вы увидите в верхнем углу экрана результат и уже знакомые строки Press Enter to exit...
Процедура чтения Read обеспечивает ввод числовых данных, символов, строк и т.д. для последующей их обработки программой.
Значения X1, X2,..., Xn набираются минимум через один пробел на клавиатуре и высвечиваются на экране. После набора данных для одной процедуры Read нажимается клавиша ввода Enter.
Значения переменных должны вводиться в строгом соответствии с синтаксисом языка Паскаль. Если соответствие нарушено (например, X1 имеет тип Integer, а при вводе набирается значение типа char), то возникают ошибки ввода-вывода.
Если в программе имеется несколько процедур Read, данные для них вводятся потоком, т.е. после считывания значений переменных для одной процедуры Read.
Данные для следующей процедуры Read набираются в той же строке, что и для предыдущей, до окончания строки, затем происходит переход на следующую строку.
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;
var
A, B, Sum1: integer;
C, D, Sum2: real;
begin
Read (A, B);
Sum1:= A + B;
Read (C, D);
Sum2:= C + D;
Writeln('Sum1',Sum1);
Writeln('Sum2',Sum2);
Writeln('Press Enter to exit...');
Readln;
end.
Процедура чтения Readln аналогична процедуре Read, единственное отличие заключается в том, что после считывания последней в списке значения для одной процедуры Readln данные для следующей процедуры Readln будут считываться с начала новой строки.

Элемент репозитория Unit страницы New.
Логически обособленные группы процедур и функций удобно объединять в специализированные библиотеки, так называемые модули.
Допустим, у вас создано консольное приложение.
Произведите выбор в меню Delphi File, команды New, далее из хранилища репозитория выберите модуль Unit и щелкните по кнопке Ok. Delphi создаст новую страницу с текстом нового модуля Unit1.
Произведите сохранение проекта под именем Mathematica_dpr, файл модуля сохраните под именем Mathematica.pas.
После этого основная консольная программа изменится, в списке подключаемых модулей появилось имя модуля Mathematica:
Matthematica in 'Matthematica.pas';

Произведите заполнение программным кодом содержимого модуля. При наличии связанной формы и модуля было легче, когда часть программного кода создавалась Delphi. В данном случае вам все необходимо проделать вручную.
unit Matthematica;

interface
const
pi=3.14;
function Account(X,Y:Double):Double;
function Account1(X,Y:Double):Double;

implementation
function Account(X,Y:Double):Double;
begin
Result:=Exp(Y*Ln(X));
end;

function Account1(X,Y:Double):Double;
begin
Result:= (X + Y) / 2;
end;
end.
Консольная программа, которая использует модуль Mathematica, имеет вид:
program Mathematica_;
{$APPTYPE CONSOLE}
uses
SysUtils,
Matthematica in 'Matthematica.pas';
// Insert user code here
begin
Writeln(Pi);
Writeln(Account(7,8));
Writeln(Account1(24,6));
Writeln('Press Enter to exit...');
Readln;

end.

Компонент TabControl.
Этот компонент (расположен на странице Win32) представляет собой страничную панель, которая позволяет экономить пространство окна приложения, размещая на одном и том же месте страницы разного содержания.
Он используется в том случае, когда логические страницы имеют одинаковый вид, а их переключение влечет лишь изменение отображаемых данных.
Если компонент Page Control на странице Win32 палитры компонентов потребляет системные ресурсы Windows, то компонент TabControl снижает потребление оперативной памяти. Но это происходит за счет времени и сил, которые затрачиваются на программирование. Потому что переход с одной страницы компонента на другую страницу осуществляется программным способом.
Поместите компонент TabControl на форму. Найдите в инспекторе объекта на странице Properties свойство Tabs. Произведите двойной щелчок по кнопке с тремя точками. Откроется окно String List editor. Введите последовательно числа на каждой строке от 1 до 7. Вы увидите, что компонент стал выглядеть как страница с управляющим элементом (кнопки со стрелками).
После запуска приложения на компиляцию вы можете переключаться между страницами, щелкая по закладкам страницы. Управляющий элемент кнопка в данном случае пока не работает.
Добавьте на форму компонент ImageList со страницы Win32. Произведите двойной щелчок по пиктограмме, откроется диалоговое окно Form1. ImageList1 ImageList. Используя кнопку Add, добавьте на компонент семь рисунков, по числу страниц компонента TabControl. Для внедрения рисунков используйте следующий путь Program Files\Common Files\Borland Shared\Images\Buttons.
Для того чтобы отобразить рисунки на страницах компонента TabControl, необходимо осуществить его связь с компонентом ImageList.
Выделив компонент TabControl, перейдите на страницу Properties. Найдите свойство Images, раскройте его и выделите ImageList1. После этих действий рисунки появятся слева от нумерации страниц.
Рассмотрим свойства компонента.

Свойство Style
property Style: TTabStyle;
определяет стиль отображения компонента
type TTabStyle = (tsTabs, tsButtons, tsFlatButtons);
tsTabs — компонент имеет вид блокнота с закладками.
tsButtons — компонент имеет в верхней части кнопки.
tsFlatButtons — компонент имеет в верхней части плоские кнопки.
Свойство Multiline позволяет размещать закладки не в один ряд, а во множество рядов, в случае если они не помещаются в один ряд. Для этого необходимо установить свойство MultiLine в True.
Свойство property MultiSelect: Boolean; позволяет множественный выбор закладок. Если это свойство установлено в значение True, то в обработчиках событий надо описать реакцию на такой выбор пользователя.
Свойство TabPosition позволяет располагать ярлычки закладок вверху — tpTop, внизу — tpBottom, справа — tpRight, слева — tpLeft. По умолчанию установлено верхнее расположение ярлычков.
Свойства TabHeight и TabWidth определяют высоту и ширину закладок в пикселях. Если значения этих параметров заданы равными 0, то размеры ярлычков определяются автоматически по размерам надписей на них.
Свойство TabIndex определяет номер выбранной закладки. Если ни одна закладка не выбрана, то значение свойства равно -1.
Свойство Images позволяет осуществлять связь компонента TabControl с компонентом ImageList для внедрения рисунков на ярлычки.
Свойство ScrollOpposite определяет способ перемещения закладок при размещении их в несколько рядов.
Для компонента определено событие property OnChange: TNotifyEvent;, возникающего после выбора закладки.
Событие OnChanging возникает перед сменой закладки
type TTabChangingEvent = procedure (Sender: TObject; var AllowChange: Boolean) of object;
property OnChanging: TTabChangingEvent;
Обработчик события может запретить выбор закладки, вернув в параметре AllowChange значение False.
Пример использования компонента TabControl вы можете посмотреть в папке, которая находится в Borland\Delphi5\Help\Examples\Tabcntrl.

Литература:
1. Марко Канту. Delphi 2 для Windows 95/NT. Москва. ООО "Малип". 1997 г.
2. Джон Матчо. Дэвид Р. Фолкнер. Delphi. Москва. БИНОМ. 1995 г.
3. Эндрю Возневич. Delphi. Освой самостоятельно. Москва. Восточная книжная компания. 1996 г.
4. К. Сурков, Д. Сурков, А. Вальвачев. Программирование в среде Delphi 2.0 Минск. Попурри. 1997 г.
5. В.В.Фаронов. Delphi 5. Учебный курс. Москва. Издательство Нолидж. 2000 г.
6. А. Я. Архангельский. Программирование в Delphi 5. Москва. ЗАО Издательство "Бином". 2000 г.

Владимир Скуратов


© Компьютерная газета

полезные ссылки
IP камеры видеонаблюдения