Форум: "Основная";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];
ВнизКак запаролить MDI приложение? Найти похожие ветки
← →
forrest (2003-05-20 12:39) [0]Всем привет!
Вопрос до безобразия примитивный, но как выкарабкаться не придумал.
Создаю обыкновенное MDI-приложение, но форма MainForm (fsMDIForm) у меня НЕ главная в проекте(Project->Options
->Forms -> MainForm). Главной является форма идентификации пользователя - запрос логина и пароля. Если пароль и логин верный, то поднимается MainForm (fsMDIForm). Теперь если я вызываю из MainForm какую-нибудь ChildForm (fsMDIChild), то возникает ошибка типа "Not active MDI form".
Вопрос: Как сделать так, чтобы поднималась сначала форма идентификации пользователя, а потом главная форма MDI-приложения и из неё без помех можно было вызывать все дочерние окна?
Может кто посоветует какой- нибудь другой подход?
Большое спасибо за внимание и всем откликнувшимся.
← →
Skier (2003-05-20 12:49) [1]>forrest (20.05.03 12:39)
Не создавать "форму идентификации пользователя" через
Application.CreateForm(...).
Через Application.CreateForm(...) создавать главную форму, чтобы
проинициализировать Application.MainForm.
← →
forrest (2003-05-20 12:52) [2]Согласен. Пробовал. а что дальше?
Если я пишу Application.CreateForm(...) она сразу появляется на экране, а делать Hide не даёт.
← →
Юрий Федоров (2003-05-20 13:00) [3]Можно:
В конструкторе главной формы создать диалог идентификации, в случае неудачи проверки пароля поднять Exception (если не нужно светить сообщение об ошибке, то abort)
← →
Skier (2003-05-20 13:00) [4]>forrest (20.05.03 12:52)
Обычно проверка пользователя делается в теле dpr-файла, т.е :
var
AUserCheckForm : TUserCheckForm;
begin
AUserCheckForm := TUserCheckForm.Create(...);
try
if {"плохой" юзверь} then Exit;
finally
AUserCheckForm.Free;
end; //try
//Application.CreateForm(...) создание основной формы...и т.д.
end.
← →
forrest (2003-05-20 13:07) [5]> Юрий Федоров: По поводу конструктора: не пробовал. Попробую.
Спасибо за идею.
> Skier: Что-то подобное я делал. Но не получилось. Попробую сделать так как предложили. Application.Run вызывать в конце?
После всего?
← →
Skier (2003-05-20 13:09) [6]//.....проверка пользователя........
Application.CreateForm(TMainForm, MainForm);
Application.Run;
← →
forrest (2003-05-20 13:11) [7]> Skier: Спасибо!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c