Topic: [Решено] Автоввод login из формы входа в ComboBox на Form1
День добрый.
Столкнулся с такой проблемой:
1. есть стандартная форма входа через логирование пользователя
2. есть основная форма, содержащая 2 однотипных вкладки
3. хочу:
3.1 чтобы информация с поля логина формы входа после прохождения авторизации автоматически попадала в combobox на одной из вкладок основной формы
3.2 происходила автоматическая блокировка данного combobox от случайного редактирования
Собственно, проблема - не получается п. 3.1
Реализация - см. код скрипта + прилагаю проект
var
sUser: string = ''; idUser: integer;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////// вход в программу //////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
procedure frmLogin_OnShow (Sender: string; Action: string);
begin
if VarToStr( SQLExecute('SELECT count(id) FROM users WHERE admin=1;') ) = '0' then
begin
ShowMessage('Пользователя с правами Администратора не найдено, поэтому он будет создан автоматически, с логином admin и паролем admin');
SQLExecute('INSERT INTO users (login, password, admin) VALUES ("admin", "admin", 1);');
UpdateDatabase('users');
frmLogin.cbUser.dbItemID:= Last_Insert_id('users');
frmLogin.edLogin.Text:= 'admin';
end else
frmLogin.cbUser.dbItemID:= 1;
end;
// событие закрытия окна для авторизации
procedure frmLogin_OnClose (Sender: string; Action: string);
begin
// если пользотель не был определен, а пользователь закрыл окно авторизации, то и закрываем главную форму
if sUser='' then Form1.Close;
end;
// событие при нажатии на кнопку Вход
procedure frmLogin_bLogin_OnClick (Sender: string; var Cancel: boolean);
var
s: string;
begin
// делаем SQL запрос, для проверки, есть ли такой пользователь в базе
s := VarToStr( SQLExecute('SELECT count(id) FROM users WHERE (login = ''' + frmLogin.cbUser.Text + ''') AND (password = ''' + frmLogin.edLogin.Text + ''');') );
if s <> '0' then // если результат не равен нулю, значит пользователь есть с таким логином и паролем
begin
sUser := frmLogin.cbUser.Text; // запоминаем имя пользователя
idUser := frmLogin.cbUser.dbItemID; //запомнинаем id пользователя
// проверка прав администратора
s := VarToStr( SQLExecute('SELECT admin FROM users WHERE (login = ''' + sUser + ''');') );
if s='0' then
begin
//Form1.bDicts.Enabled := False; // запрещаем нажимать кнопку для создания других пользователей
//Form1.ButNewBook.Enabled := False;
//Form1.ButDelBook.Enabled := False;
//NewTask.BtTaskOk.Enabled := False;
//NewTask.BtSubTaskNew.Enabled := False;
//NewTask.BtEditSubTask.Enabled := False;
//NewTask.BtDelSubTask.Enabled := False;
end;
frmLogin.Close; // закрываем форму авторизации
end else MessageDlg('Неверный пароль', mtError, mbOk, 0); // сообщение если пароль неверный
end;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////// работа с Form1 //////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
procedure Form1_OnShow (Sender: string; Action: string);
begin
Form1.ComboBox21.dbItemID :=idUser; // автоматически присваивание юзера и фильтр на основе него
Form1.ComboBox21.Enabled := False; // блокировка юзера от возможности выбора другого
frmLogin.bLogin.Default := True; // необходимо, чтобы кнопка Button1 автоматически нажималась при нажатии на Enter в Edit1 или Edit2
frmLogin.edLogin.PasswordChar := '*';//Скрытие значения в строке пароля
frmLogin.ShowModal; // показываем окно для авторизации
end;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////// работа с формой NewUser ///////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////добавление нового User - защита от дублирования логина и пустышки на месте логина и пароля
procedure NewUser_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
// защита от пустых полей
if (NewUser.Edit1.Text='') OR (NewUser.Edit2.Text='') then
begin
ShowMessage('Заполните обязательные поля "Пользователь" и "Пароль"!');
Cancel := True; // отменяем действие кнопки
end else
// защита от дублирования поля
if StrToInt(VarToStr(SQLExecute ('SELECT count(*) from users WHERE login="' + NewUser.Edit1.Text + '"'))) > 0 then
begin
ShowMessage('Такой Пользователь уже есть!');
Cancel := True;
end;
end;
////////////////////// переключение прав доступа ///////////////////////////////////
procedure NewUser_CheckBox1_OnClick (Sender: string);
begin
NewUser.CheckBox2.Checked:= False;
end;
procedure NewUser_CheckBox2_OnClick (Sender: string);
begin
NewUser.CheckBox1.Checked:= False;
end;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
begin
end.