Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.29;
Скачать: CL | DM;

Вниз

Как запаролить 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
1-94898
Yakudza
2003-05-16 13:24
2003.05.29
Проверка полей в компоненте


1-94930
Max1111
2003-05-17 12:15
2003.05.29
Вызов справке.


1-94911
Андрей
2003-05-17 10:09
2003.05.29
Глобальные процедуры


8-94973
Fast
2003-02-13 12:58
2003.05.29
TChart Axis Flip


7-95136
acsoft
2003-03-31 08:00
2003.05.29
Как программно скопировать нужные ключи реестра в файл *.reg