Тема: BPL
Показать сообщение отдельно
Старый 16.03.2008, 19:54   #2
Terio
Неактивный пользователь
 
Пол:Мужской
Регистрация: 31.01.2008
Сообщений: 37
Репутация: 4
По умолчанию Ответ: BPL

А зачем такие сложности с bpl?

Я эту идею реализовал примерно так: главной форме присваиваем tag:=0
и пишем:

Код:
procedure TMainForm.FormShow(Sender: TObject); //открытие главной формы
begin

if MainForm.Tag=0 then
begin
  LoginForm:=TLoginForm.Create(self); //создать диалог входа пользователя
  LoginForm.ShowModal; //вызвать далог входа пользователя
end;
В проект добавляем новую форму LoginForm, подключаем ее к MainForm и наоборот. Кидаем ADOQuery, в SQL которого пишем:
Код:
SELECT * FROM TableUsers WHERE Login=:Par1 AND Password=:Par2
Устанавливаем ADOQuery.Active в false
На форму LoginForm помещаем два едита и кнопку, в событии Click которой пишем:

Код:
procedure TPasswordIn.Button1Click(Sender: TObject);
begin
with ADOQuery1.Parameters do //активируем запрос с параметрами:
begin
ParamByName('Par1').Value:=Edit1.Text; //имя пользователя 
ParamByName('Par2').Value:=Edit2.Text; //введенный пароль
end;
ADOQuery1.Open; //открывается запрос на существование в БД
if ADOQuery1.RecordCount>0 then // если запись существует
begin
MainForm.Tag:=1;  //присваиваем главной форме Tag=1 - открываем ее
ADOQuery1.Close; //закрываем запрос
LoginForm.CLose; //закрываем диалог
exit;  //выход из процедуры
end;
//иначе:
ShowMessage('В доступе отказано. Повторите ввод пароля.');
ADOQuery1.Close;
end;
Вот и все.

Добавлено через 3 минуты
Забыл сказать, что LoginForm надо убрать из автоматически создаваемых (см. Project -> Options).

Последний раз редактировалось Terio; 16.03.2008 в 19:57.. Причина: Добавлено сообщение
Terio вне форума
 
Ответить с цитированием Вверх
 
Время генерации страницы 0.02512 секунды с 10 запросами