| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Переход между формами |
| Автор: Keeper89 5.5.2009, 23:16 |
| Доброго времени суток! Возможно глупый вопрос. Имеется главная форма и форма ввода пароля, которая должна появляться перед главной формой. Какую форму нужно поставить главной, и как закрывать форму пароля в случае успешного ввода пароля? Спасибо. |
| Автор: Данкинг 5.5.2009, 23:27 | ||
? |
| Автор: Christoph 5.5.2009, 23:41 | ||||
Отобрази вторую форму модально
и если пароль верный то
И у тебя модальная форма закроется |
| Автор: Rodman 5.5.2009, 23:49 | ||
но будь внимателен.. при закрытии проекта совсем - надо закрывать ГЛАВНУЮ форму |
| Автор: kami 6.5.2009, 00:41 | ||
| Вопрос не глупый, но думал что вы-то уж с гуглом на "ты". http://base.vingrad.ru/view/1186-Sozdanie-zastavki-pri-starte-programmyi Форма ввода пароля - это всего лишь форма ввода пароля, которая к главности не имеет никакого отношения. И в случае успешного ввода, и в противном случае наиболее логичным будет код Christoph, за одной оговоркой: после ModalResult=что-то_там форма ввода пароля будет уничтожена. После ее уничтожения обращаться к ней (и к результатам ее работы, всяким LoginForm.EditLogin.Text) НЕЛЬЗЯ. Поэтому сразу по отработке формы авторизации нужно сохранить имя пользователя и пароль (в явном или уже преобразованном виде - не знаю, как у вас это сделано) куда-нибудь в глобальные переменные (к примеру), и использовать их уже оттуда. P.S. с кодом из FAQ для вашего случая лишние как минимум[скорее всего] таймеры с ProcessMessages, вполне возможно нужен ShowModal а не Show... в общем, поле для деятельности есть. Добавлено через 4 минуты и 57 секунд
Забыл сказать - имеется ввиду - из ее же кода, т.е. (например) в OnLoginButtonClick, рядом с ModalResult:=... Добавлено через 12 минут и 54 секунды Еще поправка - если OnClose формы пусто, или в нем в явном виде поставлено Action:=caFree |
| Автор: Keeper89 6.5.2009, 01:13 | ||||
| kami, спасибо за расстановку всех точек над i P.S. После небольшой "операции" в dpr-файле пропала возможность выбрать Form1 в качестве главной, а Form2 (парольная форма) можно. Как можно это исправить? Добавлено через 2 минуты и 10 секунд
Т.е. в OnClose добавить Action:=caFree? Добавлено через 7 минут и 12 секунд
|
| Автор: Keeper89 6.5.2009, 02:45 |
| Плюс к предыдущим: Как объявить глобальную переменную и где, когда создана только форма ввода пароля? |
| Автор: kami 6.5.2009, 07:56 | ||||||
| Чегой-то я возможно не то сказал по поводу уничтожения формы логина. Вечером поэкспериментирую. Убрать все лишнее, подсмотреть в "чистом" dpr файле последовательность операторов. должно быть как-то так:
Создана-то только она, а вот инициализация модулей уже прошла (хотя даже она тут ни при чем). в форме ввода логина:
в UnitMain:
|
| Автор: Keeper89 6.5.2009, 20:35 | ||
Спасибо, так и сделал. Добавлено через 2 минуты и 58 секунд Всем спасибо за обсуждения! Совместил подход kami с http://delphi.about.com/od/windowsshellapi/a/password_login.htm методом, получилось очень даже неплохо. |