Главная страница
    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.062 c
2-1336632149
igorium
2012-05-10 10:42
2013.03.22
Чтение названий файлов в написанных НЕрусскими и НЕанглийскими


8-1227817299
nuflin
2008-11-27 23:21
2013.03.22
Формат файла *smd


15-1341007816
vasa777
2012-06-30 02:10
2013.03.22
0-Core


1-1298637110
evgeso
2011-02-25 15:31
2013.03.22
После закрытия Ошибка Invalid Pointer Operation


15-1330865114
Дмитрий С
2012-03-04 16:45
2013.03.22
Установка драйвера от другой ОС.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский