Alex-San |
Отправлено: 11.02.2004, 14:40 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
Добрый день!
У меня возникла задачка:
Есть главное окно и Child-формы... У всех форм есть функции AddOper и DelOper, оьявленные как public в списании child-форм.
В главной форме есть пункты меню "Добавить" и "Удалить"
Задача: Нужно, чтобы по клику на этих пунктах запускались соответствующие функции той child-формы, которая активна в настоящий момент...
Как это сделать попроще? (желательно кусочек исходника)
Заранее спасибо.. |
|
xTrim |
Отправлено: 11.02.2004, 14:54 |
|
Машинист паровоза
Группа: Участник
Сообщений: 208
|
вроде так
CODE |
TMDIChild* f = dynamic_cast<TMDIChild*>([B]ActiveMDIChild[/B]);
if(!f) return;
f->AddOper();
|
|
|
Alex-San |
Отправлено: 11.02.2004, 15:21 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
Что-то ругается — говорит, что
[C++ Error] Main_F.cpp(159): E2451 Undefined symbol 'TMDIChild' |
|
xTrim |
Отправлено: 11.02.2004, 15:42 |
|
Машинист паровоза
Группа: Участник
Сообщений: 208
|
TMDIChild это тип моей дочерней формы, вместо нее нужно Ваш тип подставить
|
|
Alex-San |
Отправлено: 11.02.2004, 16:17 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
Ясно..
А на меня снизошло озарение — добавил POPUP-меню(добавить,удалить) и ассоциировал с чилдом... Усе работает...
Чтой-то торможу.... |
|
Pirs |
Отправлено: 12.02.2004, 00:53 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 39
|
if(ActiveMDIChild) ((TYourChilTypeForm*) ActiveMDIChild -> YourFunction();
Вначале проверяешь — есть ли вообще Child форма. Затем преобразуешь уакзатель ActiveMDIChild к типу своей Child формы, что бы сделать видимой свою функцию объявленную в Child. Если вызывается обычная функция из класса TForm указатель можно не преобразовывать. Если есть несколько Child форм то преобразуй указатель к правильной форме. 100% работает.
|
|
xTrim |
Отправлено: 12.02.2004, 14:17 |
|
Машинист паровоза
Группа: Участник
Сообщений: 208
|
и чем это отличается от того что я написал, кроме небезопасного приведения типов?
|
|