Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-94931
Max123
2003-05-17 18:07
2003.05.29
Сaption!!!


3-94753
Robber
2003-05-11 14:25
2003.05.29
Вопрос! Как упаковать БД в Delphi?


9-94652
Эдуард
2002-12-17 05:11
2003.05.29
Программирование вращения


7-95148
kliff
2003-03-30 13:51
2003.05.29
Как создать системную службу?


14-95040
Soft
2003-05-07 16:21
2003.05.29
Какой Linux более стабилен, удобен, быстр...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский