Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.07.2017, 10:23
valli_vasia valli_vasia вне форума
Прохожий
 
Регистрация: 09.07.2017
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Окно авторизации в Delphi

Всем привет! Помогите мне с одной проблемой) Суть такая, я создал программу при запуске которой открывается окно авторизации, после прохождения авторизации открывается главное окно программы. Так вот проблема в том, что окно авторизации не закрывается после открытия главного окна, а продолжает висеть пока его не закроешь с кнопки Выход, но если его закрыть с кнопки Выход то закрывается вся программа( А мне надо чтобы работало так, запустили программу открылось окно авторизации, прошли авторизацию, закрылось окно авторизации потом открылось главное окно программы. Лазил везде по форумам пытался разобраться но нечего так и не нашел( Помогите люди добрые пожалуйста!

Последовательность моих действий при создании проекта программы:
1. Создал Дата Модуль (DataModule1) в него поместил ADOConnection1 и ADOQuery1 подключил туда базу данных (bd.mdb) с логинами и паролями.
2. Создал Форму (Form2) это форма авторизации на нее поместил два Edit1, Edit2 и две Button1,Button2.
3. Создал Форму (Form3) это форма главного окна программы она пока пустая.

Код Project1 (Код создания проекта):

Код:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {DataModule1: TDataModule},
  Unit2 in 'Unit2.pas' {Form2},
  Unit3 in 'Unit3.pas' {Form3};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TDataModule1, DataModule1);
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm3, Form3);
  Application.Run;
end.



Код Unit1 (Дата Модуль):

Код:
unit Unit1;

interface

uses
  SysUtils, Classes, DB, ADODB;

type
  TDataModule1 = class(TDataModule)
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DataModule1: TDataModule1;

implementation

{$R *.dfm}

end.



Код Unit2 (Окно авторизации):

Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

uses Unit1, Unit3;

{$R *.dfm}

procedure TForm2.Button2Click(Sender: TObject);
begin
Close;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
 DataModule1.ADOQuery1.SQL.Clear;
 DataModule1.ADOQuery1.SQL.Add('SELECT Password FROM Users WHERE login='+#39+Edit1.Text+#39);
 DataModule1.ADOQuery1.Open;
  if DataModule1.ADOQuery1.IsEmpty
   then
    ShowMessage('Ïîëüçîâàòåëü '+Edit1.Text+' íå íàéäåí!')
   else
  if DataModule1.ADOQuery1.FieldByName('Password').Value <> Edit2.Text
   then
    ShowMessage('Íåâåðíûé ïàðîëü!')
   else
    Form3.Show;
end;

end.



Ну и Код Unit3 (Главное окно программы оно пока пустое):

Код:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm3 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

end.




Создаю проект в Delphi 7. Подскажите где и как править код чтобы все получилось. Заранее очень благодарен за ответ! Не пинайте сильно я новичок в программировании)
Ответить с цитированием
  #2  
Старый 09.07.2017, 21:10
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,057
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Это вам, батенька, надо ручками, ручками.
1. Выкинь свое окно авторизации из автосоздания. Далее в файле проекта это должно выглядеть примерно так:
Код:
program Project1;
 
uses
  Forms,
  Unit1 in 'Unit1.pas' {DataModule1: TDataModule},
  Unit2 in 'Unit2.pas' {Form2},
  Unit3 in 'Unit3.pas' {Form3};
 
{$R *.res}
 
begin
  Application.Initialize;
  Application.CreateForm(TForm3, Form3);
  Application.CreateForm(TDataModule1, DataModule1);

  Form2 := TForm2.Create(Nil);
  If Not Form2.Authorized Then Halt(0);
  Form2.Free;

  Application.Run;
end.

Теперь пишем фнукицю Authorized в форме логина (ну и правим тот код, что есть):
Код:
function TForm2.Authorized : Boolean;
begin
  Result := ShowModal = mrOK;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
  ModalResult := mrCancel;
end;
 
procedure TForm2.Button1Click(Sender: TObject);
begin
 DataModule1.ADOQuery1.SQL.Clear;
 DataModule1.ADOQuery1.SQL.Add('SELECT Password FROM Users WHERE login='+#39+Edit1.Text+#39);
 DataModule1.ADOQuery1.Open;
  if DataModule1.ADOQuery1.IsEmpty
   then
    ShowMessage('Ïîëüçîâàòåëü '+Edit1.Text+' íå íàéäåí!')
   else
  if DataModule1.ADOQuery1.FieldByName('Password').Value <> Edit2.Text
   then
    ModalResult := mrCancel
   else
    ModalResult := mrOK
end;

Вроде, так.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter