Re: Авторизация при запуске программы. Права пользователей.

спс

Re: Авторизация при запуске программы. Права пользователей.

У вас ошибка в примере с проектом. Админ имеет все права-реализовано. User не админ, но имеет права админа на чекбокс- не реализовано. user2- не имеет ни прав админа, ни прав управлять чекбоксом.
У вас при включенной галочке у  User не может управлять чекбоксом в записи админа. Надо чтобы User имел права админа на чекбокс, и мог управлять им в любой записи. Жду вашего ответа. Заранее спс.

Re: Авторизация при запуске программы. Права пользователей.

smile

Re: Авторизация при запуске программы. Права пользователей.

???

Re: Авторизация при запуске программы. Права пользователей.

До меня что-то очередь как-то не доходит

Re: Авторизация при запуске программы. Права пользователей.

Раз уже начали доделайте исключения чек бокса из администрирования. Я думаю и др будет интересно. Это-же останется.

Re: Авторизация при запуске программы. Права пользователей.

Я смотрю вы всем отвечаете кроме меня.

33 (edited by Игоревич 2016-06-13 11:02:04)

Re: Авторизация при запуске программы. Права пользователей.

Есть еще вопросик по правам пользователя. Как сделать чтобы после нажатия на чек- бокс пользовательне мог редактировать  и свои записи . Заранее спс. Жду с нетерпением вашего ответа.

Re: Авторизация при запуске программы. Права пользователей.

Игоревич wrote:

Есть еще вопросик по правам пользователя. Как сделать чтобы после нажатия на чек- бокс пользовательне мог редактировать  и свои записи . Заранее спс. Жду с нетерпением вашего ответа.

Пожалуйста, формулируйте вопрос полностью.

Dmitry.

Re: Авторизация при запуске программы. Права пользователей.

Сейчас у меня каждый пользователь может редактировать только свои записи, кроме админа (админ может все). Нужно чтобы после нажатия чек бокса и сохранения, обычный пользователь (который может редактировать только свои записи) не мог их редактировать. те есть оперативный журнал, после окончания смены, пользователь который заполнял этот журнал в течении смены, допустим с 8,00 до 16,00 за этот день после сдачи смены не мог их изменить. Но только за этот день и за эту смену, тк он ее уже сдал.

.

Re: Авторизация при запуске программы. Права пользователей.

Игоревич
К сожалению не могу дать простого ответа, необходимо изучать проект и как организована работа со сменами, чтобы что то посоветовать, но это уже выходит за рамки поддержки, я могу помочь только с конкретными вопросами.

Dmitry.

37 (edited by Игоревич 2016-06-13 18:52:39)

Re: Авторизация при запуске программы. Права пользователей.

Я постараюсь чуть позже более понятно разьяснить на вашем примере.

Re: Авторизация при запуске программы. Права пользователей.

Подскажите пож как срыть меню (Инструменты) в программе, чтобы они видны были только администратору. Заранее спс за ответ.

Re: Авторизация при запуске программы. Права пользователей.

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

Re: Авторизация при запуске программы. Права пользователей.

Но все же задача стоит срыть от юзера и показать админу.

Re: Авторизация при запуске программы. Права пользователей.

Игоревич wrote:

Подскажите пож как срыть меню (Инструменты) в программе, чтобы они видны были только администратору. Заранее спс за ответ.

Как скрыть меню, можно посмотреть здесь
http://myvisualdatabase.com/forum/viewtopic.php?id=1091


Но чтобы дать конкретный скрипт для вашего случая, необходимо видеть скрипт проекта.

Dmitry.

Re: Авторизация при запуске программы. Права пользователей.

 var
   sUser: string = '';
   idUser: integer;
   isAdmin: boolean = False;
   isCheckBox: boolean = False;
   sHello: string;
  /// BAR CHART //////

{== BAR CHART ===========================================================================================}

{== BAR CHART ===========================================================================================}



procedure formIzm_CheckBox1_OnKeyUp (Sender: string; var Key: Word; Shift, Alt, Ctrl: boolean);
begin
     if (isCheckBox) and (formIzm.bOK.dbGeneralTableId>0) then
         SQLExecute('UPDATE TabOtkaz SET StatusOtkaza = ' + formIzm.CheckBox1.sqlValue + ' WHERE id = '+IntToStr(formIzm.bOK.dbGeneralTableId));
end;

procedure formIzm_CheckBox1_OnMouseUp (Sender: string; MouseLeft, MouseRight, MouseMiddle: boolean; Shift, Alt, Ctrl: boolean; X, Y: Integer);
begin
     if (isCheckBox) and (formIzm.bOK.dbGeneralTableId>0) then
         SQLExecute('UPDATE TabOtkaz SET StatusOtkaza = ' + formIzm.CheckBox1.sqlValue + ' WHERE id = '+IntToStr(formIzm.bOK.dbGeneralTableId));
end;


procedure frmLogin_bLogin_OnClick (Sender: string; var Cancel: boolean);
var
   s: string;
begin
     // SQL-запрос на регистрацию пользователя и пароль
     s := SQLExecute('SELECT count(id) FROM users WHERE (id = ''' + IntToStr(frmLogin.cbLogin.dbItemID) + ''') AND (password = ''' + frmLogin.edPassword.Text + ''');');

     // SQL-запрос найден логин и пароль
     if (s <> '0') and (s<>'') then
     begin
          sUser := frmLogin.cbLogin.Text; // запомнить имя пользователя
          idUser := frmLogin.cbLogin.dbItemID; // запомнить идентификатор пользователя в базе


          // Administrator?
          if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.bUsers.Visible:=False;
          if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button5.Visible:=False;
          if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button1.Visible:=False;
          if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button4.Visible:=False;
          if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button6.Visible:=False;
          if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.bDelete.Visible:=False;

           // Can change CheckBox?
          if SQLExecute ('SELECT CheckBox FROM users WHERE id = '+IntToStr(idUser)) = '1' then isCheckBox := True;

          FormGlavn.Caption := 'User: ' + sUser;
          frmLogin.Close; // Закрыть главную форму
     end else MessageDlg('Некорректный пароль', mtError, mbOk, 0); // сообщение если неверный пароль

end;


procedure SavePersonal_OnShow (Sender: string; Action: string);
begin
    if Action = 'NewRecord' then SavePersonal.ComboBox1.dbItemID := idUser ;
end;

// мероприятия закрытия окна для входа
procedure frmLogin_OnClose (Sender: string; Action: string);
begin
     // если пользователь не определен, и Пользователь закрывает окно входа в систему, закройте главную форму
     if sUser='' then FormGlavn.Close;
end;


procedure formIzm_OnShow (Sender: string; Action: string);
begin
begin
    if Action = 'NewRecord' then formIzm.cbUser.dbItemID := idUser ;
end;
// удаление двойного клика по подчиненной таблице
begin
   FormGlavn.TableGrid2.dbPopupMenu.Items[0].Enabled:= False;
end;

end;


// защитить от удаления
procedure FormGlavn_bDelete_OnClick (Sender: string; var Cancel: boolean);
var
    sIdUser: string;
begin
    if isAdmin then Exit;

    sIdUser:=SQLExecute('SELECT id_users FROM TabOtkaz WHERE id='+IntToStr(FormGlavn.TableGrid2.dbItemID));
    if sIdUser<>IntToStr(idUser) then
    begin
        Cancel := True;
        ShowMessage('У вас нет разрешения удалять записи, которые не принадлежат вам.');
    end;
end;

// защитить от редактирования
procedure formIzm_bOK_OnClick (Sender: string; var Cancel: boolean);
begin
    if isAdmin then Exit;

    if idUser<>formIzm.cbUser.dbItemID then
    begin
        Cancel := True;
        ShowMessage('У вас нет разрешения редактировать записи, которые не принадлежат вам.');
    end;
end;



procedure FormGlavn_OnShow (Sender: string; Action: string);
begin
begin
     frmLogin.edPassword.PasswordChar := '*';
     frmLogin.ShowModal; // Форма для входа
     FormGlavn.mniAbout.OnClick := @MenuClickAbout;
     
end;
// удаление двойного клика по главной таблице
begin
   FormGlavn.TableGrid2.dbPopupMenu.Items[0].Enabled:= False;
end;

{== BAR CHART ===========================================================================================}

end;

procedure MenuClickAbout (Sender: string); // click in About menu item
begin
     frmAbout.ShowModal;
end;

procedure FormGlavn_TableGrid2_OnCellClick (Sender: string; ACol, ARow: Integer);
begin
  zapolnenie();
end;

procedure FormGlavn_TableGrid2_OnKeyUp (Sender: string; var Key: Word; Shift, Alt, Ctrl: boolean);
begin
   zapolnenie();
end;

procedure   zapolnenie ();
var  
 idS : string ;
begin
 idS := inttostr(FormGlavn.TableGrid2.dbItemID) ;
 FormGlavn.Obekt.text := SQLExecute('SELECT ob_name FROM tabobekt WHERE id =(SELECT id_tabobekt FROM tabotkaz WHERE id = '+idS+')' ) ;
 FormGlavn.Edit2.Text := SQLExecute('SELECT Name_Uzel FROM TabUselOborud WHERE id =(SELECT id_TabUselOborud FROM tabotkaz WHERE id = '+idS+')' ) ;
 FormGlavn.VneshProyavlOtkaza.Text := SQLExecute('SELECT Proyav_name FROM TabProyavlen WHERE id =(SELECT id_TabProyavlen FROM tabotkaz WHERE id = '+idS+')' ) ;
 FormGlavn.LitsoObnaruj.Text := SQLExecute('SELECT Obnarug_name FROM TabObnarug WHERE id =(SELECT id_TabObnarug FROM tabotkaz WHERE id = '+idS+')' ) ;
 FormGlavn.MetodUstraneniya.Text := SQLExecute('SELECT Metod_name FROM TabMetod WHERE id =(SELECT id_TabMetod FROM tabotkaz WHERE id = '+idS+')' ) ;
 FormGlavn.UsloviyaObnaruj.Text :=  SQLExecute('SELECT Usl_name FROM TabUslovia WHERE id =(SELECT id_TabUslovia FROM tabotkaz WHERE id = '+idS+')' ) ;
 FormGlavn.VidOborudovaniya.Text := SQLExecute('SELECT Vid_name FROM TabVid WHERE id =(SELECT id_TabVid FROM tabotkaz WHERE id = '+idS+')' ) ;
 FormGlavn.DefektNomer.Text := SQLExecute('SELECT DEF№ FROM tabotkaz WHERE id = '+idS ) ;
 FormGlavn.Edit4.Text := SQLExecute('SELECT ZAPAS FROM tabotkaz WHERE id = '+idS ) ;
 FormGlavn.Komentarii.Text := SQLExecute('SELECT Primechanie FROM tabotkaz WHERE id = '+idS ) ;
 FormGlavn.Edit3.Text := SQLExecute('SELECT OtcLico FROM tabotkaz WHERE id = '+idS ) ;

end;

// открытие файла руководство пользователя

procedure FormGlavn_Button3_OnClick (Sender: string; var Cancel: boolean);

begin

    OpenFile(ExtractFilePath(Application.ExeName) +'HelpR.chm');

end;

// нажатие скрытой кнопки

procedure FormGlavn_Button10_OnClick (Sender: string; var Cancel: boolean);

begin

   FormGlavn.Button10.Click

 end;

 // дубликат таблицы

      procedure FormGlavn_Button2_OnClick (Sender: string; var Cancel: boolean);
begin
    if FormGlavn.TableGrid2.dbItemID <> -1 then
    begin
        frmPersons.TableGrid1.dbFilter := 'id_TabOtkaz='+FormGlavn.TableGrid2.sqlValue;
        frmPersons.TableGrid1.dbUpdate;
    end else
    begin
        frmPersons.TableGrid1.dbFilter := '';
        frmPersons.TableGrid1.dbUpdate;
    end;
    // отключенная кнопка пошаговые действия при не выделенной строке в таблице
    begin
    if FormGlavn.TableGrid2.SelectedRow = -1 then Cancel := True;
end;
end;



  // Окрашивание строк в главной таблицы
  
procedure FormGlavn_TableGrid2_OnChange (Sender: string);
var
    i,c,f,r: integer;
begin
    c := FormGlavn.TableGrid2.RowCount - 1;
    f := FormGlavn.TableGrid2.Columns.Count - 1;
  for i := 0 to c do
    begin   
      if FormGlavn.TableGrid2.Cells[0,i]='Нет'
          THEN
            for r := 0 to f do 
               FormGlavn.TableGrid2.Cell[r,i].Color := $008080FF; // закрашивание всей строки
    end;

end;


       // администрирование подчиненной таблицы

       // защитить от редактирования подчиненной таблицы



procedure formIzm_Button2_OnClick (Sender: string; var Cancel: boolean);
var
    sIdUser: string;
begin
    if isAdmin then Exit;

    sIdUser:=SQLExecute('SELECT id_users FROM TabDeystvPerson WHERE id='+IntToStr(formIzm.TableGrid1.dbItemID));
    if sIdUser<>IntToStr(idUser) then
    begin
        Cancel := True;      
        ShowMessage('У вас нет разрешения редактировать записи, которые не принадлежат вам.');
    end;
end;

     // защитить от удаления подчиненной таблицы
procedure formIzm_Button3_OnClick (Sender: string; var Cancel: boolean);
var
    sIdUser: string;
begin
    if isAdmin then Exit;

    sIdUser:=SQLExecute('SELECT id_users FROM TabDeystvPerson WHERE id='+IntToStr(formIzm.TableGrid1.dbItemID));
    if sIdUser<>IntToStr(idUser) then
    begin
        Cancel := True;
        ShowMessage('У вас нет разрешения удалять записи, которые не принадлежат вам.');
    end;
end;





begin
  //  Начала проверьте, есть ли пользователь, администратор базы данных
  // если нет, создать учетную запись администратора с именем пользователя admin и паролем admin
     if SQLExecute('SELECT count(id) FROM users;') = '0' then
     begin
         SQLExecute('INSERT INTO users (login, password, admin) VALUES ("admin", "admin", 1);');
         frmLogin.cbLogin.dbItemID:=1;
         frmLogin.edPassword.Text := 'admin';
     end;
     frmLogin.Button1.Default := True;
     formIzm.cbUser.Enabled:=false;

end.
 var
   sUser: string = '';
   idUser: integer;
   isAdmin: boolean = False;
   isCheckBox: boolean = False;
   sHello: string;
  /// BAR CHART //////

{== BAR CHART ===========================================================================================}

{== BAR CHART ===========================================================================================}



procedure formIzm_CheckBox1_OnKeyUp (Sender: string; var Key: Word; Shift, Alt, Ctrl: boolean);
begin
     if (isCheckBox) and (formIzm.bOK.dbGeneralTableId>0) then
         SQLExecute('UPDATE TabOtkaz SET StatusOtkaza = ' + formIzm.CheckBox1.sqlValue + ' WHERE id = '+IntToStr(formIzm.bOK.dbGeneralTableId));
end;

procedure formIzm_CheckBox1_OnMouseUp (Sender: string; MouseLeft, MouseRight, MouseMiddle: boolean; Shift, Alt, Ctrl: boolean; X, Y: Integer);
begin
     if (isCheckBox) and (formIzm.bOK.dbGeneralTableId>0) then
         SQLExecute('UPDATE TabOtkaz SET StatusOtkaza = ' + formIzm.CheckBox1.sqlValue + ' WHERE id = '+IntToStr(formIzm.bOK.dbGeneralTableId));
end;


procedure frmLogin_bLogin_OnClick (Sender: string; var Cancel: boolean);
var
   s: string;
begin
     // SQL-запрос на регистрацию пользователя и пароль
     s := SQLExecute('SELECT count(id) FROM users WHERE (id = ''' + IntToStr(frmLogin.cbLogin.dbItemID) + ''') AND (password = ''' + frmLogin.edPassword.Text + ''');');

     // SQL-запрос найден логин и пароль
     if (s <> '0') and (s<>'') then
     begin
          sUser := frmLogin.cbLogin.Text; // запомнить имя пользователя
          idUser := frmLogin.cbLogin.dbItemID; // запомнить идентификатор пользователя в базе


          // Administrator?
          if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.bUsers.Visible:=False;
          if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button5.Visible:=False;
          if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button1.Visible:=False;
          if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button4.Visible:=False;
          if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button6.Visible:=False;
          if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.bDelete.Visible:=False;

           // Can change CheckBox?
          if SQLExecute ('SELECT CheckBox FROM users WHERE id = '+IntToStr(idUser)) = '1' then isCheckBox := True;

          FormGlavn.Caption := 'User: ' + sUser;
          frmLogin.Close; // Закрыть главную форму
     end else MessageDlg('Некорректный пароль', mtError, mbOk, 0); // сообщение если неверный пароль

end;


procedure SavePersonal_OnShow (Sender: string; Action: string);
begin
    if Action = 'NewRecord' then SavePersonal.ComboBox1.dbItemID := idUser ;
end;

// мероприятия закрытия окна для входа
procedure frmLogin_OnClose (Sender: string; Action: string);
begin
     // если пользователь не определен, и Пользователь закрывает окно входа в систему, закройте главную форму
     if sUser='' then FormGlavn.Close;
end;


procedure formIzm_OnShow (Sender: string; Action: string);
begin
begin
    if Action = 'NewRecord' then formIzm.cbUser.dbItemID := idUser ;
end;
// удаление двойного клика по подчиненной таблице
begin
   FormGlavn.TableGrid2.dbPopupMenu.Items[0].Enabled:= False;
end;

end;


// защитить от удаления
procedure FormGlavn_bDelete_OnClick (Sender: string; var Cancel: boolean);
var
    sIdUser: string;
begin
    if isAdmin then Exit;

    sIdUser:=SQLExecute('SELECT id_users FROM TabOtkaz WHERE id='+IntToStr(FormGlavn.TableGrid2.dbItemID));
    if sIdUser<>IntToStr(idUser) then
    begin
        Cancel := True;
        ShowMessage('У вас нет разрешения удалять записи, которые не принадлежат вам.');
    end;
end;

// защитить от редактирования
procedure formIzm_bOK_OnClick (Sender: string; var Cancel: boolean);
begin
    if isAdmin then Exit;

    if idUser<>formIzm.cbUser.dbItemID then
    begin
        Cancel := True;
        ShowMessage('У вас нет разрешения редактировать записи, которые не принадлежат вам.');
    end;
end;



procedure FormGlavn_OnShow (Sender: string; Action: string);
begin
begin
     frmLogin.edPassword.PasswordChar := '*';
     frmLogin.ShowModal; // Форма для входа
     FormGlavn.mniAbout.OnClick := @MenuClickAbout;
     
end;
// удаление двойного клика по главной таблице
begin
   FormGlavn.TableGrid2.dbPopupMenu.Items[0].Enabled:= False;
end;

{== BAR CHART ===========================================================================================}

end;

procedure MenuClickAbout (Sender: string); // click in About menu item
begin
     frmAbout.ShowModal;
end;

procedure FormGlavn_TableGrid2_OnCellClick (Sender: string; ACol, ARow: Integer);
begin
  zapolnenie();
end;

procedure FormGlavn_TableGrid2_OnKeyUp (Sender: string; var Key: Word; Shift, Alt, Ctrl: boolean);
begin
   zapolnenie();
end;

procedure   zapolnenie ();
var  
 idS : string ;
begin
 idS := inttostr(FormGlavn.TableGrid2.dbItemID) ;
 FormGlavn.Obekt.text := SQLExecute('SELECT ob_name FROM tabobekt WHERE id =(SELECT id_tabobekt FROM tabotkaz WHERE id = '+idS+')' ) ;
 FormGlavn.Edit2.Text := SQLExecute('SELECT Name_Uzel FROM TabUselOborud WHERE id =(SELECT id_TabUselOborud FROM tabotkaz WHERE id = '+idS+')' ) ;
 FormGlavn.VneshProyavlOtkaza.Text := SQLExecute('SELECT Proyav_name FROM TabProyavlen WHERE id =(SELECT id_TabProyavlen FROM tabotkaz WHERE id = '+idS+')' ) ;
 FormGlavn.LitsoObnaruj.Text := SQLExecute('SELECT Obnarug_name FROM TabObnarug WHERE id =(SELECT id_TabObnarug FROM tabotkaz WHERE id = '+idS+')' ) ;
 FormGlavn.MetodUstraneniya.Text := SQLExecute('SELECT Metod_name FROM TabMetod WHERE id =(SELECT id_TabMetod FROM tabotkaz WHERE id = '+idS+')' ) ;
 FormGlavn.UsloviyaObnaruj.Text :=  SQLExecute('SELECT Usl_name FROM TabUslovia WHERE id =(SELECT id_TabUslovia FROM tabotkaz WHERE id = '+idS+')' ) ;
 FormGlavn.VidOborudovaniya.Text := SQLExecute('SELECT Vid_name FROM TabVid WHERE id =(SELECT id_TabVid FROM tabotkaz WHERE id = '+idS+')' ) ;
 FormGlavn.DefektNomer.Text := SQLExecute('SELECT DEF№ FROM tabotkaz WHERE id = '+idS ) ;
 FormGlavn.Edit4.Text := SQLExecute('SELECT ZAPAS FROM tabotkaz WHERE id = '+idS ) ;
 FormGlavn.Komentarii.Text := SQLExecute('SELECT Primechanie FROM tabotkaz WHERE id = '+idS ) ;
 FormGlavn.Edit3.Text := SQLExecute('SELECT OtcLico FROM tabotkaz WHERE id = '+idS ) ;

end;

// открытие файла руководство пользователя

procedure FormGlavn_Button3_OnClick (Sender: string; var Cancel: boolean);

begin

    OpenFile(ExtractFilePath(Application.ExeName) +'HelpR.chm');

end;

// нажатие скрытой кнопки

procedure FormGlavn_Button10_OnClick (Sender: string; var Cancel: boolean);

begin

   FormGlavn.Button10.Click

 end;

 // дубликат таблицы

      procedure FormGlavn_Button2_OnClick (Sender: string; var Cancel: boolean);
begin
    if FormGlavn.TableGrid2.dbItemID <> -1 then
    begin
        frmPersons.TableGrid1.dbFilter := 'id_TabOtkaz='+FormGlavn.TableGrid2.sqlValue;
        frmPersons.TableGrid1.dbUpdate;
    end else
    begin
        frmPersons.TableGrid1.dbFilter := '';
        frmPersons.TableGrid1.dbUpdate;
    end;
    // отключенная кнопка пошаговые действия при не выделенной строке в таблице
    begin
    if FormGlavn.TableGrid2.SelectedRow = -1 then Cancel := True;
end;
end;



  // Окрашивание строк в главной таблицы
  
procedure FormGlavn_TableGrid2_OnChange (Sender: string);
var
    i,c,f,r: integer;
begin
    c := FormGlavn.TableGrid2.RowCount - 1;
    f := FormGlavn.TableGrid2.Columns.Count - 1;
  for i := 0 to c do
    begin   
      if FormGlavn.TableGrid2.Cells[0,i]='Нет'
          THEN
            for r := 0 to f do 
               FormGlavn.TableGrid2.Cell[r,i].Color := $008080FF; // закрашивание всей строки
    end;

end;


       // администрирование подчиненной таблицы

       // защитить от редактирования подчиненной таблицы



procedure formIzm_Button2_OnClick (Sender: string; var Cancel: boolean);
var
    sIdUser: string;
begin
    if isAdmin then Exit;

    sIdUser:=SQLExecute('SELECT id_users FROM TabDeystvPerson WHERE id='+IntToStr(formIzm.TableGrid1.dbItemID));
    if sIdUser<>IntToStr(idUser) then
    begin
        Cancel := True;      
        ShowMessage('У вас нет разрешения редактировать записи, которые не принадлежат вам.');
    end;
end;

     // защитить от удаления подчиненной таблицы
procedure formIzm_Button3_OnClick (Sender: string; var Cancel: boolean);
var
    sIdUser: string;
begin
    if isAdmin then Exit;

    sIdUser:=SQLExecute('SELECT id_users FROM TabDeystvPerson WHERE id='+IntToStr(formIzm.TableGrid1.dbItemID));
    if sIdUser<>IntToStr(idUser) then
    begin
        Cancel := True;
        ShowMessage('У вас нет разрешения удалять записи, которые не принадлежат вам.');
    end;
end;





begin
  //  Начала проверьте, есть ли пользователь, администратор базы данных
  // если нет, создать учетную запись администратора с именем пользователя admin и паролем admin
     if SQLExecute('SELECT count(id) FROM users;') = '0' then
     begin
         SQLExecute('INSERT INTO users (login, password, admin) VALUES ("admin", "admin", 1);');
         frmLogin.cbLogin.dbItemID:=1;
         frmLogin.edPassword.Text := 'admin';
     end;
     frmLogin.Button1.Default := True;
     formIzm.cbUser.Enabled:=false;

end.

Re: Авторизация при запуске программы. Права пользователей.

Игоревич
Замените пожалуйста данный участок кода

          if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.bUsers.Visible:=False;
          if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button5.Visible:=False;
          if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button1.Visible:=False;
          if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button4.Visible:=False;
          if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button6.Visible:=False;
          if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.bDelete.Visible:=False;

на

        if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True;
        FormGlavn.bUsers.Visible:=isAdmin;
        FormGlavn.Button5.Visible:=isAdmin;
        FormGlavn.Button1.Visible:=isAdmin;
        FormGlavn.Button4.Visible:=isAdmin;
        FormGlavn.Button6.Visible:=isAdmin;
        FormGlavn.bDelete.Visible:=isAdmin;
        FormGlavn.mniOptions.Visible := isAdmin;
Dmitry.

Re: Авторизация при запуске программы. Права пользователей.

Огромное спс.

Re: Авторизация при запуске программы. Права пользователей.

Подскажите пож. как сделать, если пользователь открывает запись главной таблицы которую он не может редактировать она была не активной. Текстовое поле
Многострочное поле Выпадающий список фото файл

Re: Авторизация при запуске программы. Права пользователей.

Игоревич wrote:

Подскажите пож. как сделать, если пользователь открывает запись главной таблицы которую он не может редактировать она была не активной. Текстовое поле
Многострочное поле Выпадающий список фото файл

Приложите пожалуйста ваш проект.

Dmitry.

Re: Авторизация при запуске программы. Права пользователей.

можно его вам выслать на почтовый ящик

Re: Авторизация при запуске программы. Права пользователей.

Игоревич wrote:

можно его вам выслать на почтовый ящик

да, на support@drive-software.com

Dmitry.

Re: Авторизация при запуске программы. Права пользователей.

Выслал вам проект на почтовый ящик

Re: Авторизация при запуске программы. Права пользователей.

Письмо получил огромное вам спс