|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.12.2008, 12:34 | #1 |
Бредовый
Форумчанин
Регистрация: 15.11.2008
Сообщений: 285
|
Создать класс(компонент) внутри компонента
Подскажите пожалуйста, например нужно создать компонент на основе panel, на ней расположить 2 панели но у которых обрабатывается mouseenter mouseleave. Я тут по быстрому написал код чтоб понятнее было о чем я
Код:
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
|
20.12.2008, 12:37 | #2 |
Бредовый
Форумчанин
Регистрация: 15.11.2008
Сообщений: 285
|
Забыл написать процедуры обработки mouseenter и mouseleave, но это не важно, вопрос не в этом заключается.
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
|
20.12.2008, 14:18 | #3 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
У Вас форма является владельцем объектов D8CustomPanel1/D8CustomPanel2. Поэтому эти компоненты тоже пишутся в .dfm. Чтобы их считать нужен класс, а он не зарегистрирован.
Это причина ошибки. Но это не все. Можно, конечно зарегистрировать класс. Он будет читаться. Но догда в Design time можно будет легко удалить любую из панелей, которые вроде-бы объявлены private. Еще будут проблемы с лишними вызовами Create, но не буду углубляться. Можно сделать по другому. Убрать владение и удалять панели самому. Код:
А вообще то, что Вы пытаетесь сделать не простая задача. Посмотрите VCL - как со своими страницами управляется TPageControl. Я бы не стал морочить голову, а создал этот компонент в run-time. ------------------ Еще вариант. Обрабатывать момент вставки/удаления компонента TD8Skn на форму (в design-time) и там создавать/удалять панели TD8CustomPanel. Там же можно будет запомнить ссылки на них и работать с этими ссылками. TD8CustomPanel придется тоже сделать компонентом и зарегистрировать. Последний раз редактировалось alexBlack; 20.12.2008 в 14:48. |
20.12.2008, 14:46 | #4 |
Бредовый
Форумчанин
Регистрация: 15.11.2008
Сообщений: 285
|
Спасибо за ответ, я написал код чтоб просто было понятно о чем я, на самом деле вместо главной панели не визуальный компонент. А дополнительные панели ставятся на форму. Если можно как-то сделать что б они ставились не во время скидывания компонента на форму, а во время запуска программы и без всяких ошибок то подскажите как это сделать. Может пример где есть или статья, я не нашел.
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
|
20.12.2008, 15:02 | #5 | |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Цитата:
Код:
|
|
20.12.2008, 16:04 | #6 |
Бредовый
Форумчанин
Регистрация: 15.11.2008
Сообщений: 285
|
Спасибо. Мне б статью почитать какую-нибудь про создание компонент внутри компонент.
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
|
21.12.2008, 09:26 | #7 |
Старожил
Регистрация: 29.01.2008
Сообщений: 2,406
|
Да ничего сложного там нет
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как в Делфи создать кнопочку "ОК". подробности внутри темы.... | Кристина2008 | Общие вопросы Delphi | 2 | 09.12.2008 22:49 |
Heeelp! kak создать класс? | AndreyN | Общие вопросы C/C++ | 2 | 08.10.2008 14:49 |
Как программно удалить компонент от формы или другого компонента (контейнера)? | SkAndrew | Общие вопросы Delphi | 3 | 27.05.2008 15:20 |
создать свойство компонента | дядя | Компоненты Delphi | 2 | 11.05.2008 23:23 |
Создать класс – треугольник, заданный своими координатами (точками). | jenja | Общие вопросы Delphi | 5 | 18.04.2008 07:50 |