With (ActiveMDIChild as TChildForm) do
ЛАБОРАТОРНАЯ РАБОТА №22-4
Тема: Оформление приложения
Цель работы: Изучить способы оформления приложений. Научиться создавать и использовать заставки, строки состояния, а так же информационное окно программы
КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Заставка. Заставкой называется информационное окно, выводимое на экран при запуске программы, которое затем закрывается автоматически или по команде пользователя.
Наиболее типичной является заставка, выводимая в виде окна, которое не имеет заголовка и никаких элементов управления. Это окно выводится по центру экрана и содержит рисунок и иногда несколько строк пояснительного текста. После загрузки программы заставка автоматически удаляется с экрана и из памяти.
Для того чтобы сделать заставку, требуется, прежде всего при проектировании приложения создать окно заставки (то есть дополнить приложение еще одной формой) и вставить в него необходимый рисунок и текст. После этого следует определить некоторые свойства для данной формы.
С помощью Инспектора объектов устанавливаются такие параметры (свойства) формы:
Position: =роScreenСеnter;
FormStyle: =fsStayOnTop;
Caption:=’’;
BorderStyle: =bsNone;
BorderIcons:=[];
Создание, отображение и удаление формы-заставки осуществляется в файле проекта, как показано ниже. Предположим, что главная форма носит имя MainForm, а форма-заставка — имя ZastForm. Тогда файл проекта примет такой типовой вид:
Листинг 1. Обработка формы-заставки в файле проекта
Program Zastavka;
Uses
Forms,
Main in Main.pas' {MainForm},
Zastavka in 'Zastavka.pas' {ZastavkaForm};
{$R *.res}
Begin
Application.Initialize;
// Создание и отображение заставки
ZastavkaForm:=TZastavkaForm.Create(Application);
ZastavkaForm.Show;
ZastavkaForm.Update;
// Создание главной формы приложения
Application.CreateForm(TMainForm, MainForm);
// Удаление формы—заставки
ZastavkaForm.Hide;
ZastavkaForm.Free;
// Запуск программы на выполнение
Application.Run;
End.
Экземпляр формы-заставки создается в файле проекта сразу же после инициализации приложения. После этого производится отображение заставки на экране с помощью методов Show и Update. В данном случае для отображения формы недостаточно использовать только метод Show, так как еще не запущен объект приложения и не обрабатываются сообщения операционной системы Windows. Не обрабатываются также сообщения при прорисовке формы, поэтому необходимо выполнить отображение формы путем применения метода Update.
После создания главной формы заставка делается невидимой и удаляется из памяти. С этой целью в файле проекта для формы заставки вызываются методы Hide и Free. Можно сделать временную задержку для того, чтобы заставка отображалась на экране определенное время, а не исчезала сразу после создания главной формы.
Рисунок, содержащийся в заставке, рекомендуется загружать при выполнении программы. В противном случае необоснованно увеличивается размер исполняемого файла за счет того, что он включает в себя рисунок, который не потребуется в дальнейшей работе программы.
Информационное окно. В большинстве программ существует возможность открывать специальное окно, содержащее краткую справочную информацию о названии программного продукта, его версии, дате выпуска, авторах и другие данные. Как правило, такое окно называется «О программе» или About.
Информационное окно создается с помощью шаблона либо
самостоятельно. Для создания информационного окна с помощью шаблона выберите в главном меню среды разработки Delphi пункт File® New® Other. Затем на странице Forms выберите шаблон формы About Box. В результате к приложению добавляется новая форма AboutBox с заголовком About . (см. рис.1).
Как видно из рис. 1, данная форма содержит информационную панель с рисунком (объект TImage) и четырьмя надписями (объекты TLabel), а также кнопку ОК для закрытия окна. Программист может свободно изменять эту форму, удалять и изменять существующие объекты или добавлять новые.
Как правило, события элементов, расположенных на данной форме, не используются и обработчики событий не создаются. В том числе, не требуется обработчик события нажатия кнопки ОК, так как свойство ModalResult данной кнопки имеет значение mrOK, поэтому при ее нажатии форма автоматически закрывается.
Разработчик приложения может не использовать шаблон, а создавать информационное окно самостоятельно, путем добавления к проекту новой формы, на которой располагаются все необходимые управляющие элементы.
Вызов информационного окна на экран обычно осуществляется в модальном режиме, то есть с использованием метода ShowModal. Чтобы продолжить работу с приложением, следует закрыть информационное окно.
Строка состояния. Строка состояния - это управляющий элемент, с помощью которого пользователю выдается разного рода вспомогательная информация о ходе выполнения приложения, например, отображение координат указателя мыши в статусной строке графических редакторов или указание количества страниц и номера текущей страницы в текстовом редакторе Word. Также могут отображаться дата, время и т.д.
В Delphi для этой цели используется специальный компонент TStatusBar, представляющая собой ряд панелей, обычно располагающихся внизу главной формы приложения, которые содержат текущую справочную информацию. Каждая такая панель представлена в списке свойства Panels данного компонента.
Рассмотрим некоторые наиболее важные свойства данного объекта.
Таблица 1. Свойства объекта TStatusBar
Свойство | Описание |
SimplePanel (тип Boolean) | Определяет, будет статусная строка содержать одну панель или несколько. Для того чтобы отображалась одна панель, данное свойство нужно установить в True, чтобы несколько - в False. |
SimpleText (тип string) | Содержит текст, который выводится в статусной строке в случае, если свойство SimplePanel имеет значение True. |
AutoHint (тип Boolean) | Имеющее значение True, устанавливает, что в статусной строке автоматически будет отображаться значение текущей всплывающей подсказки (Hint). При этом сама всплывающая подсказка не показывается. |
Count (тип Integer) | Показывает количество панелей в строке состояния. Свойство доступно только для чтения. |
SizeGrip (тип Boolean) | Определяет возможность изменения размеров статусной строки. Если свойство имеет значение True, то в правом нижнем углу статусной строки будет отображаться специальная треугольная область захвата, с помощью которой можно изменять размеры статусной строки путем растягивания. В случае, когда строка состояния выровнена по нижнему краю формы, использование области захвата будет приводить к изменению размеров самой формы. Однако при этом для свойства BorderStyle формы должно быть установлено значение bsSizeable или bsSizeToolWin, в противном случае область захвата появляться не будет. |
Panels(тип TStatusPanels) | Содержит список панелей статусной строки. Можно обращаться к соответствующей панели по ее индексу (нумерация начинается с нуля). |
В качестве основных свойств панели как объекта класса TStatusPanels можно выделить следующие.
Таблица 2. Свойства объекта TStatusPanels
Свойство | Описание |
Alignment (тип TAlignment) | Задает способ выравнивания текста относительно панели. |
Bevel (тип TStatusPanelBevel) | Определяет вид панели: углубленная, приподнятая или плоская |
Style (тип TStatusPanel Style) | Устанавливает способ отображения информации на панели и может принимать одно из двух значений: psText — в качестве содержимого панели используется значение свойства Text (по умолчанию); psOwnerDraw — вывод текстовой и графической информации выполняется программно с использованием поверхности рисования (Сanvas) строки состояния. |
Техt (тип String) | Содержит текст, выводимый на панели. |
Width (тип Integer) | Задает ширину панели. По умолчанию устанавливается ширина в 50 пикселей, а последняя панель занимает все оставшееся свободное пространство строки состояния. |
ХОД ВЫПОЛНЕНИЯ ЗАДАНИЙ
Для созданного ранее текстового редактора создать заставку, информационное окно, строку состояния, таймер.
Задание 1: Создание заставки текстового редактора.
1. Откройте с помощью File®New новую форму, свойству Name формы присвойте значение Zast.
2. Удалите значение свойства Caption.
3. Свойству BorderStyle присвойте значение bsNone (результат увидите только при запуске программы).
4. Для удаления кнопок минимизации, максимизации формы и системного меню установите у свойства BorderIcons значения подсвойств biMinimize, biMaximize, biSystemMenu равными False( результат увидите только при запуске программы).
5. Свойство Enabled установите равным False для того, чтобы заблокировать обработку событий и лишить возможности пользователя управлять окном с помощью клавиатуры или мыши.
6. Сохраните проект, определив имя второго программного модуля проекта как Zastavka.
7. Выполните команду View®Project Manager и выберите в контекстном меню пункт Options. В предложенном окне выберите закладку страницы Forms. Переместите Zast из списка AutoCreate в список Available для рационального использования памяти и ресурсов.
8. Преобразуйте исходный файл проекта. Для этого выполните команду Project ® ViewSource и измените операторы между begin и end следующим образом:
Zast:= TZast.Create(Application);
{Этот оператор создает объект формы заставки и присваивает его адрес переменной
Zast, которая определена в программном модуле заставки}
Zast.Show;
Zast.Update;
{Отображение объекта из памяти на экране и обновление его содержимого}
Application.CreateForm(TForm1, MainForm);
Zast.Hide;
Zast.Free;
{Скрытие формы заставки и освобождение занимаемой ею памяти}
Application.Run;
9. Для того, чтобы заставка оставалась на экране несколько секунд, для обработчика события OnCreate главной формы MainForm добавьте следующие операторы:
CurrentTime:=GetTickCount div 1000;
{ Процедура CurrentTime возвращает время работы Windows в миллисекундах}
while((GetTickCount div 1000)<(CurrentTime+4)) do;
{ Организация паузы в 4 секунды}
Объявите переменную CurrentTime типа Longint.
10. Поместите на форму заставки компонент TImage из закладки Additional палитры компонентов. Выберите свойство Picture объекта Image1. В появившемся окне Picture Editor щелкните по кнопке Load, выберите файл с картинкой для загрузки картинки в окно Picture Editor. Для того, чтобы растровое изображение внутри объекта Image1 занимало всю клиентную область, требуется изменить значение свойства Stretch образа на True.
11. Поместите на форму заставки справа и снизу от рисунка два компонента TLabel из закладки Standard палитры компонентов. Отобразите на них информацию об авторе приложения и название приложения, используя различный размер, цвет и начертание шрифта.
12. Запустите приложение и просмотрите результат работы.
Задание 2: Создайте информационное окно программы.
1. Добавьте в главное меню программы пункт «О программе».
2. Добавьте к проекту новую форму AboutBox с помощью шаблона. Для этого выберите в главном меню среды разработки Delphi пункт File® New® Other. Затем на странице Forms выберите шаблон формы About Box. В результате к приложению добавляется новая форма AboutBox с заголовком About .
3. Добавьте в программу команду вызова информационного окна в модальном режиме, то есть с использованием метода ShowModal.
4. Запустите приложение и просмотрите результат работы.
Задание 3:Создайте таймер.
1. Добавьте к проекту новую форму oClock. Измените границы окна у формы oClock, сделайте их невидимыми, уберите значки максимизации, минимизации, системного меню.
2. Поместите на форму oClock компонент TLabel, свойству Caption этого компонента присвойте значение 00:00:00. Выберите для своих часов шрифт, размер и стиль.
3. Поместите на форму oClock компонент TTimer из закладки System. В обработчик события OnTimer объекта Тimer1 добавьте следующую строку:
TimerLabel.Caption:=TimeToStr(Time);//TimeToStr преобразует время в строку
4. Для события OnCreate формы oClock выберите обработчик Timer1Timer, который был создан для компонента Timer1. Тогда текущее время будет записано в метку до появления окна.
5. Для формы oClock установите свойство Formstyle равным fsStayOnTop для того, чтобы часы были расположены всё время поверх других окон. Кроме того, установите свойство Visible в True.
6. Запустите приложение и просмотрите результат работы.
Задание 4: Создание строки состояния текстового редактора.
1. Поместите на форму компонент TStatusBar (вкладка Win32). Свойство AutoHint установите в True.
2. Для этого компонента с помощью Инспектора объектов через свойство Panels вызовите редактор EditingStatusBar.Panel, в котором добавьте шесть панелей. Начальные установки для каждой панели задаются путем изменения свойства Text в соответствии с рис. 3.
3. Свойству Width для каждой панели задается соответствующее значение, на выбор программиста.
4. Для всех кнопок панели ToolBar1 установите значение свойства Hint (подсказка). В панелях будет отображаться следующая информация:
Панель 0: значение текущей всплывающей подсказки (Hint), то есть подсказки для того элемента, над которым в данный момент находится указатель мыши.
Панель 1: цвет текста в поле редактора Меmо1.
Панель 2: стиль шрифта в поле редактора Меmо1 (обычный или курсив).
Панель 3: состояние кнопки СарsLock (если кнопка включена, то выводится строка «Сарs Lock включен», если выключена, то отображается строка «Сарs Lock выключен»).
Панель 4: количество строк, содержащихся в редакторе Меmо1.
Панель 5: текущее время.
Программная реализация решения поставленной задачи приводится в листинге 1.
Листинг 1. Некоторые процедуры приложения “Текстовый редактор”
//Отображение в панели статуса цвета текста
procedure TMainForm.ToolButton4Click(Sender: TObject);
Begin
with (ActiveMDIChild as TChildForm) do
Memo1.Font.Color:=clBlack;
StatusBar1.Panels[1].Text:='Черный цвет';
End;
//Отображение в панели статуса толщины шрифта
procedure TMainForm.ToolButton7Click(Sender: TObject);
Begin