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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибка в коде 
:(
    Опции темы
Song
Дата 11.5.2003, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Тогда я чего-то не пойму: зачем ты делаешь fUsers.Close если кнопка, обладая ModalResult, кроме как mrNone, сама закроет форму!


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Dayana
Дата 11.5.2003, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 352
Регистрация: 6.10.2002
Где: Тель-Авив

Репутация: 2
Всего: 4



В этом и ошибка. Не нужно насильно закрывать форму, тогда ModalResult формы сохранит значение ModalResult кнопки. А если пароль неверный, то меняй значение ModalResult формы в коде...
PM MAIL ICQ   Вверх
*^angel^*
Дата 11.5.2003, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 5.3.2003
Где: Столица нашей нео бъятной Родины

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



Все супер! получилось. НаписАла так:

procedure TfUsers.btnOKClick(Sender: TObject);
begin
case fUsers.cbLogin.ItemIndex of
0:begin
if fUsers.ePassword.Text <> '123' then MessageDlg('Неверный пароль!', mtError, [mbOK], 0);
end;
1:begin
if fUsers.ePassword.Text <> '1234' then MessageDlg('Неверный пароль!', mtError, [mbOK], 0);
end;
2:begin
if fUsers.ePassword.Text <> '12345' then MessageDlg('Неверный пароль!', mtError, [mbOK], 0);
end;
end; // конец CASE
end;

только если я ввожу неправильный пароль, сначала выскакивает окно "Неправильный пароль", и пользователь может ввести его еще раз. А потом я опять ввожу неправильный пароль, но программа активизируется, как-будто это правильный пароль.
PM MAIL ICQ   Вверх
&-ray
Дата 11.5.2003, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 406
Регистрация: 15.4.2003
Где: Казахстан, г Аста на

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



Раз уж такие заморочки с ModalResult то можно обойтись и без него.
Просто при нажатии кнопки btnOk проверяй правильность пароля, если правильно, то просто закрывай форму и все, если нет то оставляй ее открытой. По клику на btnCancel убивай приложений (Halt).
Соответственно надо подправить dpr, чтобы не было проверок ModalResult


--------------------
"Совсем неважно от чего помрешь, ведь куда важнее - для чего родился..." С.Б.

--------------------
И снова мышь беру я в руки
Куда иду? - Конечно в сруки!
PM MAIL WWW   Вверх
*^angel^*
Дата 11.5.2003, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 5.3.2003
Где: Столица нашей нео бъятной Родины

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



СУПЕР! все получилось и работает. Сделала так:
во-первых ввела глобальную переменную FLAG : Boolean, которая отвечает за то, что правильно введены пароль и логин.
во-вторых, написАла следующее (форма авторизации, нажата кнопка ОК):

procedure TfUsers.btnOKClick(Sender: TObject);
begin
case fUsers.cbLogin.ItemIndex of
0:begin
if fUsers.ePassword.Text <> '123' then
begin
MessageDlg('Неверный пароль!', mtError, [mbOK], 0);
FLAG := false;
end
else
begin
fUsers.Close;
FLAG := true;
end;
end;
1:begin
if fUsers.ePassword.Text <> '1234' then
begin
MessageDlg('Неверный пароль!', mtError, [mbOK], 0);
FLAG := false;
end
else
begin
fUsers.Close;
FLAG := true;
end;
end;
2:begin
if fUsers.ePassword.Text <> '12345' then
begin
MessageDlg('Неверный пароль!', mtError, [mbOK], 0);
FLAG := false;
end
else
begin
fUsers.Close;
FLAG := true;
end;
end;
end; // конец CASE
end;

.dpr :

begin
Application.Initialize;
Application.CreateForm(TfMain, fMain);
Application.ShowMainForm := False;
Application.CreateForm(TfUsers, fUsers);
fUsers.ShowModal;
if FLAG then
begin
Application.ShowMainForm := true;
Application.Run;
end
else Halt;
end.

В-третьих, убрала с кнопок ОК и Отмена значения ModalResult mrOK и mrCancel соответственно.

СПАСИБО ВСЕМ ЗА ПОМОЩЬ!!!!!!!!!!!!!!!!!
чтобы я без вас делала?! wink.gif
PM MAIL ICQ   Вверх
*^angel^*
Дата 11.5.2003, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 5.3.2003
Где: Столица нашей нео бъятной Родины

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



единственное - долго загружается главная форма, после ввода правильных логина и парол.......... можно это как подправить?
PM MAIL ICQ   Вверх
Song
Дата 12.5.2003, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Проверять пароль на Form1.onShow


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
*^angel^*
Дата 12.5.2003, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 5.3.2003
Где: Столица нашей нео бъятной Родины

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



jnSow какой формы? авторизации или главной?
PM MAIL ICQ   Вверх
*^angel^*
Дата 12.5.2003, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 5.3.2003
Где: Столица нашей нео бъятной Родины

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



т.е. onShow
PM MAIL ICQ   Вверх
Song
Дата 12.5.2003, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Ну естесно главной


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
*^angel^*
Дата 12.5.2003, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 5.3.2003
Где: Столица нашей нео бъятной Родины

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



а что делать с обработчиком на кнопке ОК, в форме авторизации? просто fMain.Show? - тогда если пароль неправильный, то форма все равно показывается.
ведь ничего не происходит, если просто сделать проверку в Show.
PM MAIL ICQ   Вверх
Song
Дата 12.5.2003, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Да сделай Close асинхронно и всё..


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Akella
Дата 14.5.2003, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Попробуй открывать главное окно программы в обработчике закрытия формы авторизации
PM MAIL   Вверх
SmaLL
Дата 15.5.2003, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 557
Регистрация: 17.12.2002
Где: Voronezh

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



Я делал так

Код
procedure TMainForm.FormActivate(Sender: TObject);
var
 continue: boolean;
begin
 continue:= True;
 // крутим цикл до тех пор, пока не введут правильное имя/пароль
 // или не нажмут отмену.
 while continue do
 begin
   if dlgLogin.ShowModal = mrOK then
     continue:= not ValidLogin(dlgLogin.Login.Text, dlgLogin.Password.Text)
   else
   begin
     continue:= False;
     Close;
   end;
 end;
end;



--------------------
Что ни делается - всЁ к лучшему! SmallWeb
Мой адрес не дом и не улица, мой адрес родной пивзавод!
PM MAIL WWW ICQ   Вверх
Song
Дата 15.5.2003, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



иф ModalResult<>mrOk зен WM_CLOSE


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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