Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2014, 23:38   #1
xxxkrikxxx
 
Регистрация: 05.03.2014
Сообщений: 3
Радость Класс внутри класса

Всем привет. Имеется компонент, в котором внутри имеется 2 класса.

Код:
TTestClass1 = class(TComponent)
...
Создаются объекты в Canvas
...
TTestClass2 = class(TComponent)
...
Создаются объекты в Canvas
...
В конструкторе TTestClass2
создаются экземпляры TTestClass1.

Когда кидаю на форму, вроде все норм. Но при запуске приложения на выполнение пишет что TTestClass1 не найден. В чем может быть проблема?
xxxkrikxxx вне форума Ответить с цитированием
Старый 28.07.2014, 01:50   #2
Vapaamies
Просветитель
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,844
По умолчанию

Ошибка наверняка в сохранении в DFM. Почитай в справке про DefineProperty, например.

Что-то не так может быть и наследованием. Компоненты должны сохраняться в DFM как самостоятельные объекты, а не как свойства другого компонента, для этого есть TPersistent.
В разработке: воспроизводственный контур ИТ

Последний раз редактировалось Vapaamies; 28.07.2014 в 01:53.
Vapaamies вне форума Ответить с цитированием
Старый 28.07.2014, 08:57   #3
xxxkrikxxx
 
Регистрация: 05.03.2014
Сообщений: 3
По умолчанию

Т.е. предпологается чтобы TTestClass1 и TTestClass2 были отдельными компонентами и создавались уже на форме?
Давайте разберем для примера ситуацию, когда нужно сделать TPanel на которой нужно сделать Button и Label (и все это новый компонент). Как правильно создать данный компонент?
xxxkrikxxx вне форума Ответить с цитированием
Старый 28.07.2014, 12:10   #4
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от xxxkrikxxx Посмотреть сообщение
Т.е. предпологается чтобы TTestClass1 и TTestClass2 были отдельными компонентами и создавались уже на форме?
Давайте разберем для примера ситуацию, когда нужно сделать TPanel на которой нужно сделать Button и Label (и все это новый компонент). Как правильно создать данный компонент?
Для твоего TPanel, просто свойство Parent при создание Label и Button задается на Panel.
Пример кода:
Код:
//на форме уже создан Panel1: TPanel
var
ButtonPanel1: TButton;
LabelPanel1: TLabel; //для начала объявим их
begin
ButtonPanel1:= TButton.Create(Self);
LabelPanel1:= TLabel.Create(Self);
ButtonPanel1.Parent:=Panel1;
Label1Panel1.Parent:=Panel1;
//дальше присваиваешь им координаты и прочие свойства. 
end;
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 28.07.2014, 12:22   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Цитата:
Давайте разберем для примера ситуацию, когда нужно сделать TPanel на которой нужно сделать Button и Label (и все это новый компонент). Как правильно создать данный компонент?
При добавлении компонент внутрь вашего компонента-контейнера, компоненты автоматически получают вас как владельца и как родителя. А уже ваш компонент управляет расположением этих компонент внутри себя и их жизненным циклом.

саша40, только Owner не self а panel1.

Последний раз редактировалось Человек_Борща; 28.07.2014 в 12:30.
Человек_Борща вне форума Ответить с цитированием
Старый 28.07.2014, 18:07   #6
Vapaamies
Просветитель
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,844
По умолчанию

Цитата:
Сообщение от xxxkrikxxx Посмотреть сообщение
Давайте разберем для примера ситуацию, когда нужно сделать TPanel на которой нужно сделать Button и Label (и все это новый компонент).
Честно говоря, я уже забыл, как это делается. Предлагаю посмотреть исходники TLabeledEdit самостоятельно.
В разработке: воспроизводственный контур ИТ
Vapaamies вне форума Ответить с цитированием
Старый 28.07.2014, 18:30   #7
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
саша40, только Owner не self а panel1.
Спасибо. Учту в будущем.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 28.07.2014, 18:31   #8
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Автор, ты ещё с нами или уже ушел?
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функции внутри класса... Muvvka C++ Builder 4 24.06.2013 20:58
Указатель на объект внутри класса WildTaburet Visual C++ 1 01.10.2012 14:34
ооп класс внутри класса Abuhamed PHP 2 02.04.2012 22:07
Класс внутри класса Prontit Общие вопросы Delphi 16 07.10.2011 08:30
Локальные хуки внутри класса Impuls1989 Общие вопросы Delphi 12 27.07.2010 20:47