Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как скрыть дочернее окно? 
:(
    Опции темы
NPLana
Дата 20.5.2005, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 13.5.2005
Где: СПб

Репутация: нет
Всего: нет



Можно ли как-нибудь скрыть (не свернуть) уже созданные дочерние окна??? т.е. чтобы они существовали, но не были видны пользователю пока он того не захочет (нажав какую-нибудь кнопку)?...Может быть задавать нулевые размеры для него?... В общем посовейтуйте что-нибудь....
PM MAIL   Вверх
shad0w
Дата 22.5.2005, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 9.5.2005

Репутация: нет
Всего: нет



Hide() скрывает
PM MAIL   Вверх
tigger
Дата 22.5.2005, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: 2
Всего: 4



shadOw, метод Hide() к дочернему окну применить нельзя.


--------------------
user posted image
PM MAIL   Вверх
Adil'
Дата 22.5.2005, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 26.8.2004
Где: Питер

Репутация: 4
Всего: 15



Цитата(tigger @ 22.5.2005, 07:51)
shadOw, метод Hide() к дочернему окну применить нельзя.
Это почему?



--------------------
Удачи
PM MAIL WWW   Вверх
NPLana
Дата 22.5.2005, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 13.5.2005
Где: СПб

Репутация: нет
Всего: нет



Hide() не работает... ShowWindow( Handle, false ) лишь сворачивает, а мне надо чтобы было как (visible = false) - что для дочернего окна тоже не работает...
А что такое shadOw???
PM MAIL   Вверх
Adil'
Дата 22.5.2005, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 26.8.2004
Где: Питер

Репутация: 4
Всего: 15



Так, а что тогда вы называете "дочерним окном"? У меня этот код нормально работает:
Код
TForm2 *frm;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  if(!frm)
  {
    frm=new TForm2(this);
    frm->Parent=this;
    frm->Show();
  }
//  else  //так, кстати, тоже работает
//    frm->Visible=!frm->Visible;
  else if(frm->Visible)
    frm->Hide();
  else
    frm->Show();
}

Добавлено @ 17:28
Цитата(NPLana @ 22.5.2005, 17:01)
А что такое shadOw???
это ник smile - см 2-ой пост


Это сообщение отредактировал(а) Adil' - 22.5.2005, 17:26


--------------------
Удачи
PM MAIL WWW   Вверх
NPLana
Дата 22.5.2005, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 13.5.2005
Где: СПб

Репутация: нет
Всего: нет



Adil' Смешно получилоь с shadOw. Даже не заметила... Жирным выделять надо обращение smile
А я когда мне надо создаю дочернее окно таким вот образом:
Application->CreateForm(__classid(TForm2), &Form2);
при этом FomStyle главного задаю как fsMDIForm, а у дочерних соответсвенно fsMDIChild
А в твоем решение насколько я поняла это не требуется?

Добавлено @ 21:15
... поэтому и работает!
Но эта форма смотрится как неактивная
PM MAIL   Вверх
Adil'
Дата 23.5.2005, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 26.8.2004
Где: Питер

Репутация: 4
Всего: 15



Ну, предупреждать же надо, что речь об MDI smile
Перед скрытием MDIChild-окна можно сделать ему FormStyle=fsNormal, перед показом - опять fsMDIChild.
Только Parent лучше все-равно назначить, чтоб не моргало.


--------------------
Удачи
PM MAIL WWW   Вверх
Vyacheslav
Дата 23.5.2005, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Во-первых, скрыть MDI-child окно по определению нельзя штатным образом. Стройте свою программу, исходя из того что окно создается когда в нем есть необходимость и уничтожается, когда необходимость в нем отпадает. Для этого дочерние окна убирайте из списка автосоздаваемых и создаваете их по new
Код

Form2 = new TForm2(this);

Чтобы каждый раз не разбираться с их уничтожением, установите у них в событии OnCLose
Код

void TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
  Action = caFree;
}


Уверяю Вас, что при таком подходе код программы будет более прозрачен и лаконичен

Что же касается совета, который дал Adil, то это весьма черевато нарваться на глюки.
Если внимательно прочитаете хелп, то там есть четкие указания
Note: It is not advisable to change FormStyle at runtime.

"Не разумно изменять FormStyle во время выполнения программы" smile


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
NPLana
Дата 23.5.2005, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 13.5.2005
Где: СПб

Репутация: нет
Всего: нет



Vyacheslav
Собственно я так по началу и делала. Просто хотелось чтобы окна существовали после выбора определенного режима работы, но были скрыты от пользователя пока тот того не захочет. Но раз так будем их создавать, когда он захочет их увидеть...
Всем спасибо!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0645 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.