Смотри, создаёшь в базе таблицу, где будут храниться код, логин, пароль пользователя. При старте приложения показываешь форму авторизации.
| Код | //fmNeoba - главная форма приложения у мну //при показе главной формы показываем _модальную_ форму авторизации (аутентификации) - fmLogon procedure TfmNeoba.FormShow(Sender: TObject); Var bFirstStart: boolean; begin //Если первый старт, то показываем запрос логина и пароля if bFirstStart then begin
fmLogon := TfmLogon.Create(Application);
//эта строка сработает только если пользователь введёт //правильный пароль и нажмёт кнопку bOk на форме авторизации, см. ниже if fmLogon.ShowModal = mrOk then begin FreeAndNil(fmLogon); end else begin Freel(fmLogon); end; end;//if bFirstStart then begin
bFirstStart := false; end;
|
| Код | procedure TfmLogon.FormCreate(Sender: TObject); Var ii:variant; lu: TLastUser; lun: string; begin
lu := TLastUser.Create; try lun := lu.LastUserName; finally Freel(lu); end;
//читаем из реестра параметры подключения (в данном случае СУБД Firebird) with TRegistry.Create do try RootKey := HKEY_CURRENT_USER; OpenKey(RegPath, True); if ValueExists('FBConnectionString') then with DM.dbNeoba do begin DBName := ReadString('FBConnectionString'); ConnectParams.UserName := ReadString('FBUser'); ConnectParams.Password := Decrypt(ReadString('FBPassword'), 43586); ConnectParams.CharSet := 'WIN1251'; LibraryName := ReadString('FBClient'); Connected := true; end;
//lcbUsers - выпадающий список (LookupComboBox, где загружен список возможных пользователей из таблицы пользователей) //пользователь должен из этого списка выбрать свой логин, а ниже ввести пароль в TEdit lcbUsers.Properties.DataController.DataSet.Open; //Выбираем в списке пользователя, который работал с программой в последний раз if lcbUsers.Properties.DataController.DataSet.Locate('name', lun, []) then begin ii := lcbUsers.Properties.ListSource.DataSet.FieldByName('ID').asInteger; lcbUsers.EditValue := ii; end;
finally free; end; end;
|
всё, подготовили форму логина
теперь она будет показана
| Код | //если в выпадающем списке уже выбран пользователь, то сразу передаём //фокус в TEdit, чтобы пользователь сразу мог вводить пароль procedure TfmLogon.FormShow(Sender: TObject); begin Application.RestoreTopMosts;
//LcbUsers выпадающий список возможных пользователей //выпадающий список прилеплен к набору данных TUsers ////tUsers - набор данных, в котором живёт запрос типа (Select id, name, pass from TableUsers)
if LcbUsers.EditValue <> null then edPassword.SetFocus else LcbUsers.SetFocus;
if LcbUsers.Text <> '' then edPassword.SetFocus else LcbUsers.SetFocus;
end;
|
Теперь пользователь вводит пароль и нажимает кнопку OK
| Код | procedure TfmLogon.btnOkClick(Sender: TObject); Var lu: TLastUser; begin //функцию CheckPass см. ниже if CheckPass(lcbUsers.Text, edPassword.Text) then begin
//Ай маладэс.... правэлный парол!!! ModalResult := mrOk;
end else begin MessageBox(Application.ActiveFormHandle, 'Пашли фсенах. Неверный пароль!', 'ОШИБКА!', MB_ICONWARNING or MB_OK); edPassword.SetFocus; edPassword.Text := ''; end;//else
end;
|
| Код | function TfmLogon.CheckPass(user, pass:string):boolean; begin //проверяем пароль //tUsers - набор данных, в котором живёт запрос типа (Select id, name, pass from TableUsers) //соответственно tUsersPASS - persistent поле набора данных
result := pass = tUsersPASS.Value; end;
|
Так может выглядеть окно(форма) авторизации

Добавлено через 11 минут и 17 секунд
Цитата(Lola8669 @ 26.1.2009, 15:51 ) | | Akella, я это всё сделала, я не понимаю, что сделать пользователям свои логин и пароль, чтобы, когда они их вводили, то могли просматривать базу данных, которая стоит на другом компе. |
а это что? http://forum.vingrad.ru/index.php?showtopic=245093&view=findpost&p=1767145 |