- 0
Стиль через наследование TCheckStyleObject
-
Похожий контент
-
- 2 ответа
- 1 792 просмотра
-
TListBoxItem Почему для моего стиля TListBoxItem сбрасывается состояние встроенного TCheckBox при прокручивании списка?
От Nix0N,
- 2 ответа
- 2 730 просмотров
-
TStyleObject Редактирование стиля, как добавить "TStyleObject", "TActiveStyleObject" и т.п.?
От Andrey Efimov,
- TSubImage
- TActiveStyleObject
- (и ещё 7 )
- 1 ответ
- 5 801 просмотр
-
-
Последние посетители 0 пользователей онлайн
- Ни одного зарегистрированного пользователя не просматривает данную страницу
Вопрос
ddr 2
Пытаюсь реализовать CheckBox с дополнительными визуальными представлениями, которые можно задавать в редакторе стилей.
Реализация: компонент созданный наследованием от TCheckBox и элемент стиля через наследование TCheckStyleObject.
Пока написал класс поражденный от TCheckStyleObject (код ниже). Тестирую поместив на форму компонент TCheckBox и указываю ему в StyleLookup, стиль создванный с испозольванием класса поражденного от TCheckStyleObject, компонент успешно применяет Стиль, что я визуально наблюдаю. Т.е. в дизайнере все состовляющие стиля видны(зарегистрированы) и доступны. Но при запуске приложения ошибка: First chance exception at $77079962. Exception class EClassNotFound with message 'Class TCheckDUStyleObject not found'. Process TestCheckBox.exe (20216). Ошибка при загрузке StyleBooka.
В чем может быть проблема?
Подозреваю, что проблема окажеться из разряда базовых "детских", поэтому описываю более подробно свои дейсвия. Возможно проблема в одном из этий действий.
По тестирование. На форму кидаю TCheckBox . На нем "Edit Custom Style...". В редакторе стилей появившемся стиле удаляю background(TCheckStyleObject)
и заменяю его своим background(TCheckDUStyleObject) перетаскиванием из палитры и меняю часть свойств в т.ч. SourceLink и другие *Link, что бы в дальнейшем увидеть нужные визуальное предстваление. Закрываю редактор стилей. Меняю StyleLookup чекбокса на "CheckBoxNew". И его визуальное представление меняется, т.е. стиль УСПЕШНО применен.
Про TCheckDUStyleObject.
Файл UCheckDUStyleObject содержащий класс, добавлен в пакет. Пакет собирается, компилируется инсталируется. Пути(Library Path) к нему пропысаны. Класс в палитре отображается.
unit UCheckDUStyleObject; interface uses FMX.Styles.Objects,System.Classes,FMX.Ani,FMX.Types; type TCheckDUStyleObject=class(TCheckStyleObject) protected type TLinkEx = (Pressed,ActivePressed,WaitingResponse,ActiveWaitingResponse,Disabled,ActiveDisabled); {$SCOPEDENUMS ON} TStateEx = (Active,Pressed, WaitingResponse, Disabled); {$SCOPEDENUMS OFF} TTransitionRec = record Animation: TAnimation; Event: TNotifyEvent; end; private protected FBitmapLinksEx: array [TLinkEx] of TBitmapLinks; FTransitionsEx: array [TStateEx] of TTransitionRec; FStateEx: set of TStateEx; procedure DefineProperties(Filer: TFiler); override; procedure SetupAnimations; override; function GetCurrentLink: TBitmapLinks; override; function GetLinkEx(Index: TLinkEx): TBitmapLinks; procedure SetLinkEx(Index: TLinkEx; const Value: TBitmapLinks); procedure ActiveTriggeredEx(Sender: TObject); procedure PressedTriggered(Sender: TObject); procedure WaitingResponseTriggered(Sender: TObject); procedure DisabledTriggered(Sender: TObject); public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure StartTriggerAnimation(const AInstance: TFmxObject; const ATrigger: string); override; published property PressedLink: TBitmapLinks index TLinkEx.Pressed read GetLinkEx write SetLinkEx; property ActivePressedLink: TBitmapLinks index TLinkEx.ActivePressed read GetLinkEx write SetLinkEx; property WaitingResponseLink: TBitmapLinks index TLinkEx.WaitingResponse read GetLinkEx write SetLinkEx; property ActiveWaitingResponseLink: TBitmapLinks index TLinkEx.ActiveWaitingResponse read GetLinkEx write SetLinkEx; property DisabledLink: TBitmapLinks index TLinkEx.Disabled read GetLinkEx write SetLinkEx; property ActiveDisabledLink: TBitmapLinks index TLinkEx.ActiveDisabled read GetLinkEx write SetLinkEx; end; procedure Register; implementation procedure Register; begin RegisterComponents('Мои компоненты', [TCheckDUStyleObject]); end; // и т.д. Далее реализация TCheckDUStyleObject
Ссылка на комментарий
2 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.