Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > последовательная работа с 3 и более формами


Автор: Dukalys 12.9.2010, 14:53
Помогите пожалуйста реализовать следующее -
распишу по этам ( в обязательной последовательности)

1. Создаётся форма FormConf - конфигурационная, содержит в себе едиты и т.д. с настроечной информацией. эта форма Должна быть всё время HIDE (пока её не вызвали из главной формы методом show). нужна чтобы читать значения едитов в дальнейшем.

2. Создаётся форма FormInitialize - Инициализация, происходят проверки , в том числе с данными из FormConf. сразуже после этого осуществляется переход к ГЛАВНОЙ ФОРМЕ Form1 переход осуществляется в OnCreate спустя sleep(1000);

3. Создаётся главная форма Form1, при этом форма инициализации(п.2) Free.


Сложность в том, что все задачи сводятся к formX.Hide в OnCreate что невыполнимо изза особенностей дельфы. Как мне тут скрывать форму и соответственно описать исходный код создания форм (последовательность, особенности)

пример попытался написать, ... запутался в нём...

Автор: cat512 12.9.2010, 16:57
Если ход процесса инициализации отображать не нужно, то форма инициализации как таковая не нужна. Зачем для инициализации использовать отдельную форму? Инициализацию можно провести и в главной форме, например в конструкторе. Если ход процесса иниц. отображать нужно, то делается splash, и для взаимодействия между формами, используется либо прямые вызовы методов форм, либо механизм виндовых сообщений.
Например можешь сделать так: выстави splash-у FormStyle - fsStayOnTop,  В конструкторе гл. формы проведи инициализацию, и после делай close splash форме, либо посылай сообщение WM_CLOSE.

Автор: Dukalys 12.9.2010, 17:47
угу спасибо, покопаю в этом направлении. конечно, если правильно, то форму конфигурации можно не создавать, а обойти это дело. а Вот инициализация сопровождается индикацией о выполнении. 2 формы я связать могу, просто по созданию одной создавать другую, а в созщдании другой уюить Free предыдущую. а вот с 3 формами, при этом ещё и ""Hide в OnCreate"", нужно колдовать , темболее что при создании и скрытии её колбасит- появляется исчезает, что не есть хорошо. 

Автор: SeregaAltmer 15.9.2010, 10:16
Цитата(Dukalys @  12.9.2010,  14:53 Найти цитируемый пост)
1. Создаётся форма FormConf - конфигурационная, содержит в себе едиты и т.д. с настроечной информацией. эта форма Должна быть всё время HIDE (пока её не вызвали из главной формы методом show). нужна чтобы читать значения едитов в дальнейшем.

Походу тебя интересует реализация настроек в программе. Если да, то заморочки с формой инициализации и слипами абсолютно лишние.

Очень удобный компонент для работы с опциями:
http://www.webdelphi.ru/2010/09/toptions-v-1-7-1-obnovlenie-komponenta-dlya-raboty-s-opciyami/
Легко настраивается с помощью редактора. 
Легко и удобно используется в коде. Не требует приведения типов
Пример:
Код

  Edit1.text := Options1['Текст1'].Value;
  Edit2.text := Options1['Текст2'].Value;
  TrackBar1.Position := Options1['число1'].Value;
  SpinEdit1.Value := Options1['Число2'].Value;
  CheckBox1.Checked := Options1['еще одна опция'].Value;

Умеет работать с контролами.
Умеет хранить опции в .ini-файлах, реестре и оперативке.

Ссылка ведет на пост в блоге.
Страничку, с полным описанием, пока еще в сеть не выложил, по-этому все вопросы по компоненту желательно задавать в блог.


Если интересует не это, то по вопросу и архиву не совсем понятно что должно получится, уточни.

Автор: bems 16.9.2010, 01:38
Создавай и показывай формы в dpr-файле. Чтобы форма созданная первой не становилась главной создавай ее вызовом конструктора, а не Application.CreateForm

Автор: northener 17.9.2010, 03:19
Цитата(bems @  16.9.2010,  01:38 Найти цитируемый пост)
Создавай и показывай формы в dpr-файле.

Отличный совет от "эксперта"! Вот только не понятно как избежать конфликтов с Дельфи.

Примите и прочь!

Автор: bems 17.9.2010, 14:29
Конфликтов не будет. А northener отправляется в читальный зал за хамство.

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