Форум: "Основная";
Текущий архив: 2004.01.26;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.011 c