Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Как спрятать главную формы с экрана


Автор: Нитонисе 5.1.2013, 22:21
Есть программа, которая по сути является единой оболочкой для запуска других программ. На форме десяток кнопок, каждая из которых запускает отдельную программу. Но запускает по сути не отдельный exe файл, а дочернюю форму. При запуске любой из дочерних форм главную я прчу методом Hide(). При этом исчезает и кнопка с панели задач. Остается только на экране дочерняя форма, но если я активным сделаю любое другое окно, то добраться до окна моей программы можно только сворачивая прочие окна. Нет быстрого доступа через кнопку на панели задач. Вопрос в том, как прятать главную форму, при том чтобы оставалась кнопка на панели задач, которая бы ассоциировалась с запущеной дочерней формой.

Автор: DarkProg 5.1.2013, 23:23
Я не знаю какая именно у вас версия, но кажется уловил суть, во всяком случае в новых версиях именно так.

В файле проекта, при самом старте измените значение Application->MainFormOnTaskBar с True на False. И тогда пока у вас будет хоть одна форма видна будет и "кнопка" на панели задач .

Автор: Нитонисе 5.1.2013, 23:44
DarkProg, да, сработало  smile  У меня RAD Studio XE и я тоже уже не первый раз вижу, что поведение окон немного не сопадает с поведением в Builder 6.

Работать-то работает, но хотелось бы немного другого. Сейчас моя дочерняя форма и ведет себя как дочерняя. То есть если я сворачиваю - она "падает" не на панель задач, а поверх панели задач. Что не очень удобно. Хотелось бы, чтобы эта дочерняя форма во всем вела себя как главная. Нужно как-то программно ее переопредеять в главную? Впринципе меня бы это устроило. Запустить из стартовой формы дочернюю, назначить ее главной, старую главную уничтожить. Может быть такой вариант? 

Автор: 586 5.1.2013, 23:57
Например, так можно: http://www.cyberforum.ru/cpp-builder/thread398259.html
Или так:
Код
__fastcall TForm2::TForm2(TComponent* Owner)
    : TForm(Owner)
{
    SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) | WS_EX_APPWINDOW);
}

Автор: Нитонисе 6.1.2013, 00:14
586, вот это идеальное решение, то что нужно  smile 

Надо будет потом с этой волшебной строчкой подробнее разобраться, что она делает. Пока же просто copy/paste и вуаля smile

Автор: Dem_max 6.1.2013, 06:45
Меняет стиль окну

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)