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

 
Управление формами MDI
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



sad.gif и чем это отличается от того что я написал, кроме небезопасного приведения типов? wink.gif

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