C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
MDI приложение, Доступ к компонентам дочерних форм
AHDPE
  Отправлено: 04.04.2004, 08:28


Ученик-кочегар

Группа: Участник
Сообщений: 25



При вызове метода компонента, находящегося на дочерней форме, их главной формы
в процессе работы программы выдается ошибка.
** pasha
Отправлено: 04.04.2004, 10:08


Не зарегистрирован







А что за ошибка ? Подробнее...

Может этот метод описан в секции private, а не public ?
AHDPE
Отправлено: 04.04.2004, 14:23


Ученик-кочегар

Группа: Участник
Сообщений: 25



Access violation at address XXXXX in module "XXX.exe" Read address FFFF"
Asher
Отправлено: 04.04.2004, 14:30


Мастер участка

Группа: Модератор
Сообщений: 550



Интересно, а как вы вызываете компонент дочерней формы ?
Точнее как вы зовете саму дочернюю форму.
joynter
Отправлено: 04.04.2004, 23:22


Станционный диспетчер

Группа: Участник
Сообщений: 137



я , в следствии своего увлечения , работаю на полу дохлых мамах процессорах видюхах и тп, а по сему могу предполагать , что аксес вуалейшен рождается не только в следствии неправильного написания кода — сам имел подобные примеры.
Admin
Отправлено: 05.04.2004, 17:06


Владимир

Группа: Администратор
Сообщений: 1190



А сама дочерняя форма существует ?
Может она в списке создаваемых ручками,
а вы ее не создаете, а к методу обращаетесь ?

Код, please...
AHDPE
Отправлено: 05.04.2004, 17:57


Ученик-кочегар

Группа: Участник
Сообщений: 25



При вызове методов дочерняя форма уже создана.
TTb1 *Tb1d = new TTb1(Application);
.piero
  Отправлено: 07.04.2004, 20:07


Дежурный стрелочник

Группа: Участник
Сообщений: 62



QUOTE
А сама дочерняя форма существует ?


если бы её небыло, оно выдаёт совсем другое, сам недавно сталкивался.

А вызываешь ты как типа Child->Component->Method();?

по другому я не умею.

напиши кусок кода!
** Павел
Отправлено: 09.04.2004, 14:22


Не зарегистрирован







Значит попробуйте отловить, где происходит exception

Например, при входе в функцию поставьте первым делом
{
ShowMessage("В функции");
...

и так далее во всех контрольных точках


Пaxa
Отправлено: 12.04.2004, 13:07


Ученик-кочегар

Группа: Участник
Сообщений: 17



Если у тебя много окон одного типа, то
formYourMDIChild — указывает на последнее дочернее окно.
Я сам недавно с этим парился... Вылезала ошибка периодечески как у тебя.
Если компонент изменяется в активном окне (скорее всего :) ), то просто для доступа к компоненте писать:

CODE
TYourMDIFormType *fTemp = ((TYourMDIFormType*)ActiveMDIChild);
fTemp->...

или сразу без переменной, ну эт кому как нравится...
Усё работет... :)

Вернуться в Вопросы программирования в C++Builder