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

Последовательность моих действий при создании проекта программы:
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
09.07.2017, 10:11:01
    #39485250
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окно авторизации Delphi
Код: 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
09.07.2017, 10:27:46
    #39485253
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окно авторизации Delphi
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
09.07.2017, 10:30:12
    #39485255
valli_vasia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окно авторизации Delphi
Спасибо большое за такой быстрый ответ!)
Добавил ваш код, но при тестовом запуске программы из Delphi показывает ошибку

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

что я не так сделал?
...
Рейтинг: 0 / 0
09.07.2017, 10:32:50
    #39485256
valli_vasia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окно авторизации Delphi
Я новичок в программировании не пинайте сильно если что)
...
Рейтинг: 0 / 0
09.07.2017, 10:33:23
    #39485257
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окно авторизации Delphi
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
09.07.2017, 10:43:14
    #39485258
valli_vasia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окно авторизации Delphi
Попробовал в Button1 поставить ModalResult в mrOK но ошибка [Error] Project1.dpr(15): Undeclared identifier: 'idOK' все равно осталась(
...
Рейтинг: 0 / 0
09.07.2017, 11:14:28
    #39485264
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окно авторизации Delphi
valli_vasiaПопробовал в Button1 поставить ModalResult в mrOK но ошибка [Error] Project1.dpr(15): Undeclared identifier: 'idOK' все равно осталась(

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

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

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


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

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

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


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

Сейчас не могу сообразить как сделать проверку на пользователей. То есть когда пользователь авторизуется то на 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
09.07.2017, 16:49:07
    #39485339
Жышы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окно авторизации Delphi
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
09.07.2017, 16:56:16
    #39485340
valli_vasia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окно авторизации Delphi
Подскажите где и что не так?
...
Рейтинг: 0 / 0
09.07.2017, 16:58:05
    #39485342
Жышы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окно авторизации Delphi
valli_vasiaПодскажите где и что не так?
Лето, отдыхай, зачем тебе сейчас Паскаль?
...
Рейтинг: 0 / 0
09.07.2017, 17:41:25
    #39485354
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окно авторизации Delphi
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
09.07.2017, 20:18:53
    #39485378
valli_vasia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окно авторизации Delphi
Ну у меня вопрос один как этот код доработать чтобы он писал в 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
09.07.2017, 22:33:57
    #39485410
s77
s77
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окно авторизации Delphi
ADOQuery1.FieldByName('np').Value ?

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

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

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


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