Иллюстрированный самоучитель по Kylix

       

Создание приложения наподобие графического редактора



Создание приложения наподобие графического редактора

В графическом редакторе обычно присутствует панель инструментов, на которой располагаются кнопки. Каждая из кнопок позволяет рисовать различные фигуры (линии, точки, геометрические фигуры и многое другое). Такие кнопки удобнее всего создавать с помощью компонента CLX TSpeedButton.

Приложение должно узнавать, какую кнопку нажал пользователь, и переходить в режим рисования данного объекта. Для этого вы можете сопоставить с каждым типом фигуры целое число, но в этом случае вам придется помнить, что обозначает каждое число. Если вы позволите пользователю создавать множество фигур, то это будет довольно трудно.

Однако все это можно значительно упростить, если вы сопоставите имена-константы каждому числу. Кроме того, вы можете прибегнуть к применe-нию перечисляемого типа.

Для объявления перечисляемого типа используйте слово Тyре. Например, нижеприведенный код объявляет перечисляемый тип, содержащий все типы фигур, которые приложение позволяет рисовать пользователю:

type
TDrawangTool = (dtLxne, dtRectangle, dtEllipse, dtRoundRect);

По соглашению, идентификатор типа (в нашем случае — это TDrawmgTool) начинается с буквы T, а группа перечисляемых констант начинается с двух-буквенного префикса (в нашем случае — букв dt).


Это объявление эквивалентно объявлению группы констант:

const
dtLine = 0;
dtRectangle = 1;
dtEllipse = 2;
dtRoundRect = 3;

Главное отличие объявления группы констант и перечисляемого типа заключается в том, что в случае объявления типа вы присваиваете константам не только значение, но и новый тип, который позволяет языку Object Pascal проверять соответствие типов и предотвращать возможные ошибки. Переменная, имеющая тип TDrawingTool, может иметь значение только из перечисленных (dtLine ... dtRoundRect). Любая попытка присвоения переменной других чисел (не входящих в диапазон от 0 до 3) вызовет ошибку компиляции.

Код, приведенный в листинге 13,13, объявляет все необходимые константы для будущего приложения, позволяющего пользователю выбирать инструмент для рисования.



Содержание раздела