Модераторы Равиль Зарипов (ZuBy) Опубликовано 16 декабря, 2015 Модераторы Поделиться Опубликовано 16 декабря, 2015 Добрый день! Интересует следующее, как делаются вот такие свойства? Красным выделено как у меня сейчас Синим как хочу сделать Подробно: Создаю компонент, у него будут настройки цвета и шрифтов, т.к. таких настроек будет несколько я создал класс TVBTextPresent = class(TPersistent) private FFont: TFont; FFontColor: TAlphaColor; FTextSettings: TTextSettings; procedure SetFont(Value: TFont); procedure SetFontColor(Value: TAlphaColor); procedure SetTextSettings(Value: TTextSettings); public constructor Create; destructor Destroy; override; procedure Assign(Source: TPersistent); override; published property Font: TFont read FFont write SetFont; property FontColor: TAlphaColor read FFontColor write SetFontColor; property TextSettings: TTextSettings read FTextSettings write SetTextSettings; end; его объявляю в компоненте published property TitlePresent: TVBTextPresent read FTitlePresent write SetTitlePresent; но не получается чтобы свойства TVBtextPresent были видны в Object Inspector'e нужно как-то зарегистрировать класс? или я неправильно объявляю свойства? Цитата Ссылка на комментарий
0 rareMax Опубликовано 16 декабря, 2015 Поделиться Опубликовано 16 декабря, 2015 Не пойму что у вас не правильно. Сейчас сделал так - все работает unit vkBaseComponent; interface Uses System.SysUtils, System.Classes; Type TTest = Class private Fname: String; published property name: String read Fname write Fname; End; TvkBaseComponent = Class(TComponent) private FVersionAPI: String; FVersion: String; FAutor: String; FTest: TTest; public constructor Create(AOwner: TComponent); override; published property VersionAPI: String read FVersionAPI; property Version: String read FVersion; property Autor: String read FAutor; property Test: TTest read FTest write FTest; End; procedure Register; implementation uses DateTimeHelper; { TvkBaseComponent } procedure Register; Begin RegisterComponents('dd', [TvkBaseComponent]); End; constructor TvkBaseComponent.Create(AOwner: TComponent); begin inherited; FVersion := '0.01 Alpha'; FVersionAPI := ''; FTest := TTest.Create; end; end. И как это выглядит Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 16 декабря, 2015 Автор Модераторы Поделиться Опубликовано 16 декабря, 2015 странно... у меня классы наследуются, может из-за этого? TVBTextPresent = class(TPersistent) TVBCustomPanel = class(TControl) Цитата Ссылка на комментарий
0 rareMax Опубликовано 16 декабря, 2015 Поделиться Опубликовано 16 декабря, 2015 врятле. А что у вас в SetTitlePresent находится? И конструктор для FTitlePresent покажите. Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 16 декабря, 2015 Автор Модераторы Поделиться Опубликовано 16 декабря, 2015 (изменено) врятле. А что у вас в SetTitlePresent находится? И конструктор для FTitlePresent покажите. procedure TVBCustomPanel.SetTitlePresent(Value: TVBTextPresent); begin if (Value <> nil) then begin FTitlePresent.Assign(Value); Repaint; end; end; constructor TVBTextPresent.Create; begin inherited Create; FFont := TFont.Create; FFontColor := TAlphaColorRec.Black; FTextSettings := TTextSettings.Create(self); end; Изменено 16 декабря, 2015 пользователем ZuBy Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 16 декабря, 2015 Автор Модераторы Поделиться Опубликовано 16 декабря, 2015 Все странным образом заработало как нужно, добавил initialization RegisterFmxClasses([TVBTextPresent, TVBPanel]); и вот это [ComponentPlatformsAttribute(fgAllPlatform)] zairkz и rareMax 2 Цитата Ссылка на комментарий
Вопрос
Равиль Зарипов (ZuBy)
Добрый день!
Интересует следующее, как делаются вот такие свойства?
Красным выделено как у меня сейчас
Синим как хочу сделать
Подробно:
Создаю компонент, у него будут настройки цвета и шрифтов, т.к. таких настроек будет несколько я создал класс
его объявляю в компоненте
но не получается чтобы свойства TVBtextPresent были видны в Object Inspector'e
нужно как-то зарегистрировать класс? или я неправильно объявляю свойства?
Ссылка на комментарий
5 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.