|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Прошу помощи в MDI формах
Итак есть три формы MDIForm - fm1, MDIChild - fm2
на fm3 находится авторизация, как сделать чтоб она появлялась перед fm1 и надо ли в fm3 FormStyle ставить свойство MDIchild? |
#2
|
||||
|
||||
Цитата:
Код:
... begin Application.ShowMainForm:= false; Application.Initialize; Application.CreateForm(Tfm1, fm1); Application.CreateForm(Tfm2, fm2); Application.CreateForm(Tfm3, fm3); Application.Run; end. fm1 > FormStyle = fsMDIForm, Visible = false fm2 > FormStyle = fsMDIChild fm3 > FormStyle = fsNormal сперва появится fm3, но здесь может быть косяк - если её закрыть (она не главная), сборка останется висеть запущенной, нужно за этим следить Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Ekler1 (05.03.2018)
|
#3
|
|||
|
|||
Цитата:
Не хочет... Ошибка вылетает. |
#4
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#5
|
|||
|
|||
Да не заметил(
Но все равно не работает, если я ставлю fm1 Visible = false То после запуска приложение просто в процессах повисает и все( почему так? |
#6
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#7
|
|||
|
|||
Да проще все.
В файле проекта делам так: Код:
begin Application.Initialize; fm3 := Tfm3.Create(Nil); Try if frm.ShowModal <> mrOK Then Halt(1); Finally fm2.Free; End; Application.CreateForm(Tfm1, fm1); Application.CreateForm(Tfm2, fm2); Application.Run; end. Соответсенно, если авторизация прошла, то форма должна вернуть mrOK. Например так: Код:
procedure Tfm2.Button1Click(Sender: TObject); begin If (Edit1.Text = 'user' and Edit2.Text = 'pwd') // тут проверка авторизации, для простоты просто сравнил с константами Then ModalResult := mrOK Else Begin ShowMessage('Непрвильные логин/пароль.'); ModalResult := mrCancel; End; end; PS. Еще можно "воткнуться" в OnCreate главной формы и в случае неправильной авторизации закрывть приложение через Halt(); Последний раз редактировалось lmikle, 04.03.2018 в 22:15. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Ekler1 (05.03.2018)
|
#8
|
|||
|
|||
Цитата:
Код:
if frm.ShowModal <> mrOK Then Halt(1); |
#9
|
||||
|
||||
Цитата:
Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |
Этот пользователь сказал Спасибо dr. F.I.N. за это полезное сообщение: | ||
Ekler1 (05.03.2018)
|
#10
|
|||
|
|||
Всем спасибо, разобрался!!!
Последний раз редактировалось Ekler1, 05.03.2018 в 23:00. |