Перейти к содержанию
Fire Monkey от А до Я
  • 0

Свойство TAlphaColor


Krok27

Вопрос

Добрый день. Как вызвать редактор свойства TAlphaColor?

Чтобы это выглядело не как беззнаковое целое, а с палитрой цветов, как например, свойство Color в TBrush.

Спасибо.

1.png

2.png

  __property  TAlphaColor ColorOPC1 = {read=FColorOPC1,   write =FColorOPC1};

Вот аналогичный вопрос

https://fire-monkey.ru/topic/6879-fmx-c-component/#comment-40037

 

Изменено пользователем Krok27
запятая
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Без танцев с бубном я скорее всего не зарегистрирую TAlphaColorProperty.

                PTypeInfo TypeInfo;
                 PPropInfo PropInfo = GetPropInfo(__typeinfo(TRectangle), "Fill.Color");
                 if (PropInfo)
                        TypeInfo = *(PropInfo->PropType);

 RegisterPropertyEditor(TypeInfo, __classid(TAnalogViewFMX),
                        "ColorOPC", __classid(TAlphaColorProperty));

Он описан dclfmxstd.bpi (FmxAnimationEditors.pas).

Изменено пользователем Krok27
Ссылка на комментарий
  • 0

Согласно указаниям справки.

   

 PTypeInfo TypeInfo;
                    PPropInfo PropInfo = GetPropInfo(__typeinfo(TRectangle), "Fill.Color");
                    if (PropInfo)
                           TypeInfo = *(PropInfo->PropType);

                 TComponentClass classes[1] = {__classid(TAnalogViewFMX)};
                 RegisterComponents("FmxOPC", classes, 0);
                RegisterPropertyEditor(TypeInfo,__classid(TAnalogViewFMX),
                       "ColorOPC", __classid(TAlphaColorProperty));

 

Что бы компилятр С++ видел Delphi нужно дабвить  добвить в опции компилятора Delphi

http://docwiki.embarcadero.com/Libraries/Sydney/en/DesignIntf

Короче все это пока не работает. __classid(TAlphaColorProperty) не обнаруживает.

[bcc32 Error] AnalogViewFMX.cpp(382): E2303 Type name expected
  Full parser context
    AnalogViewFMX.cpp(370): namespace Analogviewfmx
    AnalogViewFMX.cpp(372): parsing: void _fastcall Register()

 

Пришлось прилепить костыль.

Объявить свойство TColor (для этого типа регистрировать ничего не надо, редактор похуже, но работать можно), внутреннее  поле TAlphaColor, написал ф-цию 

TAlphaColor __fastcall ColorToAlphaColor(const TColor aValue)
{
  TColorRec CRec;
  TAlphaColorRec ARec;

  CRec.Color = aValue;
  ARec.A = 0xFF;
  ARec.B = CRec.B;
  ARec.G = CRec.G;
  ARec.R = CRec.R;
  return ARec.Color;
}

extern DELPHI_PACKAGE System::Uitypes::TColor __fastcall AlphaColorToColor(const System::Uitypes::TAlphaColor Color);

можно взять в модуле System.UITypes.

slav_z,  спасибо за участие.

Изменено пользователем Krok27
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...