Сообщения Windows свернуть приложение на минимизировать дочерний - PullRequest
0 голосов
/ 23 апреля 2009

У меня есть приложение delphi, где основной формой является форма входа в систему - она ​​содержит различные базы данных и пользовательские объекты, необходимые для программы. Когда пользователь входит в систему, я скрываю эту форму и открываю другую.

Моя проблема в том, как заставить приложение свернуться, когда свернута дочерняя форма? Я выяснил, как восстановить дочерний элемент, когда основной восстанавливается с помощью сообщений Windows, но я не могу понять, как заставить приложение свернуть, поэтому, когда они нажимают на панели задач, им нужно щелкнуть только один раз - не один раз, чтобы свернуть затем снова восстановить.

Любая помощь приветствуется - я пытался использовать NCACTIVATE - но в некоторых случаях это вызывает бесконечные циклы с диалоговыми окнами печати и другими окнами ...

Спасибо, Christy

Ответы [ 3 ]

3 голосов
/ 23 апреля 2009

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

  1. Выберите другую форму в качестве основной и настройте ее для создания в первую очередь.
  2. В DPR создайте форму входа вручную с помощью loginForm: = TLoginForm.Create (nil) вместо использования Application.CreateForm .
  3. Показать форму входа перед вашим Application.Run . Когда вы закончите с этим, просто спрячьте его вместо того, чтобы освободить его.

В идеале вы должны переместить все компоненты базы данных в DataModule, чтобы вы могли освободить свою LoginForm после завершения входа в систему.

2 голосов
/ 23 апреля 2009

Почему бы не сделать основную форму существующей дочерней формой, поместить логику базы данных в модуль данных, а также создать и обработать форму входа вручную? Это шаблон, который я обычно использую:

Создайте модуль данных, который будет автоматически созданный ПЕРВЫЙ в списке (до основная форма). Тройник данных в OnCreate инициализирует базу данных и отобразить форму входа, которая не является в списке автоматического создания, и создано и обрабатывается полностью в DataModule. Если мне нужен всплеск экран, затем модуль данных также обеспечивает эту функциональность в таким же образом.

Mainform OnCreate проверяет, чтобы застраховать что пользователь успешно вошел в систему, если нет то звонит application.terminate;

0 голосов
/ 23 апреля 2009

Я использую TMinModal, чтобы свернуть приложение, когда неосновная форма свернута.

http://vvv.truls.org/pascal/Units.Delphi/UI/MinModal.pas

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...