(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 

Конференция "Micro Focus/Borland"

Обсуждение вопросов, связанных с компанией Micro Focus/Borland, ее продуктами CaliberRM, CaliberRDM, SilkTest, StarTeam, TeamDefine, Together и других.

 
 
Добавить сообщение »

Тема: динамический (runtime) вызов компонент в C++Builder 5

Автор:  Юрий Дата: 25.03.2010 18:59
DW пишет 15.03.2001 08:37:
>Уважаемый народ, ПОМОГИТЕ!!! Пишу прогу на СУБЖ, необходим runtime вызов компонента (своего собственного, визуального), причем не одного экземпляра, а любого необходимого их количества. При вызове компонента нужно свойство Parent = указатель на родительскую форму, для того, чтобы компонент отображался на экране после его создания с помощью new. С одним экземплярам нет ни каких проблем: создается и выводится на экран. Но при попытке создать еще один компонент, прога вылетает с сообщением об ошибке:
>"Project ... raised exception class EWin32Error with message 'Win32 Error. Code: 1410. Класс уже существует' Process stopped".
>
>Причем exception возникает при попытке присвоить свойству Parent компонента адрес (указатель на) родительскую форму (она должна быть одна для всех экземпляров компонента). Даже если присваивать указатель на какой либо другой Control (Panel, Button etc.), т.е. на другого предка, ошибка все равно имеет место .
>
>Думал глюк только с моим компонентом, оказалось, что таже фишка и с другими (стандартными) компонентами. Причем при создании компонентов разных классов такой ошибки не возникает, но как только пытаешься создать еще один экземпляр - каюк .
>
>Ниже привожу код программы, отвечающий за создание компонента:
>{
>Comp? = new TComp(this);
>Comp?->Parent=this;
>Comp?->Height=Comp?->Img->Height+2;
>Comp?->Width=Comp?->Img->Width+2;
>Comp?->Visible=true;
>..
>}
>где Comp? - указатель на экземпляр класса TComp.
>
>Указатели на все созданные компоненты должны будут содержаться в структуре типа список или дерево (еще не решил).
>
>Если кто нибудь сталкивался с подобной проблемой, или знает как ее решить, или я что-то делаю не так ( ) , помогите, а то проект горит, а я уперся лбом в эту проблему, и хоть ты тресни!!! Заранее огромное спасибо.
>

Попробуйте удалить из каталога BIN настройки проекта по умолчанию, т.е. все файлы default.* и после этого создайте новый проект, в который уже включайте свои файлы. Если откроете старый проект, то ошибка останется.
Ответить на сообщение »
 
Автор:  Vladimir Дата: 09.08.2007 11:22
Вот несколько другая проблема.
Если я пишу:
check0 = new TCheckBox(Form1);
check0->Parent = Form1;

То компонент нормально отображается на форме. Если я выполняю эти же действия функцией расположенной в dll, то компонент не отображается.

int new_component(TWinControl *p)
{
check0 = new TCheckBox(p);
check0->Parent = p;

}
Ответить на сообщение »
 
Автор:  Лидия Дата: 30.03.2007 10:05
У любой компаненты есть имя Comp?->Name. Вы его не изменяете. Возможно в этом и есть ваша ошибка. Во всяком случае мне это помогло.
Ответить на сообщение »
 
Автор:  migmile Дата: 28.03.2007 14:57
Кажется, несколько лет назад было что-то похожее. Исправлялось созданием проекта заново и добавлением в него всех требуемых файлов. Окончательно исправилось скачиванием обновлений к Builder (или переход на 6)
Ответить на сообщение »
 
Автор:  Владимир Дата: 24.03.2007 19:44
А имя компонента (до установки Parent) задать уникальное ?
Ответить на сообщение »
 
Автор:  Maull Дата: 22.03.2007 17:03
....test
Ответить на сообщение »
 
Автор:  DW Дата: 15.03.2001 08:37
Уважаемый народ, ПОМОГИТЕ!!! Пишу прогу на СУБЖ, необходим runtime вызов компонента (своего собственного, визуального), причем не одного экземпляра, а любого необходимого их количества. При вызове компонента нужно свойство Parent = указатель на родительскую форму, для того, чтобы компонент отображался на экране после его создания с помощью new. С одним экземплярам нет ни каких проблем: создается и выводится на экран. Но при попытке создать еще один компонент, прога вылетает с сообщением об ошибке:
"Project ... raised exception class EWin32Error with message 'Win32 Error. Code: 1410. Класс уже существует' Process stopped".

Причем exception возникает при попытке присвоить свойству Parent компонента адрес (указатель на) родительскую форму (она должна быть одна для всех экземпляров компонента). Даже если присваивать указатель на какой либо другой Control (Panel, Button etc.), т.е. на другого предка, ошибка все равно имеет место .

Думал глюк только с моим компонентом, оказалось, что таже фишка и с другими (стандартными) компонентами. Причем при создании компонентов разных классов такой ошибки не возникает, но как только пытаешься создать еще один экземпляр - каюк .

Ниже привожу код программы, отвечающий за создание компонента:
{
Comp? = new TComp(this);
Comp?->Parent=this;
Comp?->Height=Comp?->Img->Height+2;
Comp?->Width=Comp?->Img->Width+2;
Comp?->Visible=true;
..
}
где Comp? - указатель на экземпляр класса TComp.

Указатели на все созданные компоненты должны будут содержаться в структуре типа список или дерево (еще не решил).

Если кто нибудь сталкивался с подобной проблемой, или знает как ее решить, или я что-то делаю не так ( ) , помогите, а то проект горит, а я уперся лбом в эту проблему, и хоть ты тресни!!! Заранее огромное спасибо.
Ответить на сообщение »
 

Добавить сообщение »

 Распечатать »
 Правила публикации »
   
 Рекомендовать »  
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Quest Software. Toad for SQL Server Development Suite
DeviceLock Endpoint DLP Suite - от 1 ПК до 24 ПК
Panda Mobile Security - ESD версия - на 1 устройство - (лицензия на 1 год)
erwin Data Modeler Navigator Edition r9.7 - Product plus 1 Year Enterprise Maintenance Commercial
ESET Secure Authentication newsale for 5 user, лицензия на 1 год
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
СУБД Oracle "с нуля"
eManual - электронные книги и техническая документация
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Как мигрировать программу написанную на старом Буилдер 4.52 (1)
Мы поддерживаем старое приложение написанное с использованием С++ Буилдер 5.5 (ЕХЕ) и Буилдер...
 
Создание базы данных в Delphi, без сторонних БД (1)
Уважаемый автор, гуглю уже который день и у Вас как у всех "кидаем.." "даже не создаем проект"...
 
C++ Builder6 & Excel (11)
Доброе время суток! Пишу приложение в C++ Builder6 для формирования файлов Excel. Требуется...
 
Принцип создания плагинов в Delphi (3)
Достали, Эта статья не о плагинах а о подключении dll и возможности использования ресурсов в...
 
QuickREport (40)
Есть приложение скомпилированное в Delphi6. Для построения отчетов я использовал компонеты из...
 
 
 



    
rambler's top100 Rambler's Top100