Самостоятельная работа
Теперь попробуйте самостоятельно ограничить время видимости остальных фигур. Какие операторы надо для этого поместить в каждую процедуру? Как сделать так, чтобы интервалы для разных фигур были разными?
Листинг программы:
unit UnitMenu;
interface
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:=Ealse;
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_Reсtangle.Visible:=False;
FormMenu.sh_Ellipse.Visible:=False;
FormMenu.Timerl.Enabled:=False;
end;
end.
Самостоятельная работа
Добавьте на форму метку и сделайте так, чтобы одновременно с фигурой рядом с ней отображалось ее название.
Упражнение 2. Изменение цвета.
В этом упражнении вы создадите программу, в которой щелчок по кнопке будет изменять (change) цвет фигуры. Цвет будет выбираться из предложенного списка.
Создайте папку «Изменение цвета». Создайте проект. В Строке заголовка формы запишите название: «Изменение цвета» (свойство Caption). Форме дайте имя FormChColor (свойство Name). Сохраните модуль и проект под именами соответственно UnitChColor и ProjectChColor в папке «Изменение цвета».
Поместите на форму следующие компоненты: TLabel (метка), TComboBox (редактируемый список), TBitBtn (кнопка с графикой), TShape (фигура). Вид формы представлен на рис. 2.
Фигуре дайте имя sh_Figura. Кнопке дайте имя bt_Color. Окну редактируемого списка дайте имя ComboBox__Color.
В свойстве Caption (заголовок) объекта Label1 запишите «Выберите цвет:». В свойстве 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 (начало...конец). Операторы разделяются «точкой с запятой». Во втором операторе присвойте расстоянию фигуры от левой границы окна значение, немного меньшее того, что было первоначально (см. свойство Left (слева) объекта sh_Figura). Это необходимо для того, чтобы фигура не «съехала вправо» при изменении ее ширины. В третьем операторе присвойте ширине фигуры значение немного большее того, что было первоначально (см. свойство Width (ширина) объекта sh_Figura).
Рис.3. Окно формы «Изменение цвета»
Можно попробовать изменять размеры фигуры, добавив на форму еще три компонента: TLabel (метка), TComboBox (редактируемый список), TBitBtn (кнопка с графикой). Для выбора размера фигуры вы можете использовать не редактируемый список, а другие компоненты.