Лабораторная работа №3
Упражнение Условие
В этом упражнении вы будете учиться применять условное предложение и познакомитесь с одной математической функцией.
Создайте проект. В Строке заголовка формы введите: «Условие» (свойство Caption). Форме дайте имя FormUslovie(свойство Name). Вид формы представлен на рис. 24. Сохраните модуль и проект под именами соответственно UnitUslovieи ProjectUs-lovieв папке «5».
Познакомимся сначала с величинами, описывающими положение и размеры объекта в окне формы (рис. 1):
Left— расстояние от левой границы объекта до левой границы окна формы.
Тор — расстояние от верхней границы объекта до верхней границы окна формы.
Width— ширина объекта.
Height— высота объекта.
Единицей измерения для перечисленных свойств является пиксель.
Рис. 1. Свойства, определяющиеразмериположение объектанаформе
Поместите на форму кнопку TBitBtn со страницы Additional (дополнительные). В свойстве Caption (заголовок) удалите текст. Создайте для кнопки такую процедуру, что ширина кнопки будет увеличиваться. Для этого выделите кнопку, в Инспекторе объектов на листе событий Events выполните двойной щелчок в окошке события OnClick (щелчок). В модуле, в теле процедуры запишите:
ifBitBtnl.Width<100 then BitBtnl.Width:= BitBtnl.Width +10
else BitBtnl.Width:=BitBtnl.Width div 2;
Действие этой процедуры: пока ширина кнопки меньше 100, она увеличивается на 10. Если ширина кнопки становится равной 100, она уменьшается в 2 раза. Здесь используется функция целочисленного деления div.
Рис. 2. ОкноФормы«Условие»
Запишите теперь процедуру так, чтобы вместе с шириной изменялась и высота. После слова then (то) будут уже не один, а два оператора, поэтому их необходимо заключить в операторные скобки:
Begin
BitBtnl.Width:=BitBtnl.Width + 10;
BitBtnl.Height:=BitBtnl.Height + 10; end;
Здесь видно, что помимо ширины кнопки увеличивается и ее высота.
После слова else (иначе) также будет два оператора. Заключите в операторные скобки и их: begin
BitBtnl.Width:=BitBtnl.Width div 2;
BitBtnl.Height:=BitBtnl.Height div 2; end;
Сохраните изменения и запустите Проект на выполнение (F9).
С этой кнопкой можно поэкспериментировать:
• изменять предельное значение ширины и высоты кнопки;
• изменять значения увеличения размеров при каждом щелчке на кнопке;
• изменять операторы условия else (иначе).
Добавьте на форму еще одну кнопку. Для щелчка на кнопке создайте следующую процедуру:
BitBtn2.Width:=150; // изменение ширины кнопки
BitBtn2.Height:=150; // изменение высоты кнопки
BitBtn2.Caption:='Молодец!';
// изменение текста на кнопке BitBtn2.Font.Color:=clRed;
{изменение цвета шрифта текста на кнопке} BitBtn2.Font.Size:=24;
{изменение размера шрифта текста на кнопке}
Сохраните изменения и запустите проект на выполнение (F9).
Упражнение Меню
В этом упражнении вы создадите выпадающее меню, при щелчке по пунктам которого будут появляться различные фигуры.
Рис. 3. ОкноФормы«Меню»
Создайте проект. Назовите форму «Меню» (свойство Caption), сохраните в папке «6» модуль и проект под именами соответственно UnitMenu и ProjectMenu, дайте форме имя FormMenu (свойство Name). Вид формы представлен на рис. 25.
Установите в любом месте формы компонент TMainMenu (главное меню) со страницы Standard (стандартные). Этот объект не будет видимым при работе программы. Выполните двойной щелчок на объекте. Появилось окно для создания меню. В свойстве Caption (заголовок) для пунктов меню последовательно впишите: «Фигуры», «Шар», «Прямоугольник», «Эллипс». Дайте имена пунктам меню с помощью свойства Name (имя): Figures, Circle, Rectangle и Ellipse.
Состраницы Additional (дополнительные) поместите на форму компонент TShape (фигура) и в свойстве Shape (фигура) выберите значение: stCircle (круг). С помощью свойства Name (имя) дайте объекту имя sh_Circle. Теперь поместите на форму еще два компонента TShape и выберите для них в свойстве Shape (фигура): stRectangle (прямоугольник) и stEllipse (эллипс). С помощью свойства Name дайте объектам имена соответственно sh_Rectangle и sh_Ellipse. Для всех фигур выберите свойство Visible (видимый) и сделайте его равным False (ложь). Значение этого свойства можно выбрать одновременно для всех трех компонентов, щелкая на них указателем мыши при нажатой клавише Shift. Первоначально фигуры будут невидимы и появятся только при щелчке по соответствующему пункту меню. Закрасьте фигуры в различные цвета, для этого воспользуйтесь свойством Brush | Color (кисть | цвет).
Запишите текст процедуры, которая будет выполняться при щелчке на пункте меню «Шар». Для этого в окне FormMenuMa-inMenul щелкните дважды на строке «Шар». Если окно отсутствует на экране, то его можно открыть двойным щелчком на объекте MainMenul (главное меню).
Впишите между операторными скобками следующий оператор:
FormMenu.sh_Circle.Visible:=True;
Этот оператор делает видимой первую фигуру (шар).
Теперь создайте процедуры для пунктов меню «Прямоугольник» и «Эллипс». В тела процедур впишите операторы:
FormMenu.sh_Rectangle.Visible:=True; и
FormMenu.sh_Ellipse.Visible:=True;
Эти операторы делают видимыми вторую (прямоугольник) и третью (эллипс) фигуры.
Сохраните изменения и запустите проект (клавиша F9).
Проект работает, фигуры появляются по щелчку мыши, но они накладываются друг на друга. Сделайте так, чтобы на форме одновременно появлялась лишь одна фигура. Допишите в процедуру для пункта меню «Шар» следующие операторы:
FormMenu.sh_Rectangle.Visible:=False;
FormMenu.sh_Ellipse.Visible:=False;
Эти операторы делают невидимыми вторую и третью фигуры, когда открыта первая фигура.
Операторы для остальных пунктов меню запишите самостоятельно.
Сохраните изменения и запустите проект.
Теперь используем системные часы для того, чтобы сделать фигуры видимыми лишь некоторое время. На странице System (системные) найдите компонент TTimer (таймер) и поместите его на форму. Этот объект также как и MainMenul будет невидимым, поэтому вы можете поместить его в любое место формы. Свойство Enabled (включено) для часов выберите: False (ложь). Сейчас таймер выключен.
Добавьте в тело процедуры для пункта меню «Шар» следующий оператор:
FormMenu.Timer1.Enabled:=True;
Часы включились. Чтобы выключить часы и сделать Шар невидимым надо создать процедуру для часов. Для этого дважды щелкните на объекте Timer1 и в тело процедуры впишите операторы:
FormMenu.sh_Circle.Visible:=False; FormMenu.Timerl.Enabled:=False;
Первый оператор делает фигуру невидимой. Второй оператор выключает таймер.
Сохраните изменения и запустите проект.
Вы видите, что шар через некоторое время исчезает. Можно поэкспериментировать со временем «жизни» шара, изменяя свойство Interval(интервал) для объекта Timerl(интервал измеряется в миллисекундах).
Теперь попробуйте самостоятельно ограничить время видимости остальных фигур. Какие операторы надо для этого поместить в каждую процедуру? Как сделать так, чтобы интервалы для разных фигур были разными?
Далее приводится листинг всей программы:
unit UnitMenu;
Interface
Uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, ExtCtrls;
Type
TFormMenu = class (TForm)
MainMenul: TMainMenu;
Figures: TMenuItem;
Circle: TMenuItem;
Rectangle: TMenuItem;
Ellipse: TMenuItem;
Shape1: TShape;
Shape2: TShape;
Shape3: TShape;
Timerl: TTimer;
procedure CircleClick(Sender: TObject);
procedure CircleClick(Sender: TObject);
procedure EllipseClick(Sender: TObject);
procedure TimerlTimer(Sender: TObject); private
{ Private declarations } public
(Public declarations) end;
Var
FormMenu: TFormMenu;
Implementation
{$R *.DFM)
procedure TFormMenu.CircleClick (Sender: TObject); begin
FormMenu.sh_Circle.Visible:=True;
FormMenu.sh_Rectangle.Visible:=False;
FormMenu.sh_Ellipse.Visible:=False;
FormMenu.Timerl.Enabled:=True;
FormMenu.Timerl.Interval:=3000; end;
procedure TFormMenu.RectangleClick(Sender: TObject); begin
FormMenu.sh_Rectangle.Visible:=True;
FormMenu.sh_Circle.Visible:=False;
FormMenu.sh_Ellipse.Visible:=False;
FormMenu.Timerl.Enabled:=True;
FormMenu.Timerl.Interval:=2000; end;
procedure TFormMenu.EllipseClick(Sender: TObject); begin
FormMenu.sh_Ellipse.Visible:=True;
FormMenu.sh_Rectangle.Visible:=False;
FormMenu.sh_Circle.Visible:=False;
FormMenu.Timerl.Enabled:=True;
FormMenu.Timerl.Interval:=1000; end;
procedure TFormMenu.TimerlTimer(Sender: TObject); begin
FormMenu.sh_Circle.Visible:=False;
FormMenu.sh_Rectangle.Visible:=False;
FormMenu.sh_Ellipse.Visible:=False;
FormMenu.Timerl.Enabled:=False; end;
End.
Добавьте на форму метку и сделайте так, чтобы одновременно с фигурой рядом с ней отображалось ее название.
Упражнение Изменение цвета
В этом упражнении вы создадите программу, в которой щелчок по кнопке будет изменять (change) цвет фигуры. Цвет будет выбираться из предложенного списка.
Создайте папку «Изменение цвета». Создайте проект. В Строке заголовка формы запишите название: «Изменение цвета» (свойство Caption). Форме дайте имя FormChColor (свойство Name). Сохраните модуль и проект под именами соответственно UnitChColor и ProjectChColor в папке «Изменение цвета».
Поместите на форму следующие компоненты: TLabel (метка), TComboBox (редактируемый список), TBitBtn (кнопка с графикой), TShape (фигура). Вид формы представлен на рис. 4. Фигуре дайте имя sh_Figura. Кнопке дайте имя bt_Co-lor. Окну редактируемого списка дайте имя ComboBox_Color.
В свойстве Caption (заголовок) объекта Labell запишите «Выберите цвет:». В свойстве Items (элементы) для Объекта ComboBoxlзапишите названия цветов:
Синий
Красный
Зеленый
В свойстве Caption (заголовок) для кнопки bt_Color запишите: «Применить».
Теперь для кнопки надо записать процедуру изменения цвета Фигуры:
if ComboBox_Color.Text='Синий' then
sh_Figura.Brush.Color:= clBlue
Else
if ComboBox_Color.Text='Красный' then
sh_Figura.Brush.Color:= clRed
Else
if ComboBox_Color.Text='Зеленый ' then
sh_Figura.Brush.Color:= clGreen;
При написании процедуры, как и в предыдущем упражнении, используется условное предложение if...then...else (если... то... иначе).
Сохраните изменения и запустите программу. Если кнопка работает правильно, то перейдем к созданию следующей части программы.
С помощью следующей группы компонентов вы будете изменять тип фигуры.
Поместите на форму следующие компоненты: метку TLabel, редактируемый список TComboBox, кнопку TBitBtn.
В свойстве Caption (заголовок) объекта Label2 запишите: «Выберите фигуру:». В свойстве Items (элементы) для объекта ComboBox2 запишите названия фигур:
Круг
Эллипс
Прямоугольник
В свойстве Caption (заголовок) для кнопки BitBtn2 запишите «Применить». Дайте кнопке имя bt_Figura. Дайте окну редактируемого списка имя ComboBox_Figura.
Для кнопки bt_Figura надо записать процедуру:
if ComboBox_Figura.Text='Kpyr' then
sh_Figura.Shape:=stCircle
Else
if ComboBox_Figura.Text='Эллипс' then
sh_Figura.Shape:=stEllipse
Else
if ComboBox_Figura.Text='Прямоугольник' then
sh_Figura.Shape:=stRectangle;
Сохраните изменения. Запустите программу и убедитесь, что кнопка работает правильно. Вы видите, что изображение круга и эллипса не отличаются друг от друга. Чтобы изображения этих фигур были разными, надо внести некоторые изменения в процедуру для кнопки bt_Figura:
if ComboBox_Figura.Text='Эллипс' then begin sh_Figura.Shape:=stEllipse; sh_Figura.Left:=180;
// расстояние от левой границы окна уменьшить sh_Figura.Width:=125;
// ширину фигуры немного увеличить end; Так как добавились еще два оператора, то все операторы заключаются в операторные скобки begin... end (начало...конец). Операторы разделяются «точкой с запятой».
Рис. 4. Окноформы«Изменениецвета»
Во втором операторе присвойте расстоянию фигуры от левой границы окна значение, немного меньшее того, что было первоначально (см. свойство Left (слева) объекта sh_Figura). Это необходимо для того, чтобы фигура не «съехала вправо» при изменении ее ширины. В третьем операторе присвойте ширине фигуры значение немного большее того, что было первоначально (см. свойство Width (ширина) объекта sh_Figura).
Можно попробовать изменять размеры фигуры, добавив на форму еще три компонента: TLabel (метка), TComboBox (редактируемый список), TBitBtn (кнопка с графикой).
Для выбора размера фигуры вы можете использовать не редактируемый список, а другие компоненты.
Теперь создайте программу, в которой цвет фигуры будет выбираться из Палитры цветов, которая откроется при щелчке на кнопке «Выбрать цвет фигуры».
Рис. 5. Окноформы «Изменениецвета 2»
Создайте проект. В Строке заголовка формы запишите название: «Изменение цвета 2» (свойство Caption). Форме дайте имя FormChColor2 (свойствоName). Сохраните модуль и проект под именамиUnitСо1ог2 и ProjectChColor2 соответственно в папке «Изменение цвета». Разместите на форме следующие компоненты: TBitBtn (кнопка с графикой) и TShape (фигура) со страницы Additional (дополнительные) и TColorDialog (диалог цвета) со страницы Dialogs (диалоги). Назовите кнопку «Выбрать цвет фигуры» и запишите в обработчике щелчка на ней следующий код: ifColorDialog1.Execute then
Shapel.Brush.Color:=ColorDialogl.Color;
Если в диалоговом окне выбран цвет для объекта Shapel, то цвету фигуры Shapel присваивается значение, выбранное в диалоговом окне.
Сохраните изменения и запустите программу. Попробуйте изменить цвет вашей фигуры.