Задача об анкете.
Объекты: форма, текстовое поле, изображение, кнопка. Программирование кнопок
Цель работы: изучить применение компонент рисунок (Image), его свойства видимость (Visible), доступность(Enabled), Picture, stretch.
Задание: Создать форму «Анкета студента» с данными о себе и двумя фотографиями (портретной и художественной), которые перекрывают друг друга и должны появляться в результате нажатия на кнопки (рис. 4). Ознакомиться с такими объектами: форма (Form), текстовое поле (Label), рисунок (Image), кнопка (Button) и их основными свойствами: подпись (Caption), цвет (Color), шрифт (Font), видимость (Visible), ширина (Width), высота (Height) и другими.
Теоретические сведения.
Объект Form используют для создания окна программы-приложения. Рассмотрим такие свойства формы:
Свойство | Описание свойства | Примеры значений | |
ActiveControl | Для задачи активного объекта (фокуса) в форме | Buttonl, Edit2 | |
AutoScroll | Наличие в форме полос прокручивания | True, False | |
BorderStyle | Возможность менять размеры окна | bsSizeable (окно с произвольными размерами), bsDilog, bsNone (окно с фиксированными размерами) | |
Width, Height | Ширина и высота окна в пикселях | 503, 224 (числовые значения) | |
Font | Шрифт | Комплексное свойство, задается в диалоговом окне | |
HorizScroIlBar VertScrollBar | Параметры полос прокручивания | Комплексное свойство | |
Icon | Задаем пиктограмму, которая будет размещена в заголовке формы при выполнении программы | (None) - стандартная пиктограмма для Delphi, или загруженная с определенного файла *.ico | |
Name | Имя формы | Forml (идентификатор) | |
Caption | Заголовок формы | Произвольная строка символов | |
Color | Цвет фона формы | clGreen, clInfoBk (перечислимый тип) или $004525В1 (числовое значение - задается в диалоговом окне) | |
Cursor | Вид курсора на свободном месте окна на этапе выполнения | crDrag, crCross, crHelp, crArrow (перечислимый тип) | |
Enabled | Доступность для действий над объектами в форме во время выполнения | True, False | |
Left, Top | Координаты левого верхнего угла окна в пикселях | 200, 108 (числовые значения) | |
Position | Размещение и размеры окна в момент запуска программы | poScreenCenter, poDesigned | |
WindowState | Состояние окна в момент запуска программы | wsNormal, wsMaximized, wsMinimized | |
Объект текстовое поле (Label) используют для создания текстов (надписей) в окне программы. Кроме аналогичных к выше приведенным в предшествующей таблице свойств Width, Height, Font, Color, Name, Caption, Cursor, Enabled, Left, Top, он владеет еще такими:
Свойство | Описание свойства | Примеры значений |
Align | Выравнивание поля относительно объекта, который его содержит (формы) | alBottom, al-Client, alLeft, alNone, alTop |
Alignment | Выравнивание текста в границах поля | taCenter, taLeft-Justify, taRight-Justify |
AutoSize | Приведение границ поля к границам текста | True, False |
Visible | Видимость объекта | True, False |
Wordwrap | Перенесение слов текста в новую строку | True, False |
Объект картинка (Image, изображение) используют для вставки графических объектов из файлов типа *.bmp, *.emf, *.ico, *.wmf в форму. Для работы найдите на диске своего компьютера любые три картинки или фотографии, указанного выше типа скопируйте их в папку, где находится вся ваша программа в «Мои документы\Проект1_фамилия».
Кроме известных свойств Align, Width, Height, Name, Cursor, Enabled, Left, Top, Visible, он обладает еще такими:
Свойство | Описание свойства | Примеры значение |
Center | Выравнивание рисунка по центру относительно содержащего его поля | True, False |
Picture | Имя графического файла | Задают в диалоговом окне |
Stretch | Приведение размера изображения к заданным размерам объекта | True, False |
AutoSize | Приведение размера объекта к реальным размерам изображения | True, False |
Объект кнопка (Button) используют для размещения элемента управления - кнопки на форме. Кнопки имеют такие свойства: Visible, Width, Height, Font, Color, Name, Caption, Cursor, Enabled, Left, Top и другие.
Ход работы
1. Загрузите систему визуального программирования Bilder C++
Для запуска системы визуального программирования Bilder C++ щелкают на пиктограмме Bilder или с помощью каскадного меню выбирают Start (Пуск) => Programs (Программы) ==> Bilder C++x.O => где х - версия программы. В результате на экране откроются четыре окна.
2. Исследуйте способы активизации четырёх окон Bilder C++:
главного окна Bildert C++ x.O - Project!; где находятся панель инструментов, палитра, компонентов и главное меню; окна инспектора объектов Object Inspector со значениями свойств активного объекта; окна формы (Forml), в котором будут приведены результаты работы будущей программы; окна текста программы (Unit1.cpp).
Замечание. Окно текста программы может частично перекрываться окном формы. Активизировать окна, а также менять их размеры или расположение можно с помощью мыши или используя функциональные клавиши на клавиатуре:
F10 - для активизации главного меню (после этого нажмите на клавишу Esc);
F11 - для активизации окна инспектора объекта; F12 - для перехода между окнами формы и кода программы.
3. Запустите программу Projectl на выполнение и рассмотрите окно пустой пока что формы. Поупражняйтесь с окном формы. Запустить программу можно несколькими способами: Используя команду Run => Run главного меню; Щелкнув на кнопке Run панели инструментов; Нажав функциональную клавишу F9.
Выполните такие действия: максимизируйте окно, восстановите его предыдущий размер, минимизируйте и снова разверните окно, передвиньте на рабочем столе и измените его размеры, вызовите системное меню (Alt + пропуск). Выполните те же действия с помощью команд Move, Size и других и клавиатуры. Вывод: окно формы обладает всеми свойствами стандартного окна операционной системы Windows.
4. Закройте окно программы Forml, минимизируйте главное окно Bilder C++ и создайте в «мои документы» или на ресурсе student папку с названием группы, а в ней папку, названную вашей фамилией и номер проекта. Снова активизируйте окно Bilder
5. Сохраните созданную программу в своей папке.
Для этого выполните команду главного меню File.=> Save All (Сохранить Все) или нажмите на кнопку Save All на панели инструментов. В поле «Save in:» (Сохранить в:) появившегося окна («Save Unitl As») с помощью списка. выберите название рабочего диска, после чего найдите и откройте свою папку. Используйте по умолчанию название для файла текста программы, предложенное компьютером название Unitl.pas => Save. В следующем окне «Save Projectl As» появляется название файла проекта, предложенное компьютером название Projectl.dpr => Save. Обратите внимание: файлы проекта и текста программы должны иметь разные названия. Система BilderC++ генерирует до 10 различных файлов, сопровождающих проект.
6. Визуально ознакомьтесь со свойствами формы Left, Top, Width и Height.
Переместите форму Forml с помощью мыши. Обратите внимание, что изменение расположения формы ведет к изменению ее свойств Left и Тор — координат левого верхнего угла формы в окне Object Inspector. Поменяйте размеры формы. Убедитесь, что теперь меняются свойства Width (ширина) и Height (высота) формы в окне инспектора объектов.
7. Исследуйте, как изменение значений свойств Left, Top, Width или Height формы в окне Object Inspector ведет к изменению расположения или размера формы.
Для этого введите некоторое значение в пикселях и нажмите на клавишу Enter.
8. Измените цвет фона формы.
Для этого в окне свойств формы Object Inspector в строке Color выберите значение цвета фона одним из двух способов:
• вызовите окно выбора цвета двойным щелчком мыши по текущему значению свойства Color. Выберите один из базовых цветов (Basic colors) или установите свой (Define Custom Colors) цвет. Подтвердите выбор цвета (Ok).
• с помощью списка поупражняйтесь с разными значениями свойства Color. Задайте начальное значение цвета - clBtnFace.
- Выполните программу еще раз (см. пункт 3).
Рис.1
10. Вставьте в форму текстовое поле (объект типа Label) с текстом «Анкета студента».
Два раза щелкните мышью по пиктограмме Label на закладке Standard палитры компонентов главного окна Delphi. Расположите вставленный объект, например, так, как показано на рис. 1, перетягивая его мышью. Если объект Labell не выделенный, активизируйте его и в окне Object Inspector, измените значение свойства Caption с Labell на текст «Анкета студента» (без кавычек). Измените значения свойства Font (шрифт) этого текстового поля на такие:
Font: Times New Roman Cyr;
Font style: Bold;
Size: 16;
Color: Purple.
Замечание. В окне Object Inspector отображается список свойств лишь активного на данный момент объекта.
11. Аналогично вставьте в форму еще несколько текстовых полей, где укажите свои биографические данные.
12. Вставьте в форму объект типа Image (картинка).
Для этого щелкните один раз левой клавишей мыши на пиктограмме Image закладки Additional (дополнительные) палитры компонентов и, например, в нижнем правом углу формы обведите контур для будущего изображения (фотографии). Если нужно, измените размер формы или вставленного объекта и добейтесь наилучшего расположения на ней созданных прежде объектов. Менять размеры объекта можно методом их «растягивания» за маркеры (черные габаритные квадратики). Запомните название, которое среда присвоит этому объекту (значение свойства Name) или замените его по своему усмотрению. По умолчанию этот объект будет иметь стандартное название Image1.
13. Вставьте свою портретную фотографию с помощью свойства Picture (иллюстрация) объекта Imagel.
Для этого выберите объект Imagel и активизируйте свойство Picture в окне Object Inspector. Щелкнув на кнопке, вызовите диалоговое окно выбора рисунка Picture Editor. Щелкните на кнопке Load (загрузить) и в окне Load picture укажите путь к файлу с фотографией. Выше в теоретических сведениях предлагалось найти три картинки и скопировать в свою папку проекта1. Выберите любой файл и нажмите кнопку => Open. Подтвердите свой выбор в окне Picture Editor нажатием на кнопку Ok. Задайте значение свойства Stretch для объекта Imagel - True.
14. Наложите свою художественную фотографию на портретную, вставив в форму еще один объект типа Image.
Один из вариантов расположения фотографии показан на рис.4. Пусть этот объект имеет название Image2.
Замечание. При наложении объектов может возникнуть необходимость менять порядок их отображения. Для этого используют команды Send To Back (переслать назад) или Bring To Front (перенести вперёд), находящиеся в контекстном меню.
15. Поэкспериментируйте со свойством Visible (видимость) двух изображений, каждый раз выполняя программу (см. пункт 3). После этого установите значение свойства Visible в False для обоих изображений.
16. Вставьте в форму кнопки для поочередного отображения наложенных одна на другую фотографий - два объекта типа Button с названиями Buttonl и Button2.
Пиктограмма ОK объекта типа. Button (кнопка) находится на закладке Standard палитры компонентов главного окна Bilder.
Поменяйте подписи на кнопках (измените значения свойства Caption) на «Портретная фотография» и «Художественная фотография», соответственно. Выберите наилучший, на Ваше усмотрение, кириллизированный шрифт для подписей. Если Вы применили картинки из стандартной библиотеки Delphi, задайте подписи для кнопок на своё усмотрение. Один из вариантов расположения кнопок показан на рис. 4.
17. Запрограммируйте кнопку «Портретная фотография» так, чтобы после ее нажатия в форме появлялась портретная фотография.
Для программирования кнопки Button 1 необходимо два раза щелкнуть на ней левой клавишей мыши. В результате активизируется окно текста программы с заготовкой функция ButtonlClick, которая будет обрабатывать событие щелканья на кнопке Buttonl:
void ___fastcall TForm1:: Button1Click (TObject *Sender)
{
}
В заготовку необходимо вставить текст программы реакции на это событие. Функция будет иметь такой вид:
void ___fastcall TForm1:: Button1Click (TObject *Sender)
{
//Портретная фотография становится видимой
Image1->Visible =true;
//Художественная фотография становится невидимой
Image2->Visible=false;
}
С помощью данной функции свойство видимости для объекта Imagel включаем, а это же свойство для объекта Image2 выключаем. Для кнопки «Художественная фотография» действия будут противоположные. Обратите внимание на использование составных имен типа Image->Visible, в которых название объекта от его свойства отделяется стрелкой. Такие составные имена дают доступ к значению конкретного свойства некоторого объекта.
18. Запрограммируйте кнопку «Художественная фотография» соответственно ее назначению (см. пункт 17).
Текст процедуры для этой кнопки будет иметь вид:
void ___fastcall TForm1:: Button2Click (TObject *Sender)
{
//Портретная фотография становится видимой
Image1->Visible =false;
//Художественная фотография становится невидимой
Image2->Visible=true;
}
Чтобы создать такую функцию быстро, можно скопировать две команды присваивания из предыдущей процедуры в новую и поменять выражения справа.
19. Запустите программу и убедитесь, что кнопки выполняют свои функции. Закройте окно программы «Анкета студента».
20. Сохраните созданную программу в своей папке.
Выберите элемент главного меню File => Save All (Сохранить Все) или нажмите кнопку Save All И на панели инструментов.
21. Создайте ехе-файл проекта.
Выполните команду главного меню Project => Build All (Сконструировать Все).
22. Закройте Delphi, выполните созданную программу и поупражняйтесь с работой кнопок.
Запустите ехе-файл с именем проекта из своей папки.
23. Оформите отчет в соответствии с требованиями к оформлению отчета, запустите программу на выполнение, затем клавишами ALT и PrtSс (одновременно нажимая) скопируйте в буфер памяти изображение интерфейса программы (скриншот), после перейдите в WORD и вставьте командой Правка-Вставить или клавишами Shift и Insert (одновременно нажимая).
Самостоятельная работа для защиты проекта.
Выполнить записать в отчет код функции и рисунок с экрана при выполнении программы, подготовиться к защите.
Задача 1.1. Вставьте в форму третью фотографию (вашего дома или машины) и еще одну кнопку с соответствующей подписью. Если файл с такой фотографией не существует, воспользуйтесь любым файлом из библиотеки 16color (см. п. 13).
Скопируйте текст для третьей кнопки в отчет и сделайте скриншот программы
Задача 1.2. Поменяйте подписи на кнопках на такие: «Сменить фотографию» и «Забрать фотографию», Третью кнопку удалите с формы, и очистите текст тела процедуры для третьей кнопки. Сохраните изменения. Измените код программы на первой кнопке с текстом: «Сменить фотографию»
Для кнопки «Забрать фотографию» все три картинки должны стать невидимыми.
Подсказка.
В тексте процедур, описывающих работу кнопки, можно воспользоваться командами вида:
If (Image1-> Visible= = true) {.. //Если видимость = True т.е видна первая картинка, то нужно сделать её /не видимой // вторую картинку сделать видимой, при этом учтите, что //третья тоже должна быть пока не видима } else if(………….) { ……… } И.т.д. |
Выполните программу и убедитесь в правильности ее работы.
Задача 1.3. Поменяйте сценарий работы программы для задачи 1.2 на следующий:
• сразу после запуска программы фотографий на форме не видно (т.е. в Object Inspector для рисунков установлено свойство Visible ложь False), есть две кнопки «Первая » (поменяйте надписи на кнопках в свойстве Caption) и «Спрятать» (поменяйте надписи на кнопках в свойстве Caption). Доступной является первая кнопка (Установлено свойство Enabled (доступность) для первой кнопки);
• после щелчка на кнопке «Первая » должно появиться первое фото (Image1), текст на первой кнопке - поменяться на «Вторая », кнопка «Спрятать » стать доступной (запрограммировать свойство Enabled (доступность) на значение TRUE);
• после щелчка на кнопке «Вторая » фотография в форме должна поменяться на вторую картинку (т.е. Image2), а подпись на этой кнопке — на «Третья »;
• после щелчка на кнопке «Третья » фотография в форме должна поменяться на третью, а подпись на этой кнопке - на «Первая»;
• после щелчка на кнопке «Спрятать » фотографии все должны исчезнуть, а эта кнопка стать недоступной.
Подсказка. Условие реализации связать со свойством кнопки Caption
Запишите фрагменты программного кода в отчет. Выполните программу и убедитесь в правильности ее работы.
Подсказка. В тексте процедур, описывающих работу кнопок, можно воспользоваться командами, которые меняют их свойства: Caption (подпись), Visible (видимость), Enabled (доступность).
Задача 1.4. См. условие задачи 1.3. Запрограммируйте кнопку «Спрятать» так, чтобы, щелкнув на ней, она становилась не только недоступной, но и невидимой, а затем при нажатии на первую кнопку появлялась. Составьте блок-схему на текст функции первой кнопки void ___fastcall TForm1:: Button1Click (TObject *Sender).