Вниз
Скачать: CL | DM;

Как правильно создать наследников фрейма   Найти похожие ветки 

 
AntiUser   (2012-06-14 11:05) [0]

Ситуация такая.
Сделал базовый класс:
TBaseFrame = class(TFrame)
 private
 protected

 public

 end;


Создал еще фрейм (File > New > Frame - Delphi)
Задал имя фрейму FirstFrame
В юните соответственно получил
 TFirstFrame = class(TFrame)
 private
   { Private declarations }
 public
   { Public declarations }
 end;

Изменил предка с TFrame на TBaseFrame

Все прекрасно компилируется и работает, но только до закрытия проекта. Как только пытаешься его открыть заново, получаешь ошибку
Error reading property и кнопки игнорировать и т.п.
Т.е. фактически дельфя преобразовывает фрейм в форму, после чего вся конструкция перестает работать.
При попытке создания фрейма получаю ошибки
Error reading ... Property ... does not exist.

Как правильно реализовать такой механизм?

(XE, Win7)


 
KSergey ©   (2012-06-14 11:31) [1]

Закройте проект, поменяйте еще и в DFM-файле предка, откройте проект заново


 
AntiUser   (2012-06-14 11:54) [2]

Т.е. вы хотите что бы я в dfm"е указал вместо

object FirstFrame: TFirstFrame
 Left = 0
 Top = 0
 Width = 470
 Height = 340

object FirstFrame: TBaseFrame
 Left = 0
 Top = 0
 Width = 470
 Height = 340


Так?
Но так тоже не прокатывает.


 
Rouse_ ©   (2012-06-14 11:58) [3]

File->New->Other->Inheritable Items-> там увидишь список уже созданных фреймов, выбери тот от которого хочешь наследоваться.


 
Омлет ©   (2012-06-14 12:15) [4]

> AntiUser   (14.06.12 11:54) [2]

Нет. Надо так:
inherited FirstFrame: TFirstFrame

Но лучше не руками, а как сказано в [3].


 
AntiUser   (2012-06-14 12:23) [5]

У меня нет там в списке базового класса. Видимо его тоже надо не просто написать, а создать как фрейм.
Сейчас попробую.

Хм... Получилось. Так заработало, только теперь надо переписать что было уже понаписано.


 
AntiUser   (2012-06-14 12:25) [6]


> Омлет ©   (14.06.12 12:15) [4]

Видимо проблема в том, что базовый класс был написан ручками, а не создан как фрейм.
Но я исходил из того, что в базовом не должно быть фрейма (dfm"а) его реализацией занимаются наследники. Пока не знаю как разрулится этот момент, что и в базовом фрейм и в наследнике фрейм.


 
Омлет ©   (2012-06-14 12:46) [7]


> Пока не знаю как разрулится этот момент, что и в базовом
> фрейм и в наследнике фрейм.

По-моему, всё наследуется.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: -0.38 c
15-1354393802
Юрий
2012-12-02 00:30
2013.03.22
С днем рождения ! 2 декабря 2012 воскресенье


2-1339051975
stas
2012-06-07 10:52
2013.03.22
Скриншот активного окна


15-1337159093
Дмитрий С
2012-05-16 13:04
2013.03.22
Загрузить одним махом несколько динамических массивов.


2-1335082063
Влад_
2012-04-22 12:07
2013.03.22
Кол-во запущенных экземпляров программы


15-1329135391
Kerk
2012-02-13 16:16
2013.03.22
KaZaNoVa




   Наверх