Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переход между формами 
V
    Опции темы
Keeper89
Дата 5.5.2009, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



Доброго времени суток!

Возможно глупый вопрос. Имеется главная форма и форма ввода пароля, которая должна появляться перед главной формой. Какую форму нужно поставить главной, и как закрывать форму пароля в случае успешного ввода пароля?

Спасибо.


--------------------
PM MAIL WWW   Вверх
Данкинг
Дата 5.5.2009, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(Keeper89 @  6.5.2009,  00:16 Найти цитируемый пост)
как закрывать форму пароля

Код

self.Close;

? smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Christoph
Дата 5.5.2009, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



Отобрази вторую форму модально

Код

Form2.ShowModal;


и если пароль верный то

Код

ModalResult:=mrOk;


И у тебя модальная форма закроется


--------------------
user posted image
PM MAIL ICQ   Вверх
Rodman
Дата 5.5.2009, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 1
Всего: 122



Код

Form2.hide;

но будь внимателен.. при закрытии проекта совсем - надо закрывать ГЛАВНУЮ форму
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Keeper89
Дата 6.5.2009, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



Цитата(Rodman @  5.5.2009,  23:49 Найти цитируемый пост)
но будь внимателен.. при закрытии проекта совсем - надо закрывать ГЛАВНУЮ форму 

Как раз этот способ использую, и при закрытии 2 формы приложение не завершалось. Теперь буду из 2 формы "убивать" и главную.

А нельзя сделать так:
Код

Form2.Show;
Form1.Close;

или сделать так, чтобы приложение завершалось при закрытии последней формы?


--------------------
PM MAIL WWW   Вверх
kami
Дата 6.5.2009, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



Вопрос не глупый, но думал что вы-то уж с гуглом на "ты".
показ формы первее главной


Цитата(Keeper89 @  5.5.2009,  23:16 Найти цитируемый пост)
Какую форму нужно поставить главной,

Форма ввода пароля - это всего лишь форма ввода пароля, которая к главности не имеет никакого отношения.


Цитата(Keeper89 @  5.5.2009,  23:16 Найти цитируемый пост)
как закрывать форму пароля в случае успешного ввода пароля

И в случае успешного ввода, и в противном случае наиболее логичным будет код Christoph, за одной оговоркой:
после ModalResult=что-то_там форма ввода пароля будет уничтожена. После ее уничтожения обращаться к ней (и к результатам ее работы, всяким LoginForm.EditLogin.Text) НЕЛЬЗЯ. Поэтому сразу по отработке формы авторизации нужно сохранить имя пользователя и пароль (в явном или уже преобразованном виде - не знаю, как у вас это сделано) куда-нибудь в глобальные переменные (к примеру), и использовать их уже оттуда.

P.S. с кодом из FAQ для вашего случая лишние как минимум[скорее всего] таймеры с ProcessMessages, вполне возможно нужен ShowModal а не Show... в общем, поле для деятельности есть.

Добавлено через 4 минуты и 57 секунд
Цитата(kami @  6.5.2009,  00:41 Найти цитируемый пост)
сразу по отработке формы авторизации нужно сохранить имя пользователя и пароль

Забыл сказать - имеется ввиду - из ее же кода, т.е. (например) в OnLoginButtonClick, рядом с ModalResult:=...

Добавлено через 12 минут и 54 секунды
Цитата(kami @  6.5.2009,  00:41 Найти цитируемый пост)
после ModalResult=что-то_там форма ввода пароля будет уничтожена.

Еще поправка - если OnClose формы пусто, или в нем в явном виде поставлено Action:=caFree
PM MAIL WWW   Вверх
Keeper89
Дата 6.5.2009, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



kami, спасибо за расстановку всех точек над i smile !
P.S. После небольшой "операции" в dpr-файле пропала возможность выбрать Form1 в качестве главной, а Form2 (парольная форма) можно. Как можно это исправить?

Добавлено через 2 минуты и 10 секунд
Цитата(kami @  6.5.2009,  00:41 Найти цитируемый пост)

Еще поправка - если OnClose формы пусто, или в нем в явном виде поставлено Action:=caFree 

Т.е. в OnClose добавить Action:=caFree?

Добавлено через 7 минут и 12 секунд
Цитата(kami @  6.5.2009,  00:41 Найти цитируемый пост)
Вопрос не глупый, но думал что вы-то уж с гуглом на "ты".
показ формы первее главной

smile искал, но видимо подобрал не то сочетание слов.

Это сообщение отредактировал(а) Keeper89 - 6.5.2009, 01:14


--------------------
PM MAIL WWW   Вверх
Keeper89
Дата 6.5.2009, 02:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



Плюс к предыдущим:
Цитата(kami @  6.5.2009,  00:41 Найти цитируемый пост)
куда-нибудь в глобальные переменные

Как объявить глобальную переменную и где, когда создана только форма ввода пароля?

Это сообщение отредактировал(а) Keeper89 - 6.5.2009, 02:45


--------------------
PM MAIL WWW   Вверх
kami
Дата 6.5.2009, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



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

Цитата(Keeper89 @  6.5.2009,  01:13 Найти цитируемый пост)
Как можно это исправить?

Убрать все лишнее, подсмотреть в "чистом" dpr файле последовательность операторов.

должно быть как-то так:
Код

Application.Initialize;

fmLogin:=TfmLogin.Create(nil);

if fmLogin.ShowModal<>mrOk then 
  begin
    // чего-нибудь говорим и выходим.
  end;

Application.CreateForm(fmMain, TfmMain); // а вот и главная форма.
Application.Run;

fmLogin.Free; // на этой строчке может выдавать ошибку, если форма уничтожается сама.




Цитата(Keeper89 @  6.5.2009,  02:45 Найти цитируемый пост)
Как объявить глобальную переменную и где,

Создана-то только она, а вот инициализация модулей уже прошла (хотя даже она тут ни при чем).

в форме ввода логина:
Код

implementation
uses
  UnitMain;


в UnitMain:
Код

interface
uses
...
type
  ....

var
  UserLogin:string;
  userHashPass:string;


implementation
.....


PM MAIL WWW   Вверх
Keeper89
Дата 6.5.2009, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



Цитата(kami @  6.5.2009,  07:56 Найти цитируемый пост)
Цитата(Keeper89 @  6.5.2009,  02:45 Найти цитируемый пост)
Как объявить глобальную переменную и где,
...
Создана-то только она, а вот инициализация модулей уже прошла (хотя даже она тут ни при чем).
в форме ввода логина:
...
в UnitMain:

Спасибо, так и сделал.

Добавлено через 2 минуты и 58 секунд
Всем спасибо за обсуждения!
Совместил подход kami с вот этим методом, получилось очень даже неплохо.


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1366 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.