Шаг 8.
Вкладка Additional. Компонент TShape

    На этом шаге мы рассмотрим компонент TShape.

    Компонент TShape позволяет рисовать геометрические фигуры в форме , что можно использовать для оригинального оформления интерфейса пользователя.

    Свойства компонента TShape.

Таблица 1. Свойства компонента TShape
Свойство Описание
Property Brush: TBrush; Данное свойство позволяет закрашивать выбранную фигуру:
  • Color - выбор цвета закраски;
  • Style -выбор типа закраски:
    • bsHorizontal - закраска по горизонтали;
    • bsClear - нет закраски;
    • bsFDiagonal - закраска по диагонали слева направо;
    • bsBDiagonal - закраска по диагонали справа налево;
    • bsCross - перекрестная закраска.
Property Color: TColor; Данное свойство задаёт цвет фона.
Property Cursor: TCursor; Данное свойство задаёт вид курсора над фигурой.
Property DragCursor: TCursor; Данное свойство позволяет выбрать вид курсора из списка.
Property Enabled: Boolean; Данное свойство позволяет определить будет ли фигура активна (True- False).
Property Height: Integer; Данное свойство задаёт высоту фигуры.
Property Hint: string; Данное свойство позволяет задать текст ярлычка помощи.
Property Left: Integer; Данное свойство задаёт расстояние от верхнего края формы до фигуры.
Type TComponent Name = string[63];
Property Name: TComponent Name;
Данное свойство содержит в себе уникальное имя объекта.
Property Pen: TPen; Данное свойство позволяет задавать контуры выбранной фигуры:
  • Color - выбор цвета линии;
  • Style - выбор типа линии:
    • psDash - широкая пунктирная;
    • psSolid - сплошная линия и т.п.
  • Width - выбор толщины линии;
  • Mode - выбор фоновой текстуры.
Type TShapeType = (stRectangle, stSquare, stRoundRect, stRoundSquare, stEllipse, stCircle);
Property Shape: TShapeType;
Данное свойство содержит в себе готовые геометрические фигуры:
  • stCircle - круг;
  • stSquare - квадрат;
  • stEllipse - эллипc;
  • stRectangle - прямоугольник;
  • stRoundRect - прямоугольник со скругленными углами;
  • stRoundSquare - квадрат со скругленными углами.
Property ShowHint: Boolean; Данное свойство позволяет определить будет или нет показан ярлычок помощи (True-False).
Property Top: Integer; Данное свойство задаёт расстояние от левого края формы до фигуры.
Property Visible: Boolean; Данное свойство позволяет определить будет ли видна фигура на экране.
Property Width: Integer; Данное свойство задаёт ширину фигуры.

    Компонент TShape может принимать вид геометрических фигур показанных на рис.1.


Рис.1.Разновидности компонента TShape

    Заметим, что даже во время выполнения программы можно изменять свойства объекта TShape.

    Выполним задание: создадим приложение в котором можно изменять свойства объекта TShape.

    Разместим на форме компоненты: TShape, TColorGrid (вкладка Samples), TGroupBox и TRadioButton (рис.2.).


Рис.2.Windows-окно приложения при проектировании

    Для компонента ColorGrid1 (изменение цвета объекта) необходимо написать обработчик события OnChange, который имеет следующий вид:

procedure TForm1.ColorGrid1Change(Sender: TObject);
begin
  Shape1.Brush.Color:=ColorGrid1.ForeGroundColor;
end;
Для компонентов TRadioButton необходимо будет создать обработчик события OnClick, в коде события компонент TShape будет изменять свое свойство Shape.


Рис.3.Windows-окно приложения при запуске

    Текст приложения отображается ниже.

unit Unit1;
interface
Uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ColorGrd;
type
  TForm1 = class(TForm)
    ColorGrid1: TColorGrid;
    GroupBox1: TGroupBox;
    Shape1: TShape;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    RadioButton5: TRadioButton;
    RadioButton6: TRadioButton;
    procedure ColorGrid1Change(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure RadioButton3Click(Sender: TObject);
    procedure RadioButton4Click(Sender: TObject);
    procedure RadioButton5Click(Sender: TObject);
    procedure RadioButton6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}

procedure TForm1.ColorGrid1Change(Sender: TObject);
begin
  Shape1.Brush.Color:=ColorGrid1.ForeGroundColor;
end;
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
  Shape1.Shape:=stCircle;
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
  Shape1.Shape:=stRoundRect;
end;
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
  Shape1.Shape:=stEllipse;
end;
procedure TForm1.RadioButton4Click(Sender: TObject);
begin
  Shape1.Shape:=stSquare;
end;
procedure TForm1.RadioButton5Click(Sender: TObject);
begin
  Shape1.Shape:=stRoundSquare;
end;
procedure TForm1.RadioButton6Click(Sender: TObject);
begin
  Shape1.Shape:=stRectangle;
end;
end.
Текст этого примера можно взять здесь.

    Компонент TShape можно использовать для выделения группы кнопок отдельным цветом, например так, как показано на рис.4.


Рис.4.Выделение группы кнопок отдельным цветом

    На следующем шаге мы рассмотрим компонент TBevel.




Предыдущий шаг Содержание Следующий шаг