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

Вниз

LogonForm - как вызвать.   Найти похожие ветки 

 
LinOS ©   (2004-01-15 08:14) [0]

Есть главная форма и форма диалога подключения к БД LogonForm.
Как сделать чтобы после появления главной формы открылась
форма LogonForm для ввода имени пользователя и пароля и возврат в главную форму произошол только после удачного соединения с БД?


 
Романов Р.В. ©   (2004-01-15 08:46) [1]

Проще сделать до появления главной формы.

program Project1;

uses
Forms, Controls,
Unit1 in "Unit1.pas" {Form1},
Unit2 in "Unit2.pas" {LogonForm};

{$R *.res}

function CheckPsaaword: boolean;
begin
with TLogonForm.Create(nil) do
begin
ShowModal;
Result := ModalResult = mrOk;
Free;
end;
end;

begin
Application.Initialize;
if CheckPsaaword then
begin
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
end.


А если надо после - то можно через PostMessage послать сообщение главной форме, в обработчике которого вызывается LogonForm.


 
Anatoly Podgoretsky ©   (2004-01-15 09:11) [2]

ShowModal


 
KSergey ©   (2004-01-15 09:58) [3]

Настоятельно рекомендую следующую связку:


[1] Романов Р.В. © (15.01.04 08:46)
А если надо после - то можно через PostMessage послать сообщение главной форме, в обработчике которого вызывается LogonForm.

+

[2] Anatoly Podgoretsky © (15.01.04 09:11)
ShowModal


 
LinOS ©   (2004-01-15 10:05) [4]

А если без использование WIN API?


 
KSergey ©   (2004-01-15 10:12) [5]

А где здесь использование WinAPI? Ну кроме ф-ции PostMessage, конечно.
Вот только чем ее вызов так страшен?


 
LinOS ©   (2004-01-15 10:17) [6]

А тем, что я пишу на CLX и хочу чтобы мое приложение работало не
только в win но и под *nix.


 
Романов Р.В. ©   (2004-01-15 10:29) [7]

Тогда при создании главной формы присвойобработчик Application.OnIdle в нем делай вызов LogonForm, но перед этим обнули обработчик Application.OnIdle := nil;


 
Семен Сорокин ©   (2004-01-15 10:30) [8]

можно таймером воспользоваться.


 
LinOS ©   (2004-01-15 11:21) [9]

//Тогда при создании главной формы присвойобработчик Application.OnIdle в нем делай вызов LogonForm, но перед этим

Перед чем перед этим. Перед присваиванием или перед вызовом формы.

//обнули обработчик Application.OnIdle := nil;


 
LinOS ©   (2004-01-15 11:32) [10]

Романов Р.В. ©
Можно подробнее и с примером.


 
Романов Р.В. ©   (2004-01-15 11:36) [11]

Перед вызовом LogonForm конечно


 
LinOS ©   (2004-01-15 11:45) [12]

Я так понял этот обработчик будет выполнен только после
OnCreate и OnShow главной формы.
Как сделать что бы до OnShow?


 
Романов Р.В. ©   (2004-01-15 11:50) [13]

Ты человечьим языкам объясни алгоритм работы программы. прям по пунктам.
1...
2...
3...
и т.д.


 
LinOS ©   (2004-01-15 12:27) [14]

Хочу приложени которое
1. во время запуска будет показывать заставку
2. После загрузки главной формы хочу осуществить присоединение к БД, т.е. открыть модально форму диалога подключения. По нажатии на Ok если соединение успешно, то передать управление главной форме иначе выдать сообщение об ошибке и остаться форме диалога подключения, при нажатии на Cancel - закрыть приложение.


 
Семен Сорокин ©   (2004-01-15 12:31) [15]

LinOS © (15.01.04 12:27) [14]
Как вариант показывай заставку вместе с модальной формой диалога подключения. И будет тебе счастье.


 
Романов Р.В. ©   (2004-01-15 12:34) [16]

см. Романов Р.В. © (15.01.04 08:46) [1]

Все компоненты доступа к данным вынеси на DataModule. Соответственно изменится код.
begin
Application.Initialize;
ShowSplash;
Application.CreateForm(TDataModule1, DataModule1);
if CheckPsaaword then
begin
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
end.


 
LinOS ©   (2004-01-15 12:52) [17]

Семен Сорокин ©
Как вариант показывай заставку вместе с модальной формой диалога подключения. И будет тебе счастье.

Я бы с удовольствием так сделел, если бы можно было кнопки жать и заполнять поля до того как Application.Run.

Романов Р.В. © (15.01.04 12:34) [16]

Все компоненты доступа к данным вынеси на DataModule. Соответственно изменится код.
begin
Application.Initialize;
ShowSplash;
Application.CreateForm(TDataModule1, DataModule1);
if CheckPsaaword then
begin
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
end.

Такой вариант не работает.


 
Романов Р.В. ©   (2004-01-15 12:54) [18]


> Такой вариант не работает.

Почиму?


 
Плохиш_   (2004-01-15 12:56) [19]

>LinOS © (15.01.04 12:52) [17]

> Я бы с удовольствием так сделел, если бы можно было кнопки
> жать и заполнять поля до того как Application.Run.

Чаво? Ты хоть бы попробовал перед тем как чушь пороть. Ей же больно.


 
LinOS ©   (2004-01-15 13:02) [20]

Плохиш_

А я и пробую всякие варианты, какие предлагаете.


 
LinOS ©   (2004-01-15 13:08) [21]

Романов Р.В. © (15.01.04 12:54) [18]
> Такой вариант не работает.

>> Почиму?
Не знаю. Моргнуло и закрылось все. Разбираюсь.


 
Романов Р.В. ©   (2004-01-15 13:13) [22]

Форму с паролем через ShowModal показываешь?


 
Yr2   (2004-01-15 13:42) [23]

to LinOS
...После загрузки главной формы хочу осуществить присоединение к БД, т.е. открыть модально форму диалога подключения...
Данную задачу я решал следующим способом (методом наоборот):
Что такое главная форма? - очевидно это картинка, меню, кнопки и т.п. на панели. Изначально устанавливаем в главной форме Enabled:=False (или выборочно отдельным элементам). Фокус в том, что сначала запускается не главная форма, а форма вашего окна диалога LogonForm, в конструкторе которого уже запускается главная форма, но не в модальном варианте, а в обычном, т.е.

procedure TLogonForm.FormCreate(Sender: TObject);
begin
FormMain:=TFormMain.Create(self);
FormMain.Show;
...
...
end;

далее производите обработку в своем диалоге как вам нужно и в случае успеха делаете главной форме Enabled:=True. Примечание: если дизэйблить не всю форму, а только частично, то удобно оставить в меню доступ, например к Help, чтобы пользователь при залогинивании мог почитать...



Страницы: 1 вся ветка

Текущий архив: 2004.01.26;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.015 c
8-83216
Fatkulin
2003-09-22 20:33
2004.01.26
Звук


1-83193
BJValentine
2004-01-14 16:39
2004.01.26
Память


14-83234
Vlad Oshin
2004-01-05 15:23
2004.01.26
Набираю, допустим, regedt32 или telnet, ругается - Не найден


3-83098
cRAker
2003-12-29 14:08
2004.01.26
Кодировки в Delphi foxpro


14-83244
DAC
2004-01-06 03:10
2004.01.26
Выскажите свое мнение!