-
Здравствуйте!!
Я создал свой компонент, наследник TLabel. В нем переопределил свойство Layout следующим образом.
TFtBaseLabel=class(TCustomLabel) private FLayout:TFtTextLayout; procedure SetLayout(const Value: TFtTextLayout); public property Layout: TFtTextLayout read FLayout write SetLayout default fttlLeft ; end; TFtLabel=class(TFtBaseLabel) published ... property Layout; .... end;
Если объявить тип TFtTextLayout одним из двух способов ниже, то свойство Layout либо видно в инспекторе объектов (и сохраняется в DFM) либо нет.
Вариант 1 - в инспекторе объектов не видно!!!
TFtTextLayout = (tlTop=0, tlCenter=1, tlBottom=2, fttlLeft=-2, fttlRight=-1);
Вариант 2 - все нормально, свойство видно в ИО.
TFtTextLayout = (tlTop=0, tlCenter=1, tlBottom=2, fttlLeft, fttlRight);
Заказчик требует первый вариант, мотивируя тем что стандартное VCL свойство рано или поздно будет дополнено и тогда наши добавленные опции fttlLeft fttlRight не пересекутся с ними.
Но получается что инспектор объектов по каким-то причинам не переваривает отрицательные значения в подобных типах данных?? Так ли это и как решить проблему?
Создал тестовое свойство,
Если его тип объявлен как TFtTest = (tt3=0, tt4=1, tt5=2, tt1=-1, tt2=-2); или даже TFtTest = (tt1, tt2, tt3=0, tt4=1, tt5=2); то свойство не отображается в инспекторе объектов...
-
не работает даже если сделать вот так TFtTest = (tt3=0, tt4=1, tt5=2. tt1=10, tt2=11);
-
Перечислимые типы с явно заданными значениями не в полной мере поддерживаются компилятором. В частности - для таких типов не генерируется RTTI-информация, что как раз мешает инспектору объектов http://docwiki.embarcadero.com/RADStudio/XE4/en/Simple_TypesEnumerated Types with Explicitly Assigned Ordinality
-
Спасибо за ссылку!!!
-
Если ваше свойства не отображается в инспекторе, то напишите собственный редактор свойства
-
возьму на заметку! да, по идее должно заработать.
|