Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Форма 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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо