![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Форма LogIn [D6, WinXP]
wyt © (2004-09-23 17:41:00)Как показать форму логина до появления Mainform?
Reals (2004-09-24 10:05:00) [1]А вот как у меня реализовано, работает без проблем:
program Prog;
uses
Forms,
Windows,
Controls,
uBizon in 'uBizon.pas' {frmMain},
uLogon in 'uLogon.pas' {frmLogon};
{$R *.res}
begin
try
frmLogon := TfrmLogon.Create(Application);
frmLogon.Update;
if frmLogon.ShowModal = mrOk then
begin
Application.Initialize;
Application.CreateForm(TfrmMain, frmMain);
end else
begin
frmLogon.Hide;
frmLogon.Free;
Halt(0);
end;
frmLogon.Hide;
finally
frmLogon.Free;
end;
Application.Run;
end.
П7 (2004-09-24 09:34:00) [2]Дык, можно вообще не криэйтить Майновую форму при старте проекта. Убрать соответствующие строки из файла проекта и всё. Криэйтишь ЛогинФорму, далее, если всё ОК, то ЛогинФорма криетит Майновую форму а сама прихлопывается. Иначе просто прихлопывается... (:
KADAN (2004-09-24 09:19:00) [3]три раза создавать и убивать форму???? думаете гут?
КаПиБаРа (2004-09-24 08:44:00) [4]Записывайте в аналы... :)
program Project1;
uses
Forms, Controls, windows,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {LoginForm};
{$R *.res}
// Проверка пароля при запуске.
// Функцию можно вынести в отдельный модуль,
// Тогда в файл проекта нужно будет добавить всего 1 строчку
// if not LogIn then Exit;
function LogIn(AttemptCount: Integer): Boolean;
var
n: Integer; // Счетчик показа формы
begin
Result := False;
n := AttemptCount;
// пока счетчик не равен 0 или не введен
// правильный пароль показываем форму
while (n > 0) and not Result do
// Для непонятливых создаем форму для ввода пароля
with TLoginForm.Create(nil) do
try
// и показываем ее
ShowModal;
if ModalResult = mrOk then
begin
// Проверка пароля введенного в Edit1 :)
Result := Edit1.Text = 'пароль';
Dec(n);
if not Result then
if (n > 0) then
begin
// Сообщаем пользователю о том что он неправильно ввел пароль
if MessageBox(0, 'Неправильно задан пароль'#13'Повторить ввод?',
'Внимание!', MB_YESNO or MB_ICONWARNING) = IDNO then
// Если он отказывается повторить ввод пароля - выход
Exit;
end
else
// Если пользователь не угадал пароль за отведенное число попыток
MessageBox(0, 'Неправильно задан пароль'#13 +
'Вы превысили лимит попыток ввода!',
'Внимание!', MB_OK or MB_ICONERROR);
end
else
// Выход при нажатии кнопки отмены
Exit;
finally
Free;
end;
end;
begin
// Если не залогинились выход из приложения
if not LogIn(3) then Exit;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
==================================
Нашедшего выход затаптывают первым
==================================
alless (2004-09-23 18:18:00) [5]2 wyt:
рекомендую Kuliba2000 там много интересного.
wyt (2004-09-23 18:15:00) [6]//Hаписать Application.ShowMainForm:=false в файле пpоекта.
Большое спасибо alless - то что нужно!!!
alless (2004-09-23 18:11:00) [7]Hаписать Application.ShowMainForm:=false в файле пpоекта.
DiamondShark (2004-09-23 18:09:00) [8]Фигню написал. Не обращать внимания.
DiamondShark (2004-09-23 18:08:00) [9]Login := TLogin.Create(Application);
if LoginOk then Application.Run;
wyt (2004-09-23 18:07:00) [10]Ну что? Никто никогда не делал диалог LogIn - ну очень нужно!!!
//Если я делаю так - то у меня возникает - при отмене логина непонятная для меня ошибка!!!
Я эту ошибку не смогу отследить!
Ну очень нужна помощь
wyt (2004-09-23 18:02:00) [11]Мне логин нужно вызвать в файле проекта!
А не в методах другой формы!
Fay (2004-09-23 18:00:00) [12]
> Так мне не подходит. Главная форма не должна креировать
> другую форму! А в автокриейте первой креироваться дожна
> только майн форма? LogIn еще нет :-(
Переведите, plz. Нифига не понятно. Особеннно 2-е предложение.
wyt (2004-09-23 17:58:00) [13]Так мне не подходит. Главная форма не должна креировать другую форму! А в автокриейте первой креироваться дожна только майн форма? LogIn еще нет :-(
wyt (2004-09-23 17:52:00) [14]Если я делаю так - то у меня возникает - при отмене логина непонятная для меня ошибка!!!
if not LoginOK then
Exit;
Application.Run;
Я перделал на
if not LoginOK then
Application.Terminate;
Эта ошибка вроде бы 0:-) пропала, но главная форма успевает появиться:-(
Fay (2004-09-23 17:49:00) [15]А ты вызови её в конструкторе главной формы.
wyt (2004-09-23 17:46:00) [16]Мне важно, что бы при отмене логина главная форма не появлялась.
делаю так:
Application.CreateForm(TLogin, Login);
if not LoginOK then
Application.Terminate;
Application.Run;
и шлавная форма появляется и исчезает(моггает)
как правильнее это реализовать?
Fay (2004-09-23 17:42:00) [17].Show;