Главная страница
    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.009 c
3-94761
typok
2003-05-11 22:07
2003.05.29
Динамическое опеделение таблиц в БД


1-94931
Max123
2003-05-17 18:07
2003.05.29
Сaption!!!


1-94943
lipskiy
2003-05-11 23:24
2003.05.29
Ярлык с другой иконкой из ресурсов программы?


1-94810
OlegM
2003-05-19 11:48
2003.05.29
Как удалить из StringList последние два символа


14-95061
qwantum
2003-05-08 07:21
2003.05.29
Трафик





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский