Упражнение Изменение цвета




Лабораторная работа №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. ОкноФормы«Меню»

Создайте проект. Назовите форму «Меню» (свойство Capti­on), сохраните в папке «6» модуль и проект под именами соот­ветственно UnitMenu и ProjectMenu, дайте форме имя FormMenu (свойство Name). Вид формы представлен на рис. 25.

Установите в любом месте формы компонент TMainMenu (главное меню) со страницы Standard (стандартные). Этот объ­ект не будет видимым при работе программы. Выполните двой­ной щелчок на объекте. Появилось окно для создания меню. В свойстве Caption (заголовок) для пунктов меню последова­тельно впишите: «Фигуры», «Шар», «Прямоугольник», «Эл­липс». Дайте имена пунктам меню с помощью свойства Name (имя): Figures, Circle, Rectangle и Ellipse.

Состраницы Additional (дополнительные) поместите на фор­му компонент TShape (фигура) и в свойстве Shape (фигура) вы­берите значение: stCircle (круг). С помощью свойства Name (имя) дайте объекту имя sh_Circle. Теперь поместите на форму еще два компонента TShape и выберите для них в свойстве Sha­pe (фигура): 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 присваивается значение, выбранное в диалоговом окне.

Сохраните изменения и запустите программу. Попробуйте изменить цвет вашей фигуры.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-11-19 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: