|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Динамическое создание "тяжёлой" формы
Доброго времени суток, форумчане!
Долгое время я работал над проектом базы данных для своих нужд, и по итогу работы пришёл к выводу, что интерфейс программы надо серьёзно переделать. Старый интерфейс был многооконным: нужна какая-нибудь справочная таблица - вызываем окно с ней из главного окна. В работе это было удобно, но пришлось очень много всего дублировать в интерфейсе. И я пришёл к выводу, что новую версию программы нужно делать однооконной, со вкладками. Но возник вопрос - а как запускать такое однооконное приложение, содержащее уйму интерфейсных элементов? По старой базе я провёл анализ времени выполнения задач при запуске, и вышло, что суммарно процентов до 40 всего времени запуска приходилось на создание форм (то есть примерно 10...12 секунд). Поскольку форм там было много, и они создавались последовательно, можно было отображать прогресс-бар загрузки. Все свойства и события форм прописывались в дизайн-тайме, а при запуске для каждой из них вызывалось Application.CreateForm(...). Но как быть в случае однооконного приложения, у которого форма будет создаваться 10 секунд? Это же явно неприемлемо. Тем более что этот этап идёт первым, а потом уже идёт загрузка настроек и активация датасетов? Возможен ли такой вариант: главное и единственное окно программы в дизайн-тайме содержит только PageControl-ы с пустыми вкладками - это для того, чтобы создание такой формы заняло минимальное время. И я делаю отдельные формы, которые будут относиться к проекту, но в ран-тайме создаваться не будут. И на этих формах я в дизайн-тайме размещаю интерфейсные элементы, которые впоследствии будут на вкладках единственного окна программы. Можно ли так сделать, чтобы динамически, при старте программы, в пустые вкладки главного окна вставлялись интерфейсные элементы из упомянутых заранее подготовленных в дизайн-тайме окон, причём желательно сразу группами - например, всё, что лежит на такой-то панели, затем - на другой, и т.д.? Понимаю, что теоретически можно и всё "до атомов" руками прописать в процедуре запуска, но это ж застрелиться можно, да и неудобно при разработке. Хотелось бы всё-таки максимально упростить себе жизнь, чтобы больше сосредоточиться на функционале программы, и не тратить слишком много труда на код процедуры запуска. |