Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
7-83285
PavelOKES
2003-11-10 08:16
2004.01.26
Сервис w2k


6-83232
Alec
2003-11-22 00:52
2004.01.26
Как прогаммно узнать ip адресс компьютера в интернете ?


14-83272
Makhanev A.S.
2004-01-04 14:38
2004.01.26
Утилитка для поиска класса окна по наведению мыши...


1-83172
Developerr
2004-01-14 16:18
2004.01.26
TitleButtons в RxDBGrid


14-83281
ИМХО
2004-01-05 11:11
2004.01.26
Пл поводу QuattroPro





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