![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как установить свойство Caption? [D7, WinXP]
tytus © (2006-03-22 16:35:00)Добрый день мастера. Создал компонент наследник TCustomControl - кнопка с 3D рамкой и с тремя рисунками, которые меняются OnMouseEnter <>OnMouseLeave и третий рисунок - когда по кнопке был щелчек. Заголовок меняется на этапе разработки, только после нажатия <Enter>. Когда кладу компонент на форму - то надписи на ней нет, и свойство Caption в инспекторе объектов пустое, хотя в конструкторе пишу FCaption:=Name;
Как сделать, чтобы отрисовывался заголовок?
Юрий Зотов (2006-03-23 23:22:00) [1]> tytus (23.03.06 13:34) [3]
Причина описана во второй части [2]. Вы подменили стандартное свойство Caption своим - вот оно и не поддерживается. Детали см. в [4] и в исходниках TControl.
Наиль (2006-03-23 16:46:00) [2]1. Замени
property Caption:string read FCaption write ...;
наproperty Caption;
2. Убери поле FCaption из декларации.
3. Замени в описании FCaption на Caption.
Это позволит испльзовать Caption, который уже существует в компоненте.
4. Уберит строку FCaption:=Name так, как имя компонента становится известным компоненту после создания (читай, после выполнения конструктора).
За то, чтобы имя комнпонента было видно в инспекторе, отвечает метод SetName, который помещает название в FCaption TControl'a, а не в твой FCaption, который ты выводишь на кнопку.
tytus (2006-03-23 13:34:00) [3]>Юрий Зотов [2]
ControlStyle - в норме.
Заголовок на кнопке меняется вслед за изменением свойства Caption в
инспекторе объектов. Но в самомо начале это свойство пустое.
в Paint пишу:
SetBkMode(Canvas.Handle,Transparent);
DrawText(Canvas.Handle,PChar(FCaption),Length(FCaption),clRect,DT_CENTER);
Юрий Зотов (2006-03-22 18:00:00) [4]В конструкторе: ControlStyle := ControlStyle + [csSetCaption]. И все.
И если правильно помню, то поле FCaption - лишнее, в TControl все уже есть.
Кашперук Иван (2006-03-22 17:46:00) [5]Я так понимаю, что ваш fCaption в Paint не выводится вами.
Поэтому попробую предложить просто вместо fCaption := Name; написать Caption := Name;