powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Окно авторизации Delphi
25 сообщений из 43, страница 1 из 2
Окно авторизации Delphi
    #39485249
valli_vasia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет! Помогите мне с одной проблемой) Суть такая, я создал программу при запуске которой открывается окно авторизации, после прохождения авторизации открывается главное окно программы. Так вот проблема в том, что окно авторизации не закрывается после открытия главного окна, а продолжает висеть пока его не закроешь с кнопки Выход, но если его закрыть с кнопки Выход то закрывается вся программа( А мне надо чтобы работало так, запустили программу открылось окно авторизации, прошли авторизацию, закрылось окно авторизации потом открылось главное окно программы. Лазил везде по форумам пытался разобраться но нечего так и не нашел( Помогите люди добрые пожалуйста!

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

Код Project1 (Код создания проекта)
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
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 (Дата Модуль)
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
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 (Окно авторизации)
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
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('&#205;&#229;&#226;&#229;&#240;&#237;&#251;&#233; &#239;&#224;&#240;&#238;&#235;&#252;!')
   else
    Form3.Show;
end;

end.



Ну и Код Unit3 (Главное окно программы оно пока пустое)
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
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. Подскажите где и как править код чтобы все получилось. Заранее очень благодарен за ответ!
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485250
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
begin
  Application.Initialize;
  Application.CreateForm(TDataModule1, DataModule1);

  { форма авторизации }
  Application.CreateForm(TForm2, Form2);
  if Form2.ShowModal = idOK then
   begin
       { если авторизовались, создаём и открываем главную форму }
       Application.CreateForm(TForm3, Form3);
       Application.Run;
   end ;
end.
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485253
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
begin
  Application.Initialize;
  Application.CreateForm(TDataModule1, DataModule1);

  { форма авторизации }
  Application.CreateForm(TForm2, Form2);
  if Form2.ShowModal = idOK then
   begin
       { если авторизовались, создаём и открываем главную форму }
       Application.CreateForm(TForm3, Form3);
       Application.Run;
   end ;
end.



Немножко поправлю,
Application.Run;
лучше вынести вниз за условие.
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485255
valli_vasia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое за такой быстрый ответ!)
Добавил ваш код, но при тестовом запуске программы из Delphi показывает ошибку

[Error] Project1.dpr(15): Undeclared identifier: 'idOK'

что я не так сделал?
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485256
valli_vasia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я новичок в программировании не пинайте сильно если что)
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485257
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
schidefecator
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
begin
  Application.Initialize;
  Application.CreateForm(TDataModule1, DataModule1);

  { форма авторизации }
  Application.CreateForm(TForm2, Form2);
  if Form2.ShowModal = idOK then
   begin
       { если авторизовались, создаём и открываем главную форму }
       Application.CreateForm(TForm3, Form3);
       Application.Run;
   end ;
end.




Немножко поправлю,
Application.Run;
лучше вынести вниз за условие.

Зачем ? Нет авторизации - выход из программы.
Всё.
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485258
valli_vasia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал в Button1 поставить ModalResult в mrOK но ошибка [Error] Project1.dpr(15): Undeclared identifier: 'idOK' все равно осталась(
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485264
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
valli_vasiaПопробовал в Button1 поставить ModalResult в mrOK но ошибка [Error] Project1.dpr(15): Undeclared identifier: 'idOK' все равно осталась(

в Uses надо прописать модуль Controls
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485265
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
тьфу, не Controls, а Windows
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485272
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

разве не mrOk?
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485273
valli_vasia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а можно поподробнее про Uses и Windows? чет я не совсем понял что куда сори)
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485276
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
wadmandefecator,

разве не mrOk?
можно и mrOK, можно и idOK, поскольку mrOK = idOK в файле Controls.pas
Мне привычнее idOK
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485277
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
valli_vasiaа можно поподробнее про Uses и Windows? чет я не совсем понял что куда сори)
читать что-нибудь про Паскаль не пробовал ?
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485279
valli_vasia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в Uses на форме авторизации? как прописать модуль Windows и какой?
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485280
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
valli_vasiaв Uses на форме авторизации? как прописать модуль Windows и какой?
ладно, умываю руки, тут всё бесполезно.
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485286
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorschiпропущено...


Немножко поправлю,
Application.Run;
лучше вынести вниз за условие.

Зачем ? Нет авторизации - выход из программы.
Всё.

В свое время сталкивался с тем, что компоненты (TClientDataSet, если память не изменяет) созданные на автоматически создаваемых датамодулях, при их разрушении в отсутствии Application.Run выдавали AV. Дело было давно, деталей не помню, но с тех пор стараюсь Application.Run вызывать при любых условиях.
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485330
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valli_vasiaв Uses на форме авторизации? как прописать модуль Windows и какой?
Код: pascal
1.
2.
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs;


вот так выглядят подключенные модули. Сам смотри что и куда надо добавить.
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485336
valli_vasia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо разобрался.

Сейчас не могу сообразить как сделать проверку на пользователей. То есть когда пользователь авторизуется то на Label1 в форме Form3 надо показывать фамилию того кто авторизовался. Создана база access там таблица и в ней четыре столбца 1. (Номер пользователя по порядку) 2. login (Логин) 3. password (Пароль) 4. np (Ф.И.О пользователя)

Вот код:

Код: pascal
1.
2.
3.
  if Edit1.Text<>'admin' then
     begin
   Form3.Label1.Caption:=DataModule1.ADOTable1.FieldByName('np').AsString;



Он смотрит что пользователь ввел в поле Edit1, проверяет что ввели не admin и тогда прописывает в Label1 фамилию из столбца np базы. Но проблема кода в том что он берет только одну фамилию независимо кто зашел, то есть не понимает какой конкретно пользователь авторизовался. В общем не могу сообразить как изменить этот код чтобы программа понимала что например зашел пользователь под номером 3 (или по логину) и прописала в Label1 его фамилию из столбца np . Помогите разобраться пожалуйста. Заранее благодарен!
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485339
Жышы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valli_vasiaВсем спасибо разобрался.

Сейчас не могу сообразить как сделать проверку на пользователей. То есть когда пользователь авторизуется то на Label1 в форме Form3 надо показывать фамилию того кто авторизовался. Создана база access там таблица и в ней четыре столбца 1. (Номер пользователя по порядку) 2. login (Логин) 3. password (Пароль) 4. np (Ф.И.О пользователя)

Вот код:

Код: pascal
1.
2.
3.
  if Edit1.Text<>'admin' then
     begin
   Form3.Label1.Caption:=DataModule1.ADOTable1.FieldByName('np').AsString;



Он смотрит что пользователь ввел в поле Edit1, проверяет что ввели не admin и тогда прописывает в Label1 фамилию из столбца np базы. Но проблема кода в том что он берет только одну фамилию независимо кто зашел, то есть не понимает какой конкретно пользователь авторизовался. В общем не могу сообразить как изменить этот код чтобы программа понимала что например зашел пользователь под номером 3 (или по логину) и прописала в Label1 его фамилию из столбца np . Помогите разобраться пожалуйста. Заранее благодарен!

Ну какие еще Label1? Если форма сразу же закрывается.
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485340
valli_vasia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите где и что не так?
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485342
Жышы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valli_vasiaПодскажите где и что не так?
Лето, отдыхай, зачем тебе сейчас Паскаль?
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485354
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valli_vasia> Подскажите где и что не так?

Что именно подсказать-то? Много чего не так.
Во-первых, проверять надо не запросом типа
SELECT Password WHERE login = Edit1.Text
и далее сравнением пароля с Edit2.Text, а
select 1 where login = :login and password = :psw

Во-вторых, твоё "не понимает какой конкретно
пользователь авторизовался" не очень понятно
с т.з. кода, т.к. логин вводится и проверяется
вроде бы правильно (убедись отладчиком).

В общем, не вываливай все вопросы кучей,
иначе мало кому захочется отвечать и помогать,
лучше спрашивай по одному.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485378
valli_vasia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну у меня вопрос один как этот код доработать чтобы он писал в Lebel1 фамилию того кто авторизовался.
Есть таблица там четыре столбца:
login password np 1 user1 user1 Иванов И.И. 2 user2 user2 Петров П.П. 3 user3 user3 Сидоров С.С.

Авторизация проходит нормально то есть по логину и паролю входит нормально, но код ниже выдает фамилию Иванов и не важно кем я зайду хоть 1 хоть 2 или 3 пользователем все равно в Lebel1 пишется Иванов. Вот и не могу разобраться как код этот переделать чтобы фамилия писалась правильно к каждому пользователю. Помогите пожалуйста.


Код: pascal
1.
2.
3.
  if Edit1.Text<>'admin' then
     begin
   Form3.Label1.Caption:=DataModule1.ADOTable1.FieldByName('np').AsString;
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485410
s77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s77
Гость
ADOQuery1.FieldByName('np').Value ?

ну и запрос надо select * from ...
...
Рейтинг: 0 / 0
Окно авторизации Delphi
    #39485412
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
s77ADOQuery1.FieldByName('np').Value ?

ну и запрос надо select * from ...

* не надо
...
Рейтинг: 0 / 0
25 сообщений из 43, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Окно авторизации Delphi
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]