Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Invalid type cast [D6]


DimaBr ©   (2006-08-03 18:59:00) 

Создал класс, дабы не сохранять свойство в ресурсе.

TMyFont = class(TFont)
 private
   function IsCustomName: boolean;
 published
   property Charset default DEFAULT_CHARSET;
   property Color   default clWindowText;
   property Height  default -11;
   property Name   stored IsCustomName;
   property Style   default [];
end;

При объявлении свойства это типа в дизайнере возникает ошибка приведения типов, почему никак не могу понять.


property Font: TMyFont read GetFont write SetFont;

function TMyComponent.GetFont: TMyFont;
begin
 Result := fLabel.Font as TMyFont; // <- ошибка
 Result := TMyFont(fLabel.Font);   //  <- нет ошибки
end;


Alekcvp   (2006-08-04 10:28:00) [1]


> Result := TMyFont(fLabel.Font);

Result.Assign(fLabel.Font) ?


Ketmar   (2006-08-04 10:05:00) [2]

типа того. это корректней. %-)


DimaBr   (2006-08-04 09:16:00) [3]


> Ketmar ©

Так что, написать функцию "повышения" ?

function FontAs(Value: TFont): TMyFont;
begin
 Result := TMyFont.Create;
 Result.Charset = Value.Charset;
 ....
end;


Суслик   (2006-08-04 00:21:00) [4]


>  Result := TMyFont(fLabel.Font);   //  <- нет ошибки

нет ошибки компиляции, но runtime накажет :)


Ketmar   (2006-08-03 19:24:00) [5]

нельзя "повышать" тип. можно только "понижать". т.е. as тут "не канает".


Наверх

Титульная страница Поиск, карта сайта Написать письмо