![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 тут "не канает".