|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Удобное обращение с окнами
Совсем нубский вопрос, но всеже, может кто подскажет дельный совет.
Итак к делу: Есть некая форма авторизации пользователя в программе (form1), при успешной авторизации открывается form2 на все окно (основное рабочее окно программы), а form1 просто делается невидимым. Задумка такая - при работе программы Form2 всегда является главной рабочей областью, а все другие окна открываются только внутри нее (дочерние) и сворациваются в ней а не в панели задач. Подскажите как правильно реализовать такое? Т.е. как объявить эту form2 главной, а все остальные дочерними по отношению к ней. Подобное реализовано в 1С. И еще вопрос. Может я с самого начала немного не правильно делаю, что просто прячу Form1? Т.к. в этом случае для закрытия программы надо в основном окне программы (form2) прописывать действия на OnClose и т.д. |
#2
|
||||
|
||||
Диалог логина лучше не прятать, а убивать. Как в 1С - это MDI интерфейс.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
|||
|
|||
Можно подробнее?
|
#4
|
|||
|
|||
Да куда уж подробнее.
1. Выносишь Form1 из списка автосоздания и ставишь Form2 главной формой приложения. Это все делается в Project -> Options. 2. Далее в OnCreate Form2 создаешь Form1 и показываешь ее. Если авторизация прошла, то просто закрываешь Form1, если нет, то вызываешь Application.Terminate (ну или Halt(0), если хочется жестко прибить приклад). 3. У Form2 ставишь стиль MDIForm, у всех дочерних - MDIChild. Все. |
#5
|
|||
|
|||
спасибо огромное, сегодня обязательно попробую, что получится отпишусь
|
#6
|
|||
|
|||
чет не получается, тупо создаю две формы - у одной ставлю fsMDIForm, у второй fsMDChild, при открытии приложения у меня как-то странно странно обрезает основное окно (оно у меня alClient). см вложение.
И еще как мне показать дочернее окно например при щелчке на кнопке? |
#7
|
||||
|
||||
Цитата:
Если из автосоздания ты удалил создание окна, то окно надо создать. Создается точно так же как и при автосоздании, напиши вот это в onclick: Код:
Application.CreateForm(TForm2, Form2); Да и в случае с mdi формами при закрытии созданного окна в обработчике onclose формы не забывай ставить : Код:
Action:=caFree; |
#8
|
|||
|
|||
спасиб, попробую
|