Компонент, свойство типа TColor

Gwa
Дата: 12.11.2007 02:13:26
При написании своего компонента легко сделать настройку цвета.
Для это объявляется свойство типа TColor.
При публикации этого свойства оно появляется в стандартном виде
в инспекторе объектов (стандартное перечисление в виде комбобокса)
Но как редуцировать набор цветов, например, чтоб список состоял
только из clRed, clYellow и clGreen?
A.K.
Дата: 12.11.2007 02:40:23
Решение 1. Написать и зарегистрировать свой редактор свойства (Property Editor), взяв за основу стандартный редактор для свойств типа TColor - он называется TColorProperty, модуль Source\ToolsAPI\VCLEditors.pas.

Решение 2. Иначе взглянуть на решение задачи. Судя по всему, вам нужны только цвета, соответствующие состояниям светофора. Вопрос: нафига вам свойство типа TColor? Гораздо разумнее сделать свойство перечислимого типа:
type TTrafficLight = (tlRed, tlYellow, tlGreen);
Необходимость городить собственный редактор свойства пропадет сама собой.
Kotъ-Begemotъ
Дата: 12.11.2007 02:43:11
A.K.
Вопрос: нафига вам свойство типа TColor? Гораздо разумнее сделать свойство перечислимого типа:
type TTrafficLight = (tlRed, tlYellow, tlGreen);
Необходимость городить собственный редактор свойства пропадет сама собой.


Поддерживаю обеими руками!
A.K.
Дата: 12.11.2007 03:02:05
Еще для пущей убедительности:
Искоренение остальных цветов из Object Inspector'а при сохранении свойства типа TColor (назовем его Light) нисколько не помешает написать в программе такую строчку:
MyComponent1.Light := clBlue;