Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.157 c
8-1230968832
night_light
2009-01-03 10:47
2013.03.22
Всех с наступившим! Полоска при выводе в Image с картинки...


3-1282715135
fast
2010-08-25 09:45
2013.03.22
Вызов хранимой процедуры из FastReport


2-1337145645
Verner
2012-05-16 09:20
2013.03.22
Переопределение свойства класса-наследника


2-1337876849
Тарас
2012-05-24 20:27
2013.03.22
Веб Браузер


2-1343924127
Pcrepair
2012-08-02 20:15
2013.03.22
Правильный код функции с idHTTP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский