2013-06-06 3 views
0

Мое приложение имеет диалог администрирования, доступ к которому можно получить с помощью диалогового окна входа (оба модального).Стиль мастера: как закрыть текущий модальный диалог и открыть следующий модальный диалог в обработчике кнопок?

В диалоговом окне входа пользователь вводит свой пароль, затем нажимает ok. В обработчике ok я вызываю Self.Close(), затем AdminForm.ShowModal().

Проблема заключается в том, что LoginForm остается открытым позади AdminForm, пока не будет вызван вызов AdminForm.ShowModal() (отображается при перемещении AdminForm).

Любые идеи?

Я знаю, что я мог бы решить эту проблему, показав обе формы с 3-го места, как

LoginForm.ShowModal(); 

if <check some variable from LoginForm to see if user logged in successfully> then begin 
    AdminForm.ShowModal() 
end; 

Но я ищу специально для решения, которое работает внутри обработчика кнопки ОК в LoginForm.

ответ

1

Правильный путь - это действительно показать обе формы с третьего места. Это место уже существует, поэтому не должно быть большого смысла добавлять туда еще немного кода.

Ваш псевдокод для проверки «некоторой переменной из LoginForm» не должен существовать; модальный результат формы входа в уже говорит вам, кому-то удалось ли войти в систему:. Задача

if LoginForm.ShowModal = mrOK then 
    AdminForm.ShowModal; 

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

Если вы действительно должны сделать ShowModal метод формы входа не возвращаться, пока администрация не также полна, то вы можете просто скрыть форму входа внутри формы администратора:

procedure TAdminForm.FormShow(Sender: TObject); 
begin 
    LoginFOrm.Hide; 
end; 
+0

Hm да, скрыть работы. Я действительно не понимаю разницу между закрытием и скрытием даже после прочтения документации. Также для меня загадка, почему звонок закрытия не закрывает форму входа. На самом деле мне все равно, когда мода showmodal формы входа возвращается, я просто не хочу, чтобы вокруг меня шли разные диалоги. – Zalumon

Смежные вопросы