| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Создание вкладки в дочернем окне из родительского |
| Автор: chiffa 5.8.2011, 11:37 | ||
Добрый день. Делаю следующее: создаю дочернее окно (Form2) в нем по oncreat создаю вкладку:
Далее на родительской форме (Form1) есть кнопка которая должна добавлять вкладки на Form2, но это не происходит, а выдает ошибку (обращение к памяти и т.д.), при этом первая вкладка создается нормально. ОТсюдова возникает вопрос: как из родительского окна правильно создать обьект в дочернем?... Заранее благодарен всем за помощь! |
| Автор: maniaks1 7.8.2011, 08:30 |
| Наверно что то делаеш неправильно. Проблем быть не должно. |
| Автор: chiffa 8.8.2011, 09:26 |
| Так то работает... а в дочернем окне? (МидиЧайлд...) |
| Автор: maniaks1 8.8.2011, 20:50 |
| Извиняюсь, не вник в суть. Может так? |
| Автор: chiffa 9.8.2011, 10:35 |
| Странно что то... Переношу все как у тебя, но ругается на строку T := TTabSheet.Create(FrmShPgCont); Правда у меня еще Дочернее окно создается по клику TFrmShow.Create (Application); |
| Автор: maniaks1 9.8.2011, 10:45 |
| сделай минимальный пример как делаеш, вечером гляну |
| Автор: chiffa 9.8.2011, 11:29 |
| И создание вкладок идет из другого дочернего окна, может это как влияет... |
| Автор: chiffa 9.8.2011, 12:18 |
| Выкладываю "пример". Буду крайне признателен за помощь. |
| Автор: maniaks1 9.8.2011, 21:01 |
| Окно создал... но оно не активное, а активное то, на котором у тебя кнопка и на нём естественно нету PageControl) В этом случае ActiveMDIChild тебе не помощник. procedure TForm2.btn1Click(Sender: TObject); var Form3:TForm3; begin //if open_form = False then TForm3.Create (Application); //else //TForm3(ActiveMDIChild).NewPage('Íîâàÿ âêëàäêà'); if open_form then exit; Form3:=TForm3.Create(Application); Form3.NewPage('Íîâàÿ âêëàäêà'); Form3:=nil; Form3.Free; end; |
| Автор: chiffa 10.8.2011, 09:28 |
| А как тогда такое реализовать?..... |
| Автор: maniaks1 10.8.2011, 13:08 |
| Я же показал как это без ошибок сделать. Если у тебя форма созда]тся в одном месте, а вкладки из другого, то имеет смысл перебрать все дочерние окна Например так: for i:=0 to Form1.MDIChild.....Count-1 do if TForm3(Form1.MDIChild.....[i]).Caption='Нужная форма' then TForm3(Form1.MDIChild....[i]).NewPage('Новая вкладка'); Можно также перебирать по tag (при создании присваивать) Или по имени класса. |
| Автор: chiffa 11.8.2011, 11:19 |
| Огромное спасибо!!!! То что нужно! |